public function trigger($result)
 {
     if ($this->{"list"} === null) {
         return false;
     } else {
         $list = $this->{"list"};
         $this->{"list"} = null;
         $this->result = $result;
         tink_core__Callback_CallbackList_Impl_::invoke($list, $result);
         tink_core__Callback_CallbackList_Impl_::clear($list);
         return true;
     }
 }
 static function clear($this1)
 {
     tink_core__Callback_CallbackList_Impl_::clear($this1);
 }
 public function handleRequest($httpContext)
 {
     $doneTrigger = new tink_core_FutureTrigger();
     if (ufront_remoting_RemotingHandler_0($this, $doneTrigger, $httpContext)) {
         $r = $httpContext->response;
         $remotingResponse = null;
         $r->setOk();
         $path = null;
         $args = null;
         try {
             $this->initializeContext($httpContext->injector);
             $params = $httpContext->request->get_params();
             if (!$params->exists("__x")) {
                 throw new HException("Remoting call did not have parameter `__x` which describes which API call to make.  Aborting");
             }
             $remotingCall = null;
             $s = ufront_core__MultiValueMap_MultiValueMap_Impl_::get($params, "__x");
             $remotingCall = urldecode($s);
             $u = new haxe_Unserializer($remotingCall);
             $path = $u->unserialize();
             $args = $u->unserialize();
             $apiCallFinished = $this->executeApiCall($path, $args, $this->context, $httpContext->actionContext);
             $remotingResponse = tink_core__Future_Future_Impl_::map($apiCallFinished, array(new _hx_lambda(array(&$apiCallFinished, &$args, &$doneTrigger, &$httpContext, &$params, &$path, &$r, &$remotingCall, &$remotingResponse, &$u), "ufront_remoting_RemotingHandler_1"), 'execute'), null);
         } catch (Exception $__hx__e) {
             $_ex_ = $__hx__e instanceof HException ? $__hx__e->e : $__hx__e;
             $e = $_ex_;
             $error = $e;
             $apiNotFoundMessages = new _hx_array(array("Invalid path", "No such object", "Can't access", "No such method"));
             if ($path !== null && $args !== null && Std::is($e, _hx_qtype("String")) && Lambda::exists($apiNotFoundMessages, array(new _hx_lambda(array(&$apiNotFoundMessages, &$args, &$doneTrigger, &$e, &$error, &$httpContext, &$path, &$r, &$remotingResponse), "ufront_remoting_RemotingHandler_2"), 'execute'))) {
                 $remotingResponse = tink_core__Future_Future_Impl_::sync("Unable to access " . _hx_string_or_null($path->join(".")) . " - API Not Found (" . _hx_string_or_null($error) . "). See " . Std::string($this->context->objects));
                 $r->setNotFound();
             } else {
                 $r->setInternalError();
                 $remotingResponse = tink_core__Future_Future_Impl_::sync($this->remotingError($e, $httpContext));
             }
         }
         $remotingResponse(array(new _hx_lambda(array(&$args, &$doneTrigger, &$e, &$httpContext, &$path, &$r, &$remotingResponse), "ufront_remoting_RemotingHandler_3"), 'execute'));
     } else {
         $result1 = tink_core_Outcome::Success(tink_core_Noise::$Noise);
         if ($doneTrigger->{"list"} === null) {
             false;
         } else {
             $list1 = $doneTrigger->{"list"};
             $doneTrigger->{"list"} = null;
             $doneTrigger->result = $result1;
             tink_core__Callback_CallbackList_Impl_::invoke($list1, $result1);
             tink_core__Callback_CallbackList_Impl_::clear($list1);
             true;
         }
     }
     return $doneTrigger->future;
 }
