<?php
namespace Claromentis\Core\Component;

$GLOBALS["__65da1b1ec2d6653e8a" . "0ab7848e536215"] = (@$GLOBALS["__65da1b1ec2d66" . "53e8a0ab7848e53" . "6215"] ?: array()) + array("_f61cbfe09f839854b95117fe13" . "b4a1ba" => base64_decode("c3R" . "ycG" . "9z"), "_70979d28" . "7fa2c98d2" . "1aa07834c" . "259a52" => base64_decode("c3RydG9sb3dlc" . "g=="), "_aed8da0f19091214b78f803510" . "48517c" => base64_decode("c3Ryb" . "GVu"), "_e92ad742fc12ec1dd5c30557fa" . "fca331" => base64_decode("Ig=" . "="), "_cfe3120f54395b670652b38c2d0" . "a8e88" => base64_decode("c3V" . "ic3" . "Ry"), "_a5ad20ceac0b4ca276" . "b644079b7af5c5" => base64_decode("IiBkb2VzIG5vdCByZXR" . "1cm4gYW4gaW5zdGFuY2" . "Ugb2Yg"), "_cdbb345f4d4f843abb75a83" . "7d26cccf5" => base64_decode("Tm8gY29tcG9uZW50IGhhcyBiZWVuIHJlZ2l" . "zdGVyZWQgYXMgIg=="), "_d706c160e45bf7434fff82a5976" . "f0e19" => base64_decode("YXJyYXlfa2" . "V5cw=="), "_5315a4e0f66f0e19adf523faaadf69" . "1a" => base64_decode("Q29tcG9uZW50IHJlZ2lzdGVyZWQgYXM" . "gIg=="));
use Claromentis\Core\Component\Exception\MissingComponentException;
use Pimple\Container;
class ComponentList
{
    protected $components;
    protected $container;
    protected $name_prefix;
    public function __construct(Container $_5e4594441b0e531bfd6f0011e0327611, $_b33b852882e8491a1cddaabb020b3daf)
    {
        $this->container = $_5e4594441b0e531bfd6f0011e0327611;
        $this->name_prefix = $_b33b852882e8491a1cddaabb020b3daf;
        $this->components = null;
    }
    
    
    
    
    protected function FindComponentsKeys()
    {
        if ($this->components !== null) {
            return;
        }
        $this->components = [];
        $_dff05f62bb87399254f2155a31e58365 = $GLOBALS["__65da1b1ec2d665" . "3e8a0ab7848e5362" . "15"]["_aed8da0f19091214b78f8035104851" . "7c"]($this->name_prefix);
        foreach ($this->container->keys() as $key) {
            if ($GLOBALS["__65da1b1ec2d6653e8a0" . "ab7848e536215"]["_f61cbfe09f839854b95117fe1" . "3b4a1ba"]($key, $this->name_prefix) !== 0) {
                
                
                continue;
            }
            $this->components[$GLOBALS["__65da1b1ec2d6653e8a0ab7848" . "e536215"]["_cfe3120f54395b670652b38c2d0a8e8" . "8"]($key, $_dff05f62bb87399254f2155a31e58365)] = 1;
        }
    }
    
    
    
    
    public function GetComponentsKeys()
    {
        $this->FindComponentsKeys();
        return $GLOBALS["__65da1b1ec2" . "d6653e8a0ab7" . "848e536215"]["_d706c160e45bf7434" . "fff82a5976f0e19"]($this->components);
    }
    
    
    
    
    
    
    
    
    
    public function GetComponent($name, $_0075b8e35172a508cf11199cdbf91f66 = false)
    {
        $name = $GLOBALS["__65da1b1e" . "c2d6653e8a" . "0ab7848e53" . "6215"]["_70979d287fa2c98d21aa078" . "34c259a52"]($name);
        $_21d5dbcf5399111a9e090014c78472cf = $this->name_prefix . $name;
        if (!isset($this->container[$_21d5dbcf5399111a9e090014c78472cf])) {
            if ($_0075b8e35172a508cf11199cdbf91f66) {
                return new NotInstalledComponent($name);
            } else {
                throw new MissingComponentException($GLOBALS["__65da1b1ec2d66" . "53e8a0ab7848e53" . "6215"]["_cdbb345f4d4f843abb75a837d26cccf" . "5"] . $name . $GLOBALS["__65da1b1ec2" . "d6653e8a0ab7" . "848e536215"]["_e92ad742fc12ec1dd5c305" . "57fafca331"]);
            }
        }
        $_6817ec6d42314534466dd8262d02d837 = $this->container[$_21d5dbcf5399111a9e090014c78472cf];
        if (!$_6817ec6d42314534466dd8262d02d837 instanceof ComponentInterface) {
            throw new MissingComponentException($GLOBALS["__65da1b1ec2d6653e8a0ab78" . "48e536215"]["_5315a4e0f" . "66f0e19adf" . "523faaadf6" . "91a"] . $name . $GLOBALS["__65da1b1ec2d66" . "53e8a0ab7848e53" . "6215"]["_a5ad20ceac0b4c" . "a276b644079b7af" . "5c5"] . ComponentInterface::class);
        }
        return $_6817ec6d42314534466dd8262d02d837;
    }
}