<?php

namespace Webfan\Transform;

use League\Pipeline\StageInterface;

class RemoteApiObjectsTransformAll extends Sequence implements StageInterface, TransformInterface
{
	const RAT0 = 0x52415430;

	protected $SecurityManagerCallbacks = null;
	protected $SecurityManagerTransforms = null;


	public function __construct()
	{
		parent::__construct(
			new UrlsafeBinaryTransform(),
			new OpisTranform(),
			new TransformCallbacks()
		);
	}


	public function __invoke($payload)
	{
		$this->direction = $this->detect($payload);
		   switch($this->direction){
		   case -1:
			     $payload = $this->down($payload);
			   break;
		   case 1:
			     $payload = $this->up($payload);
			   break;
			  default :

			   break;
		   }
		return $payload;
	}


	public function up($payload)
	{
		foreach($this->getInnerIterator() as $stage) {
		  if($stage->detect($payload) === $this->direction &&  $this->direction > 0){
			  $payload = $stage->up($payload);
		  }
		}

		return static::RAT0.$payload;
	}


	public function down($payload)
	{
		$payload = is_string($payload) && str_starts_with($payload, static::RAT0) ? substr($payload, strlen(static::RAT0)) : $payload;

		foreach($this->reverseIterator($this->getInnerIterator()) as $stage) {
		  if($stage->detect($payload) === $this->direction &&  $this->direction < 0){
			  $payload = $stage->down($payload);
		 }
		}

		return $payload;
	}


	public function detect($payload): int
	{
		return is_string($payload) && str_starts_with($payload, static::RAT0) ? -1 : 1;
	}
}
__halt_compiler();----SIGNATURE:----HwmekzSlPEFx05Od6ZN2C9QmNnBlys+RInGK2LhC3QJnMfbl1M/ivMx8umK16zmyo4T3NQ4DNpOnRGL+LvQ8rQToOdTOtKi9W17n34bvi0w3Sr3AdWxyfwaAKvDOWYM3Ybrd0X/+UTw4ej2vKzv027fLB0mI9xGulFXEozmjT+zWFyIV8koHelo64NDQJ7UKGWCcNWMjo0WuK4a8utpPdKE4UOQ1tMqRIMEO83dqs9HDz/rWAyFItzaPWgBbu9378fM//d+FGhScclMSAnQoovQGdij4jj+n8y4C0oDkj2DA202Ndbu+q88sNnubKiWXS+OIGhD1lEe8/yUrfx0C+UB3USe0JAsXnLmkN4o0wsEmGN+3JXErFt4IJr6/h4ZXWbPcLg//zE+1SnPcRZXwXw2NxcNKJPCHmzLz9TCpjn+1QuOVtHo3Gqnob/IxiDS1Hdql2i5R1Fntn3z8QyvQBy2ldRwEknyM2Lxjag7JFCiefqdNKECFpVwWWTOJhxj0mZYHy0Cp1AsVlE1ACHMFplAAZP705q2ScTjMzS4sx12craaHII9RIyOqAYeB+b7qegp6NofduUusk/e5GA50973L/5b/ohHGhoOURRygEPQ/S/gO665LObc200/IhoYIKQORwRkA/Ya7qPTkbuZ3E1xShWeUiDxarqvx34QYIN0=----ATTACHMENT:----OTA0NjkxMzk2MzAzMTgzMCA3MTU5NDEyODQ1NzAyMDIyIDI1NzU0MjE4MDkwMDg3MTg=