function ufront_web_upload_TmpFileUpload_0(&$doneTrigger, &$fh, &$onData, &$partSize, &$pos, &$readNext, &$readNext1)
{
    $final = false;
    $bytes = null;
    try {
        $bytes = $fh->read($partSize);
    } catch (Exception $__hx__e) {
        $_ex_ = $__hx__e instanceof HException ? $__hx__e->e : $__hx__e;
        if (($e = $_ex_) instanceof haxe_io_Eof) {
            $final = true;
            $bytes = $fh->readAll($partSize);
        } else {
            throw $__hx__e;
        }
    }
    call_user_func_array($onData, array($bytes, $pos, $bytes->length));
    if ($final === false) {
        $pos += $partSize;
        call_user_func($readNext1);
    } else {
        $result = tink_core_Outcome::Success(tink_core_Noise::$Noise);
        if ($doneTrigger->{"list"} === null) {
            false;
        } else {
            $list = $doneTrigger->{"list"};
            $doneTrigger->{"list"} = null;
            $doneTrigger->result = $result;
            tink_core__Callback_CallbackList_Impl_::invoke($list, $result);
            tink_core__Callback_CallbackList_Impl_::clear($list);
            true;
        }
    }
}
function tink_core__Signal_Signal_Impl__5(&$ret, &$this1, $x)
{
    tink_core__Callback_CallbackList_Impl_::invoke($ret, $x);
}
function ufront_app_HttpApplication_9(&$_g, &$ctx, &$done, &$flag, &$modules, &$runNext, &$runNext1)
{
    $m = $modules->shift();
    if ($flag !== null && ($ctx->completion & 1 << $flag->index) !== 0) {
        $result = tink_core_Outcome::Success(tink_core_Noise::$Noise);
        if ($done->{"list"} === null) {
            false;
        } else {
            $list = $done->{"list"};
            $done->{"list"} = null;
            $done->result = $result;
            tink_core__Callback_CallbackList_Impl_::invoke($list, $result);
            tink_core__Callback_CallbackList_Impl_::clear($list);
            true;
        }
    } else {
        if ($m === null) {
            if ($flag !== null) {
                $ctx->completion |= 1 << $flag->index;
            }
            $result1 = tink_core_Outcome::Success(tink_core_Noise::$Noise);
            if ($done->{"list"} === null) {
                false;
            } else {
                $list1 = $done->{"list"};
                $done->{"list"} = null;
                $done->result = $result1;
                tink_core__Callback_CallbackList_Impl_::invoke($list1, $result1);
                tink_core__Callback_CallbackList_Impl_::clear($list1);
                true;
            }
        } else {
            $moduleCb = isset($m->a) ? $m->a : array($m, "a");
            $_g->currentModule = $m->b;
            $moduleResult = null;
            try {
                $moduleResult = call_user_func_array($moduleCb, array($ctx));
            } catch (Exception $__hx__e) {
                $_ex_ = $__hx__e instanceof HException ? $__hx__e->e : $__hx__e;
                $e = $_ex_;
                $ctx->messages->push(_hx_anonymous(array("msg" => "Caught error " . Std::string($e) . " while executing module " . _hx_string_or_null($_g->currentModule->className) . "." . _hx_string_or_null($_g->currentModule->methodName) . " in HttpApplication.executeModules()", "pos" => _hx_anonymous(array("fileName" => "HttpApplication.hx", "lineNumber" => 405, "className" => "ufront.app.HttpApplication", "methodName" => "executeModules")), "type" => ufront_log_MessageType::$MLog)));
                $moduleResult = tink_core__Future_Future_Impl_::sync(tink_core_Outcome::Failure(ufront_web_HttpError::wrap($e, null, $_g->currentModule)));
            }
            $moduleResult(array(new _hx_lambda(array(&$_g, &$ctx, &$done, &$e, &$flag, &$m, &$moduleCb, &$moduleResult, &$modules, &$runNext, &$runNext1), "ufront_app_HttpApplication_22"), 'execute'));
        }
    }
}
function ufront_core_CallbackTools_2(&$cb, &$pos, &$t, $error, $val1, $val2)
{
    if ($error !== null) {
        $e = tink_core_TypedError::withData(500, "" . Std::string($error), $pos, _hx_anonymous(array("fileName" => "AsyncTools.hx", "lineNumber" => 266, "className" => "ufront.core.CallbackTools", "methodName" => "asSurprisePair")));
        $result = tink_core_Outcome::Failure($e);
        if ($t->{"list"} === null) {
            false;
        } else {
            $list = $t->{"list"};
            $t->{"list"} = null;
            $t->result = $result;
            tink_core__Callback_CallbackList_Impl_::invoke($list, $result);
            tink_core__Callback_CallbackList_Impl_::clear($list);
            true;
        }
    } else {
        $result1 = tink_core_Outcome::Success(new tink_core_MPair($val1, $val2));
        if ($t->{"list"} === null) {
            false;
        } else {
            $list1 = $t->{"list"};
            $t->{"list"} = null;
            $t->result = $result1;
            tink_core__Callback_CallbackList_Impl_::invoke($list1, $result1);
            tink_core__Callback_CallbackList_Impl_::clear($list1);
            true;
        }
    }
}
function ufront_view_UFViewEngine_7(&$_g, &$engine1, &$ext, &$ext2, &$extensions, &$extensionsUsed, &$finalPath, &$path, &$templatingEngine, &$testNextEngineOrExtension, &$testNextEngineOrExtension1, &$this4, &$tplEngines1, &$tplStrReady, $result14)
{
    switch ($result14->index) {
        case 1:
            $err3 = _hx_deref($result14)->params[0];
            $result15 = tink_core_Outcome::Failure($err3);
            if ($tplStrReady->{"list"} === null) {
                false;
            } else {
                $list11 = $tplStrReady->{"list"};
                $tplStrReady->{"list"} = null;
                $tplStrReady->result = $result15;
                tink_core__Callback_CallbackList_Impl_::invoke($list11, $result15);
                tink_core__Callback_CallbackList_Impl_::clear($list11);
                true;
            }
            break;
        case 0:
            switch (_hx_deref($result14)->params[0]->index) {
                case 0:
                    $tpl3 = _hx_deref(_hx_deref($result14)->params[0])->params[0];
                    $templatingEngine = $engine1;
                    $result16 = tink_core_Outcome::Success($tpl3);
                    if ($tplStrReady->{"list"} === null) {
                        false;
                    } else {
                        $list12 = $tplStrReady->{"list"};
                        $tplStrReady->{"list"} = null;
                        $tplStrReady->result = $result16;
                        tink_core__Callback_CallbackList_Impl_::invoke($list12, $result16);
                        tink_core__Callback_CallbackList_Impl_::clear($list12);
                        true;
                    }
                    break;
                case 1:
                    call_user_func($testNextEngineOrExtension1);
                    break;
            }
            break;
    }
}