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
//======================================================================== // // Object.h // // Copyright 1996-2003 Glyph & Cog, LLC // //======================================================================== //======================================================================== // // Modified under the Poppler project - http://poppler.freedesktop.org // // All changes made under the Poppler project to this file are licensed // under GPL version 2 or later // // Copyright (C) 2007 Julien Rebetez // Copyright (C) 2008 Kees Cook // Copyright (C) 2008, 2010, 2017-2021, 2023-2025 Albert Astals Cid // Copyright (C) 2009 Jakub Wilk // Copyright (C) 2012 Fabio D'Urso // Copyright (C) 2013 Thomas Freitag // Copyright (C) 2013, 2017, 2018 Adrian Johnson // Copyright (C) 2013 Adrian Perez de Castro // Copyright (C) 2016, 2020 Jakub Alba // Copyright (C) 2018 Klarälvdalens Datakonsult AB, a KDAB Group company, . Work sponsored by the LiMux project of the city of Munich // Copyright (C) 2018 Adam Reichold // Copyright (C) 2020 Klarälvdalens Datakonsult AB, a KDAB Group company, . Work sponsored by Technische Universität Dresden // Copyright (C) 2023 Oliver Sander // Copyright (C) 2024, 2025 g10 Code GmbH, Author: Sune Stolborg Vuorela // Copyright (C) 2025 Jonathan Hähne // Copyright (C) 2025 Arnav V // // To see a description of the changes please see the Changelog file that // came with your tarball or type make ChangeLog if you are building from git // //======================================================================== #ifndef OBJECT_H #define OBJECT_H #include #include #include #include #include #include "goo/GooString.h" #include "goo/GooLikely.h" #include "Error.h" #include "poppler_private_export.h" #define OBJECT_TYPE_CHECK(wanted_type) \ if (unlikely(type != (wanted_type))) { \ ::error(errInternal, 0, \ "Call to Object where the object was type {0:d}, " \ "not the expected type {1:d}", \ type, wanted_type); \ abort(); \ } #define OBJECT_2TYPES_CHECK(wanted_type1, wanted_type2) \ if (unlikely(type != (wanted_type1)) && unlikely(type != (wanted_type2))) { \ ::error(errInternal, 0, \ "Call to Object where the object was type {0:d}, " \ "not the expected type {1:d} or {2:d}", \ type, wanted_type1, wanted_type2); \ abort(); \ } #define OBJECT_3TYPES_CHECK(wanted_type1, wanted_type2, wanted_type3) \ if (unlikely(type != (wanted_type1)) && unlikely(type != (wanted_type2)) && unlikely(type != (wanted_type3))) { \ ::error(errInternal, 0, \ "Call to Object where the object was type {0:d}, " \ "not the expected type {1:d}, {2:d} or {3:d}", \ type, wanted_type1, wanted_type2, wanted_type3); \ abort(); \ } #define CHECK_NOT_DEAD \ if (unlikely(type == objDead)) { \ ::error(errInternal, 0, "Call to dead object"); \ abort(); \ } class XRef; class Array; class Dict; class Stream; //------------------------------------------------------------------------ // Ref //------------------------------------------------------------------------ struct Ref { int num; // object number int gen; // generation number static constexpr Ref INVALID() { return { .num = -1, .gen = -1 }; }; }; inline bool operator==(const Ref lhs, const Ref rhs) noexcept { return lhs.num == rhs.num && lhs.gen == rhs.gen; } inline bool operator!=(const Ref lhs, const Ref rhs) noexcept { return lhs.num != rhs.num || lhs.gen != rhs.gen; } inline bool operator<(const Ref lhs, const Ref rhs) noexcept { if (lhs.num != rhs.num) { return lhs.num < rhs.num; } return lhs.gen < rhs.gen; } struct RefRecursionChecker { RefRecursionChecker() = default; RefRecursionChecker(const RefRecursionChecker &) = delete; RefRecursionChecker &operator=(const RefRecursionChecker &) = delete; bool insert(Ref ref) { if (ref == Ref::INVALID()) { return true; } // insert returns std::pair // where the bool is whether the insert succeeded return alreadySeenRefs.insert(ref.num).second; } void remove(Ref ref) { alreadySeenRefs.erase(ref.num); } private: std::set alreadySeenRefs; }; struct RefRecursionCheckerRemover { // Removes ref from c when this object is removed RefRecursionCheckerRemover(RefRecursionChecker &c, Ref r) : checker(c), ref(r) { } ~RefRecursionCheckerRemover() { checker.remove(ref); } RefRecursionCheckerRemover(const RefRecursionCheckerRemover &) = delete; RefRecursionCheckerRemover &operator=(const RefRecursionCheckerRemover &) = delete; private: RefRecursionChecker &checker; Ref ref; }; namespace std { template<> struct hash { using argument_type = Ref; using result_type = size_t; result_type operator()(const argument_type ref) const noexcept { return std::hash {}(ref.num) ^ (std::hash {}(ref.gen) << 1); } }; } //------------------------------------------------------------------------ // object types //------------------------------------------------------------------------ enum ObjType { // simple objects objBool, // boolean objInt, // integer objReal, // real objString, // string objName, // name objNull, // null // complex objects objArray, // array objDict, // dictionary objStream, // stream objRef, // indirect reference // special objects objCmd, // command name objError, // error return from Lexer objEOF, // end of file return from Lexer objNone, // uninitialized object // poppler-only objects objInt64, // integer with at least 64-bits objHexString, // hex string objDead // and object after shallowCopy }; constexpr int numObjTypes = 17; // total number of object types //------------------------------------------------------------------------ // Object //------------------------------------------------------------------------ class POPPLER_PRIVATE_EXPORT Object { public: static Object null() { return Object(objNull); } static Object eof() { return Object(objEOF); } static Object error() { return Object(objError); } Object() : type(objNone) { } ~Object() { free(); } explicit Object(bool boolnA) { type = objBool; booln = boolnA; } explicit Object(int intgA) { type = objInt; intg = intgA; } explicit Object(double realA) { type = objReal; real = realA; } explicit Object(std::unique_ptr stringA) { assert(stringA); type = objString; string = stringA.release(); } explicit Object(std::string &&stringA) { type = objString; string = new GooString(std::move(stringA)); } Object(ObjType typeA, std::string &&stringA) { assert(typeA == objHexString); type = typeA; string = new GooString(std::move(stringA)); } Object(ObjType typeA, const char *v) : Object(typeA, std::string_view(v)) { } Object(ObjType typeA, std::string_view v) { assert(typeA == objName || typeA == objCmd); type = typeA; cString = (char *)std::malloc(v.size() + 1); memcpy(cString, v.data(), v.size()); cString[v.size()] = 0; } explicit Object(long long int64gA) { type = objInt64; int64g = int64gA; } explicit Object(Array *arrayA) { assert(arrayA); type = objArray; array = arrayA; } explicit Object(Dict *dictA) { assert(dictA); type = objDict; dict = dictA; } template requires(std::is_base_of_v) explicit Object(std::unique_ptr &&streamA) { assert(streamA); type = objStream; stream = streamA.release(); } explicit Object(const Ref r) { type = objRef; ref = r; } template Object(T) = delete; Object(Object &&other) noexcept { std::memcpy(reinterpret_cast(this), &other, sizeof(Object)); // NOLINT(bugprone-undefined-memory-manipulation) other.type = objDead; } Object &operator=(Object &&other) noexcept { free(); std::memcpy(reinterpret_cast(this), &other, sizeof(Object)); // NOLINT(bugprone-undefined-memory-manipulation) other.type = objDead; return *this; } Object &operator=(const Object &other) = delete; Object(const Object &other) = delete; // Set object to null. void setToNull() { free(); type = objNull; } // Copies all object types except // objArray, objDict, objStream whose refcount is increased by 1 Object copy() const; // Deep copies all object types (recursively) // except objStream whose refcount is increased by 1 Object deepCopy() const; // If object is a Ref, fetch and return the referenced object. // Otherwise, return a copy of the object. Object fetch(XRef *xref, int recursion = 0) const; // Type checking. ObjType getType() const { CHECK_NOT_DEAD; return type; } bool isBool() const { CHECK_NOT_DEAD; return type == objBool; } bool isInt() const { CHECK_NOT_DEAD; return type == objInt; } bool isReal() const { CHECK_NOT_DEAD; return type == objReal; } bool isNum() const { CHECK_NOT_DEAD; return type == objInt || type == objReal || type == objInt64; } bool isString() const { CHECK_NOT_DEAD; return type == objString; } bool isHexString() const { CHECK_NOT_DEAD; return type == objHexString; } bool isName() const { CHECK_NOT_DEAD; return type == objName; } bool isNull() const { CHECK_NOT_DEAD; return type == objNull; } bool isArray() const { CHECK_NOT_DEAD; return type == objArray; } bool isDict() const { CHECK_NOT_DEAD; return type == objDict; } bool isStream() const { CHECK_NOT_DEAD; return type == objStream; } bool isRef() const { CHECK_NOT_DEAD; return type == objRef; } bool isCmd() const { CHECK_NOT_DEAD; return type == objCmd; } bool isError() const { CHECK_NOT_DEAD; return type == objError; } bool isEOF() const { CHECK_NOT_DEAD; return type == objEOF; } bool isNone() const { CHECK_NOT_DEAD; return type == objNone; } bool isInt64() const { CHECK_NOT_DEAD; return type == objInt64; } bool isIntOrInt64() const { CHECK_NOT_DEAD; return type == objInt || type == objInt64; } // Special type checking. bool isName(std::string_view nameA) const { return type == objName && getName() == nameA; } bool isDict(std::string_view dictType) const; bool isCmd(std::string_view cmdA) const { return type == objCmd && cString == cmdA; } // Accessors. bool getBool() const { OBJECT_TYPE_CHECK(objBool); return booln; } int getInt() const { OBJECT_TYPE_CHECK(objInt); return intg; } double getReal() const { OBJECT_TYPE_CHECK(objReal); return real; } // Note: integers larger than 2^53 can not be exactly represented by a double. // Where the exact value of integers up to 2^63 is required, use isInt64()/getInt64(). double getNum() const { OBJECT_3TYPES_CHECK(objInt, objInt64, objReal); return type == objInt ? (double)intg : type == objInt64 ? (double)int64g : real; } double getNum(bool *ok) const { if (unlikely(type != objInt && type != objInt64 && type != objReal)) { *ok = false; return 0.; } return type == objInt ? (double)intg : type == objInt64 ? (double)int64g : real; } const GooString *getString() const { OBJECT_TYPE_CHECK(objString); return string; } std::unique_ptr takeString() { OBJECT_TYPE_CHECK(objString); std::unique_ptr str(string); string = nullptr; type = objNull; return str; } const GooString *getHexString() const { OBJECT_TYPE_CHECK(objHexString); return string; } const char *getName() const { OBJECT_TYPE_CHECK(objName); return cString; } std::string getNameString() const { OBJECT_TYPE_CHECK(objName); return std::string { cString }; } Array *getArray() const { OBJECT_TYPE_CHECK(objArray); return array; } Dict *getDict() const { OBJECT_TYPE_CHECK(objDict); return dict; } Stream *getStream() const { OBJECT_TYPE_CHECK(objStream); return stream; } Ref getRef() const { OBJECT_TYPE_CHECK(objRef); return ref; } int getRefNum() const { OBJECT_TYPE_CHECK(objRef); return ref.num; } int getRefGen() const { OBJECT_TYPE_CHECK(objRef); return ref.gen; } const char *getCmd() const { OBJECT_TYPE_CHECK(objCmd); return cString; } long long getInt64() const { OBJECT_TYPE_CHECK(objInt64); return int64g; } long long getIntOrInt64() const { OBJECT_2TYPES_CHECK(objInt, objInt64); return type == objInt ? intg : int64g; } // Array accessors. int arrayGetLength() const; void arrayAdd(Object &&elem); void arrayRemove(int i); Object arrayGet(int i, int recursion) const; const Object &arrayGetNF(int i) const; // Dict accessors. int dictGetLength() const; const char *dictGetKey(int i) const; void dictAdd(std::string_view key, Object &&val); void dictSet(std::string_view key, Object &&val); void dictRemove(std::string_view key); bool dictIs(std::string_view dictType) const; Object dictLookup(std::string_view key, int recursion = 0) const; const Object &dictLookupNF(std::string_view key) const; Object dictGetVal(int i) const; const Object &dictGetValNF(int i) const; // Stream accessors. [[nodiscard]] bool streamRewind(); void streamClose(); int streamGetChar(); int streamGetChars(int nChars, unsigned char *buffer); void streamSetPos(Goffset pos, int dir = 0); Dict *streamGetDict() const; // Output. const char *getTypeName() const; void print(FILE *f = stdout) const; double getNumWithDefaultValue(double defaultValue) const { if (unlikely(type != objInt && type != objInt64 && type != objReal)) { return defaultValue; } return type == objInt ? (double)intg : type == objInt64 ? (double)int64g : real; } bool getBoolWithDefaultValue(bool defaultValue) const { return (type == objBool) ? booln : defaultValue; } private: explicit Object(ObjType typeA) { type = typeA; } // Free object contents. void free(); ObjType type; // object type union { // value for each type: bool booln; // boolean int intg; // integer long long int64g; // 64-bit integer double real; // real GooString *string; // [hex] string char *cString; // name or command, depending on objType Array *array; // array Dict *dict; // dictionary Stream *stream; // stream Ref ref; // indirect reference }; }; //------------------------------------------------------------------------ // Array accessors. //------------------------------------------------------------------------ #include "Array.h" //------------------------------------------------------------------------ // Dict accessors. //------------------------------------------------------------------------ #include "Dict.h" //------------------------------------------------------------------------ // Stream accessors. //------------------------------------------------------------------------ #include "Stream.h" #endif