lakutata 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.idea/codeStyles/Project.xml +18 -0
- package/.idea/codeStyles/codeStyleConfig.xml +5 -0
- package/.idea/inspectionProfiles/Project_Default.xml +6 -0
- package/.idea/lakutata.iml +13 -0
- package/.idea/modules.xml +8 -0
- package/.idea/vcs.xml +6 -0
- package/LICENSE +21 -0
- package/README.md +1 -0
- package/build/Application-78a416de.d.ts +387 -0
- package/build/Application-b5e19e08.d.ts +387 -0
- package/build/Components.cjs +55 -0
- package/build/Components.d.cts +9 -0
- package/build/Components.d.ts +9 -0
- package/build/Components.js +44 -0
- package/build/Core.cjs +148 -0
- package/build/Core.d.cts +33 -0
- package/build/Core.d.ts +33 -0
- package/build/Core.js +71 -0
- package/build/Crypto.cjs +96 -0
- package/build/Crypto.d.cts +19 -0
- package/build/Crypto.d.ts +19 -0
- package/build/Crypto.js +41 -0
- package/build/Decorators.cjs +100 -0
- package/build/Decorators.d.cts +23 -0
- package/build/Decorators.d.ts +23 -0
- package/build/Decorators.js +45 -0
- package/build/DependencyInjectionContainer-871a6c03.d.ts +340 -0
- package/build/DependencyInjectionContainer-f037ac36.d.ts +340 -0
- package/build/Exceptions.cjs +144 -0
- package/build/Exceptions.d.cts +28 -0
- package/build/Exceptions.d.ts +28 -0
- package/build/Exceptions.js +37 -0
- package/build/Hash.cjs +223 -0
- package/build/Hash.d.cts +535 -0
- package/build/Hash.d.ts +535 -0
- package/build/Hash.js +10 -0
- package/build/Time.cjs +14 -0
- package/build/Time.d.cts +5 -0
- package/build/Time.d.ts +5 -0
- package/build/Time.js +5 -0
- package/build/TimeInput-24fced42.d.ts +243 -0
- package/build/TimeInput-4401fc58.d.ts +243 -0
- package/build/Utilities.cjs +100 -0
- package/build/Utilities.d.cts +212 -0
- package/build/Utilities.d.ts +212 -0
- package/build/Utilities.js +7 -0
- package/build/Validator.cjs +24 -0
- package/build/Validator.d.cts +1851 -0
- package/build/Validator.d.ts +1851 -0
- package/build/Validator.js +11 -0
- package/build/chunk-26TQI22I.js +196 -0
- package/build/chunk-27OFA7C3.js +16 -0
- package/build/chunk-2C2UILFN.js +23 -0
- package/build/chunk-2CHYQHWR.cjs +16 -0
- package/build/chunk-2DN35UQB.cjs +10947 -0
- package/build/chunk-2E4TF6LU.cjs +16 -0
- package/build/chunk-2PLJEW2R.js +14 -0
- package/build/chunk-2RW3VMNS.js +45 -0
- package/build/chunk-2T6JU2UH.js +14 -0
- package/build/chunk-3CX3GCQF.js +32 -0
- package/build/chunk-3JIQCDQG.cjs +25 -0
- package/build/chunk-3KLEN3PR.js +14 -0
- package/build/chunk-3LZRQPJ5.js +14 -0
- package/build/chunk-3NHHHZFR.cjs +870 -0
- package/build/chunk-4332C5BW.js +30 -0
- package/build/chunk-46V7GHKE.cjs +25 -0
- package/build/chunk-4EPPSZ7L.js +14 -0
- package/build/chunk-4FEEQIQ4.js +23 -0
- package/build/chunk-4G2ZCUBN.js +5570 -0
- package/build/chunk-4KTVY73U.js +15 -0
- package/build/chunk-4MQXSUTL.cjs +14 -0
- package/build/chunk-4OHSPWRQ.js +34 -0
- package/build/chunk-4PK4TGU4.cjs +16 -0
- package/build/chunk-4YXUEJSO.js +23 -0
- package/build/chunk-5475IFR4.cjs +16 -0
- package/build/chunk-5B5Z4GCR.cjs +17 -0
- package/build/chunk-5FPTDIKI.cjs +16 -0
- package/build/chunk-5NK7E2HA.js +69 -0
- package/build/chunk-67F5WP5Z.cjs +8 -0
- package/build/chunk-6BJTKEXZ.cjs +25 -0
- package/build/chunk-6WNLPTDY.cjs +8 -0
- package/build/chunk-7G7FCNEG.cjs +8 -0
- package/build/chunk-7IVNTVYK.cjs +16 -0
- package/build/chunk-7MJAWOWL.js +22896 -0
- package/build/chunk-7MTOK62N.js +767 -0
- package/build/chunk-7PADGZPI.cjs +129 -0
- package/build/chunk-7ZUM53G6.js +14 -0
- package/build/chunk-A4BYNKYF.js +42 -0
- package/build/chunk-A7F6LCRA.cjs +16 -0
- package/build/chunk-AFV3VN3X.cjs +8 -0
- package/build/chunk-AGHMOCC3.cjs +16 -0
- package/build/chunk-AHUH4FWQ.cjs +29 -0
- package/build/chunk-AM4YMG2S.js +6 -0
- package/build/chunk-ANDEVIKJ.cjs +16 -0
- package/build/chunk-APETX7ZT.cjs +16 -0
- package/build/chunk-ASMC7EUP.js +6 -0
- package/build/chunk-BDCRHGKN.js +6 -0
- package/build/chunk-BDJXMO44.js +2920 -0
- package/build/chunk-BE7ICF5R.js +32 -0
- package/build/chunk-BEDKPRVX.cjs +17 -0
- package/build/chunk-BFE66ADZ.cjs +34 -0
- package/build/chunk-BKCT2HSQ.js +178 -0
- package/build/chunk-BMNC4W46.js +20 -0
- package/build/chunk-BO7Y6HNS.cjs +176 -0
- package/build/chunk-D4H35ART.cjs +53 -0
- package/build/chunk-D5DE7Z4J.js +29 -0
- package/build/chunk-DHSSJJMD.cjs +25 -0
- package/build/chunk-DIMOR6NE.cjs +8 -0
- package/build/chunk-DN5TSX6S.cjs +244 -0
- package/build/chunk-EEH5LCBP.cjs +16 -0
- package/build/chunk-EFYDUUXT.cjs +92 -0
- package/build/chunk-ENJSEFE4.js +14 -0
- package/build/chunk-EPYJVQHQ.js +6 -0
- package/build/chunk-EUVLTNDV.js +32 -0
- package/build/chunk-EXQVCESB.cjs +20 -0
- package/build/chunk-EYPPC6HP.js +18 -0
- package/build/chunk-F5NKGQDL.cjs +16 -0
- package/build/chunk-F7RNH2H2.js +266 -0
- package/build/chunk-FCTV4OB7.cjs +50 -0
- package/build/chunk-FHEXUE67.js +29 -0
- package/build/chunk-FJP3KNXK.js +23 -0
- package/build/chunk-FJQSLRIP.js +14 -0
- package/build/chunk-FSFWPTIC.js +6 -0
- package/build/chunk-FTKFMQHJ.cjs +16 -0
- package/build/chunk-FW26MPE4.js +69 -0
- package/build/chunk-FZNRGZGE.js +6372 -0
- package/build/chunk-G7EDOLQ7.cjs +100 -0
- package/build/chunk-GGY7LCMQ.cjs +73 -0
- package/build/chunk-GLWUJIMW.cjs +8 -0
- package/build/chunk-GZ5KN2PE.js +6 -0
- package/build/chunk-HBPRX3WA.cjs +202 -0
- package/build/chunk-HJAQ6WJM.cjs +288 -0
- package/build/chunk-HJSJA5CF.js +14 -0
- package/build/chunk-HKAY7FWM.js +28 -0
- package/build/chunk-HMKTNRQF.js +14 -0
- package/build/chunk-HODDA5D5.js +199 -0
- package/build/chunk-HPKJUFTM.js +14 -0
- package/build/chunk-HWCTWIVZ.cjs +30 -0
- package/build/chunk-HXWC4YN6.cjs +22908 -0
- package/build/chunk-HZJ7XFHQ.cjs +8 -0
- package/build/chunk-I5TGKTX6.js +18 -0
- package/build/chunk-I7J6V3EU.cjs +34 -0
- package/build/chunk-IKWXYUGY.js +14 -0
- package/build/chunk-IYGGR65W.cjs +16 -0
- package/build/chunk-J6RXNX2K.js +174 -0
- package/build/chunk-JAEEMFEZ.cjs +24 -0
- package/build/chunk-JFOMNL5I.cjs +22 -0
- package/build/chunk-JPV2PUHF.cjs +8 -0
- package/build/chunk-JR726PDZ.cjs +70 -0
- package/build/chunk-JTKOYDJB.js +5914 -0
- package/build/chunk-JU53NOVA.cjs +31 -0
- package/build/chunk-JVSBYHUY.js +10944 -0
- package/build/chunk-JYBISTRN.cjs +25 -0
- package/build/chunk-K2ALA7QI.js +12 -0
- package/build/chunk-KG6DPM4B.js +14 -0
- package/build/chunk-KNSBLLL2.cjs +32 -0
- package/build/chunk-KNTGBUSY.js +6 -0
- package/build/chunk-KWOHVRRL.js +6 -0
- package/build/chunk-L3IVYIVA.js +23 -0
- package/build/chunk-LBL5XNWX.js +221 -0
- package/build/chunk-LBOBUFWZ.js +6 -0
- package/build/chunk-LEJXJUBE.js +6 -0
- package/build/chunk-LJTCXKC4.js +242 -0
- package/build/chunk-MBKTJ3KM.cjs +118 -0
- package/build/chunk-MDE5SRLT.cjs +16 -0
- package/build/chunk-MEKICSEL.js +22 -0
- package/build/chunk-MNDBRDT2.cjs +608 -0
- package/build/chunk-MSWZLYS7.cjs +5916 -0
- package/build/chunk-MT2OB376.js +14 -0
- package/build/chunk-MVWB4XDJ.js +14 -0
- package/build/chunk-MXAAAL2S.js +53 -0
- package/build/chunk-N37KV2VV.cjs +199 -0
- package/build/chunk-NZ5IZMM5.cjs +2922 -0
- package/build/chunk-O2NOYN65.js +54 -0
- package/build/chunk-OAD22QZQ.js +6 -0
- package/build/chunk-OIFILR4I.js +125 -0
- package/build/chunk-OJGBPS2B.cjs +16 -0
- package/build/chunk-OMPATIMZ.cjs +71 -0
- package/build/chunk-P3Z7ZEGJ.cjs +18 -0
- package/build/chunk-P6BBXCBD.cjs +6425 -0
- package/build/chunk-PE4C2TIO.cjs +16 -0
- package/build/chunk-PF2WAZLH.cjs +52 -0
- package/build/chunk-PFFTGOAR.cjs +25 -0
- package/build/chunk-PFUZLHWJ.cjs +25 -0
- package/build/chunk-POE7A7NF.cjs +180 -0
- package/build/chunk-PQSDA5BN.js +50 -0
- package/build/chunk-PR5TPAGH.js +14 -0
- package/build/chunk-PXMWVOKK.cjs +16 -0
- package/build/chunk-PZ5OJC4I.cjs +16 -0
- package/build/chunk-Q4LNTPEI.cjs +34 -0
- package/build/chunk-QCA5YGYV.js +14 -0
- package/build/chunk-QGGML4PP.js +17 -0
- package/build/chunk-QHW273SN.js +32 -0
- package/build/chunk-QJJRQMA6.cjs +8 -0
- package/build/chunk-QKB76MIV.cjs +769 -0
- package/build/chunk-QKVPGRI5.cjs +8 -0
- package/build/chunk-QME47CJL.cjs +8 -0
- package/build/chunk-QNJ6XBYQ.js +14 -0
- package/build/chunk-QWYKUNU5.js +14 -0
- package/build/chunk-QXTBP6TW.js +116 -0
- package/build/chunk-RH3LAIQS.js +32 -0
- package/build/chunk-RMAXG5F7.js +118 -0
- package/build/chunk-RUHAPGDE.js +14 -0
- package/build/chunk-S4KA3ZGO.js +6 -0
- package/build/chunk-SAGMV3YX.cjs +16 -0
- package/build/chunk-SCWEQ5JA.cjs +34 -0
- package/build/chunk-SEKBDIJH.cjs +16 -0
- package/build/chunk-SGWWTKLW.cjs +16 -0
- package/build/chunk-SWCU6OID.cjs +61 -0
- package/build/chunk-T4C7UJEZ.js +29 -0
- package/build/chunk-TBWIKIS3.cjs +8 -0
- package/build/chunk-TS74DN3N.cjs +229 -0
- package/build/chunk-TXTNUC7S.cjs +16 -0
- package/build/chunk-UEGDBJEG.cjs +127 -0
- package/build/chunk-UR2ZK7MI.cjs +16 -0
- package/build/chunk-VAOR6JOP.js +14 -0
- package/build/chunk-VELZ3KJY.cjs +45 -0
- package/build/chunk-VHTAHAD6.cjs +34 -0
- package/build/chunk-VISA22LF.js +14 -0
- package/build/chunk-VOFRWVGM.js +23 -0
- package/build/chunk-VPRNM6FU.cjs +118 -0
- package/build/chunk-VTFNEUOF.js +14 -0
- package/build/chunk-VVNU27G2.js +868 -0
- package/build/chunk-W3TQER3B.cjs +31 -0
- package/build/chunk-WINISBV4.js +70 -0
- package/build/chunk-WSEZ7DZV.js +14 -0
- package/build/chunk-WW57G6RG.js +124 -0
- package/build/chunk-WYJCE3KY.cjs +5593 -0
- package/build/chunk-WZI5UPER.cjs +61 -0
- package/build/chunk-WZZF2IEV.js +14 -0
- package/build/chunk-X4AIZSIY.cjs +47 -0
- package/build/chunk-XO6M5AYN.js +585 -0
- package/build/chunk-XWP76C6E.js +25 -0
- package/build/chunk-Y7O5SCF6.cjs +16 -0
- package/build/chunk-YEBPQG7X.js +96 -0
- package/build/chunk-YT4CYDJ3.js +14 -0
- package/build/chunk-ZG3PHRVQ.cjs +20 -0
- package/build/chunk-ZG7QF5S2.cjs +16 -0
- package/build/chunk-ZJYLWSBE.js +90 -0
- package/build/chunk-ZYBMNLGI.js +48 -0
- package/build/constants/DefaultValue.cjs +14 -0
- package/build/constants/DefaultValue.d.cts +9 -0
- package/build/constants/DefaultValue.d.ts +9 -0
- package/build/constants/DefaultValue.js +5 -0
- package/build/constants/MetadataKey.cjs +114 -0
- package/build/constants/MetadataKey.d.cts +30 -0
- package/build/constants/MetadataKey.d.ts +30 -0
- package/build/constants/MetadataKey.js +5 -0
- package/build/decorators/ControllerDecorators.cjs +21 -0
- package/build/decorators/ControllerDecorators.d.cts +32 -0
- package/build/decorators/ControllerDecorators.d.ts +32 -0
- package/build/decorators/ControllerDecorators.js +12 -0
- package/build/decorators/DependencyInjectionDecorators.cjs +78 -0
- package/build/decorators/DependencyInjectionDecorators.d.cts +75 -0
- package/build/decorators/DependencyInjectionDecorators.d.ts +75 -0
- package/build/decorators/DependencyInjectionDecorators.js +41 -0
- package/build/decorators/ValidationDecorators.cjs +35 -0
- package/build/decorators/ValidationDecorators.d.cts +36 -0
- package/build/decorators/ValidationDecorators.d.ts +36 -0
- package/build/decorators/ValidationDecorators.js +14 -0
- package/build/exceptions/DependencyInjectionException.cjs +18 -0
- package/build/exceptions/DependencyInjectionException.d.cts +8 -0
- package/build/exceptions/DependencyInjectionException.d.ts +8 -0
- package/build/exceptions/DependencyInjectionException.js +9 -0
- package/build/exceptions/InvalidConfigurableValueException.cjs +18 -0
- package/build/exceptions/InvalidConfigurableValueException.d.cts +8 -0
- package/build/exceptions/InvalidConfigurableValueException.d.ts +8 -0
- package/build/exceptions/InvalidConfigurableValueException.js +9 -0
- package/build/exceptions/InvalidDTOValueException.cjs +18 -0
- package/build/exceptions/InvalidDTOValueException.d.cts +8 -0
- package/build/exceptions/InvalidDTOValueException.d.ts +8 -0
- package/build/exceptions/InvalidDTOValueException.js +9 -0
- package/build/exceptions/InvalidGlobStringException.cjs +18 -0
- package/build/exceptions/InvalidGlobStringException.d.cts +8 -0
- package/build/exceptions/InvalidGlobStringException.d.ts +8 -0
- package/build/exceptions/InvalidGlobStringException.js +9 -0
- package/build/exceptions/MethodNotFoundException.cjs +18 -0
- package/build/exceptions/MethodNotFoundException.d.cts +8 -0
- package/build/exceptions/MethodNotFoundException.d.ts +8 -0
- package/build/exceptions/MethodNotFoundException.js +9 -0
- package/build/exceptions/NotSupportHashException.cjs +18 -0
- package/build/exceptions/NotSupportHashException.d.cts +8 -0
- package/build/exceptions/NotSupportHashException.d.ts +8 -0
- package/build/exceptions/NotSupportHashException.js +9 -0
- package/build/exceptions/controller/DuplicateControllerActionPatternException.cjs +18 -0
- package/build/exceptions/controller/DuplicateControllerActionPatternException.d.cts +8 -0
- package/build/exceptions/controller/DuplicateControllerActionPatternException.d.ts +8 -0
- package/build/exceptions/controller/DuplicateControllerActionPatternException.js +9 -0
- package/build/exceptions/controller/DynamicRegisterControllerNotAllowException.cjs +18 -0
- package/build/exceptions/controller/DynamicRegisterControllerNotAllowException.d.cts +8 -0
- package/build/exceptions/controller/DynamicRegisterControllerNotAllowException.d.ts +8 -0
- package/build/exceptions/controller/DynamicRegisterControllerNotAllowException.js +9 -0
- package/build/exceptions/controller/NoMatchedControllerActionPatternException.cjs +18 -0
- package/build/exceptions/controller/NoMatchedControllerActionPatternException.d.cts +8 -0
- package/build/exceptions/controller/NoMatchedControllerActionPatternException.d.ts +8 -0
- package/build/exceptions/controller/NoMatchedControllerActionPatternException.js +9 -0
- package/build/exceptions/crypto/asymmetric/AsymmetricDecryptException.cjs +18 -0
- package/build/exceptions/crypto/asymmetric/AsymmetricDecryptException.d.cts +8 -0
- package/build/exceptions/crypto/asymmetric/AsymmetricDecryptException.d.ts +8 -0
- package/build/exceptions/crypto/asymmetric/AsymmetricDecryptException.js +9 -0
- package/build/exceptions/crypto/asymmetric/AsymmetricEncryptException.cjs +18 -0
- package/build/exceptions/crypto/asymmetric/AsymmetricEncryptException.d.cts +8 -0
- package/build/exceptions/crypto/asymmetric/AsymmetricEncryptException.d.ts +8 -0
- package/build/exceptions/crypto/asymmetric/AsymmetricEncryptException.js +9 -0
- package/build/exceptions/crypto/asymmetric/AsymmetricSignException.cjs +18 -0
- package/build/exceptions/crypto/asymmetric/AsymmetricSignException.d.cts +8 -0
- package/build/exceptions/crypto/asymmetric/AsymmetricSignException.d.ts +8 -0
- package/build/exceptions/crypto/asymmetric/AsymmetricSignException.js +9 -0
- package/build/exceptions/crypto/asymmetric/AsymmetricVerifyException.cjs +18 -0
- package/build/exceptions/crypto/asymmetric/AsymmetricVerifyException.d.cts +8 -0
- package/build/exceptions/crypto/asymmetric/AsymmetricVerifyException.d.ts +8 -0
- package/build/exceptions/crypto/asymmetric/AsymmetricVerifyException.js +9 -0
- package/build/exceptions/crypto/asymmetric/InvalidAsymmetricEncryptKeyPairException.cjs +18 -0
- package/build/exceptions/crypto/asymmetric/InvalidAsymmetricEncryptKeyPairException.d.cts +8 -0
- package/build/exceptions/crypto/asymmetric/InvalidAsymmetricEncryptKeyPairException.d.ts +8 -0
- package/build/exceptions/crypto/asymmetric/InvalidAsymmetricEncryptKeyPairException.js +9 -0
- package/build/exceptions/crypto/asymmetric/InvalidAsymmetricEncryptPrivateKeyException.cjs +18 -0
- package/build/exceptions/crypto/asymmetric/InvalidAsymmetricEncryptPrivateKeyException.d.cts +8 -0
- package/build/exceptions/crypto/asymmetric/InvalidAsymmetricEncryptPrivateKeyException.d.ts +8 -0
- package/build/exceptions/crypto/asymmetric/InvalidAsymmetricEncryptPrivateKeyException.js +9 -0
- package/build/exceptions/crypto/asymmetric/InvalidAsymmetricEncryptPublicKeyException.cjs +18 -0
- package/build/exceptions/crypto/asymmetric/InvalidAsymmetricEncryptPublicKeyException.d.cts +8 -0
- package/build/exceptions/crypto/asymmetric/InvalidAsymmetricEncryptPublicKeyException.d.ts +8 -0
- package/build/exceptions/crypto/asymmetric/InvalidAsymmetricEncryptPublicKeyException.js +9 -0
- package/build/exceptions/crypto/asymmetric/NoAsymmetricEncryptPrivateKeyException.cjs +18 -0
- package/build/exceptions/crypto/asymmetric/NoAsymmetricEncryptPrivateKeyException.d.cts +8 -0
- package/build/exceptions/crypto/asymmetric/NoAsymmetricEncryptPrivateKeyException.d.ts +8 -0
- package/build/exceptions/crypto/asymmetric/NoAsymmetricEncryptPrivateKeyException.js +9 -0
- package/build/exceptions/crypto/asymmetric/NoAsymmetricEncryptPublicKeyException.cjs +18 -0
- package/build/exceptions/crypto/asymmetric/NoAsymmetricEncryptPublicKeyException.d.cts +8 -0
- package/build/exceptions/crypto/asymmetric/NoAsymmetricEncryptPublicKeyException.d.ts +8 -0
- package/build/exceptions/crypto/asymmetric/NoAsymmetricEncryptPublicKeyException.js +9 -0
- package/build/exceptions/crypto/symmetric/InvalidSymmetricCipherIVLengthException.cjs +18 -0
- package/build/exceptions/crypto/symmetric/InvalidSymmetricCipherIVLengthException.d.cts +8 -0
- package/build/exceptions/crypto/symmetric/InvalidSymmetricCipherIVLengthException.d.ts +8 -0
- package/build/exceptions/crypto/symmetric/InvalidSymmetricCipherIVLengthException.js +9 -0
- package/build/exceptions/crypto/symmetric/InvalidSymmetricCipherKeyLengthException.cjs +18 -0
- package/build/exceptions/crypto/symmetric/InvalidSymmetricCipherKeyLengthException.d.cts +8 -0
- package/build/exceptions/crypto/symmetric/InvalidSymmetricCipherKeyLengthException.d.ts +8 -0
- package/build/exceptions/crypto/symmetric/InvalidSymmetricCipherKeyLengthException.js +9 -0
- package/build/exceptions/crypto/symmetric/NotSupportCipherException.cjs +18 -0
- package/build/exceptions/crypto/symmetric/NotSupportCipherException.d.cts +8 -0
- package/build/exceptions/crypto/symmetric/NotSupportCipherException.d.ts +8 -0
- package/build/exceptions/crypto/symmetric/NotSupportCipherException.js +9 -0
- package/build/exceptions/crypto/symmetric/SymmetricDecryptException.cjs +18 -0
- package/build/exceptions/crypto/symmetric/SymmetricDecryptException.d.cts +8 -0
- package/build/exceptions/crypto/symmetric/SymmetricDecryptException.d.ts +8 -0
- package/build/exceptions/crypto/symmetric/SymmetricDecryptException.js +9 -0
- package/build/exceptions/crypto/symmetric/SymmetricEncryptException.cjs +18 -0
- package/build/exceptions/crypto/symmetric/SymmetricEncryptException.d.cts +8 -0
- package/build/exceptions/crypto/symmetric/SymmetricEncryptException.d.ts +8 -0
- package/build/exceptions/crypto/symmetric/SymmetricEncryptException.js +9 -0
- package/build/exceptions/validation/InvalidMethodAcceptException.cjs +18 -0
- package/build/exceptions/validation/InvalidMethodAcceptException.d.cts +8 -0
- package/build/exceptions/validation/InvalidMethodAcceptException.d.ts +8 -0
- package/build/exceptions/validation/InvalidMethodAcceptException.js +9 -0
- package/build/exceptions/validation/InvalidMethodReturnException.cjs +18 -0
- package/build/exceptions/validation/InvalidMethodReturnException.d.cts +8 -0
- package/build/exceptions/validation/InvalidMethodReturnException.d.ts +8 -0
- package/build/exceptions/validation/InvalidMethodReturnException.js +9 -0
- package/build/exceptions/validation/InvalidValueException.cjs +18 -0
- package/build/exceptions/validation/InvalidValueException.d.cts +8 -0
- package/build/exceptions/validation/InvalidValueException.d.ts +8 -0
- package/build/exceptions/validation/InvalidValueException.js +9 -0
- package/build/index.d-e5279fea.d.ts +872 -0
- package/build/interfaces/IConstructor.cjs +7 -0
- package/build/interfaces/IConstructor.d.cts +6 -0
- package/build/interfaces/IConstructor.d.ts +6 -0
- package/build/interfaces/IConstructor.js +4 -0
- package/build/interfaces/ILogger.cjs +7 -0
- package/build/interfaces/ILogger.d.cts +22 -0
- package/build/interfaces/ILogger.d.ts +22 -0
- package/build/interfaces/ILogger.js +4 -0
- package/build/interfaces/IPatRun.cjs +7 -0
- package/build/interfaces/IPatRun.d.cts +12 -0
- package/build/interfaces/IPatRun.d.ts +12 -0
- package/build/interfaces/IPatRun.js +4 -0
- package/build/interfaces/ISortArrayOptions.cjs +7 -0
- package/build/interfaces/ISortArrayOptions.d.cts +12 -0
- package/build/interfaces/ISortArrayOptions.d.ts +12 -0
- package/build/interfaces/ISortArrayOptions.js +4 -0
- package/build/interfaces/ISortObjectOptions.cjs +7 -0
- package/build/interfaces/ISortObjectOptions.d.cts +6 -0
- package/build/interfaces/ISortObjectOptions.d.ts +6 -0
- package/build/interfaces/ISortObjectOptions.js +4 -0
- package/build/lib/Application.cjs +50 -0
- package/build/lib/Application.d.cts +20 -0
- package/build/lib/Application.d.ts +20 -0
- package/build/lib/Application.js +41 -0
- package/build/lib/base/BaseObject.cjs +50 -0
- package/build/lib/base/BaseObject.d.cts +112 -0
- package/build/lib/base/BaseObject.d.ts +112 -0
- package/build/lib/base/BaseObject.js +41 -0
- package/build/lib/base/Component.cjs +50 -0
- package/build/lib/base/Component.d.cts +116 -0
- package/build/lib/base/Component.d.ts +116 -0
- package/build/lib/base/Component.js +41 -0
- package/build/lib/base/Container.cjs +50 -0
- package/build/lib/base/Container.d.cts +20 -0
- package/build/lib/base/Container.d.ts +20 -0
- package/build/lib/base/Container.js +41 -0
- package/build/lib/base/Controller.cjs +50 -0
- package/build/lib/base/Controller.d.cts +20 -0
- package/build/lib/base/Controller.d.ts +20 -0
- package/build/lib/base/Controller.js +41 -0
- package/build/lib/base/DTO.cjs +23 -0
- package/build/lib/base/DTO.d.cts +59 -0
- package/build/lib/base/DTO.d.ts +59 -0
- package/build/lib/base/DTO.js +14 -0
- package/build/lib/base/Model.cjs +51 -0
- package/build/lib/base/Model.d.cts +30 -0
- package/build/lib/base/Model.d.ts +30 -0
- package/build/lib/base/Model.js +42 -0
- package/build/lib/base/Module.cjs +50 -0
- package/build/lib/base/Module.d.cts +20 -0
- package/build/lib/base/Module.d.ts +20 -0
- package/build/lib/base/Module.js +41 -0
- package/build/lib/base/abstracts/AsymmetricEncryption.cjs +27 -0
- package/build/lib/base/abstracts/AsymmetricEncryption.d.cts +172 -0
- package/build/lib/base/abstracts/AsymmetricEncryption.d.ts +172 -0
- package/build/lib/base/abstracts/AsymmetricEncryption.js +18 -0
- package/build/lib/base/abstracts/Exception.cjs +17 -0
- package/build/lib/base/abstracts/Exception.d.cts +23 -0
- package/build/lib/base/abstracts/Exception.d.ts +23 -0
- package/build/lib/base/abstracts/Exception.js +8 -0
- package/build/lib/base/abstracts/Interval.cjs +51 -0
- package/build/lib/base/abstracts/Interval.d.cts +76 -0
- package/build/lib/base/abstracts/Interval.d.ts +76 -0
- package/build/lib/base/abstracts/Interval.js +42 -0
- package/build/lib/base/abstracts/SymmetricEncryption.cjs +23 -0
- package/build/lib/base/abstracts/SymmetricEncryption.d.cts +149 -0
- package/build/lib/base/abstracts/SymmetricEncryption.d.ts +149 -0
- package/build/lib/base/abstracts/SymmetricEncryption.js +14 -0
- package/build/lib/base/async-constructor/Append.cjs +14 -0
- package/build/lib/base/async-constructor/Append.d.cts +5 -0
- package/build/lib/base/async-constructor/Append.d.ts +5 -0
- package/build/lib/base/async-constructor/Append.js +5 -0
- package/build/lib/base/async-constructor/AsyncConstructor.cjs +15 -0
- package/build/lib/base/async-constructor/AsyncConstructor.d.cts +7 -0
- package/build/lib/base/async-constructor/AsyncConstructor.d.ts +7 -0
- package/build/lib/base/async-constructor/AsyncConstructor.js +6 -0
- package/build/lib/components/Formatter.cjs +50 -0
- package/build/lib/components/Formatter.d.cts +203 -0
- package/build/lib/components/Formatter.d.ts +203 -0
- package/build/lib/components/Formatter.js +41 -0
- package/build/lib/components/Logger.cjs +50 -0
- package/build/lib/components/Logger.d.cts +61 -0
- package/build/lib/components/Logger.d.ts +61 -0
- package/build/lib/components/Logger.js +41 -0
- package/build/lib/crypto/RSA.cjs +28 -0
- package/build/lib/crypto/RSA.d.cts +61 -0
- package/build/lib/crypto/RSA.d.ts +61 -0
- package/build/lib/crypto/RSA.js +19 -0
- package/build/lib/crypto/SM2.cjs +28 -0
- package/build/lib/crypto/SM2.d.cts +47 -0
- package/build/lib/crypto/SM2.d.ts +47 -0
- package/build/lib/crypto/SM2.js +19 -0
- package/build/lib/crypto/aes/AES128.cjs +25 -0
- package/build/lib/crypto/aes/AES128.d.cts +14 -0
- package/build/lib/crypto/aes/AES128.d.ts +14 -0
- package/build/lib/crypto/aes/AES128.js +16 -0
- package/build/lib/crypto/aes/AES192.cjs +25 -0
- package/build/lib/crypto/aes/AES192.d.cts +14 -0
- package/build/lib/crypto/aes/AES192.d.ts +14 -0
- package/build/lib/crypto/aes/AES192.js +16 -0
- package/build/lib/crypto/aes/AES256.cjs +25 -0
- package/build/lib/crypto/aes/AES256.d.cts +14 -0
- package/build/lib/crypto/aes/AES256.d.ts +14 -0
- package/build/lib/crypto/aes/AES256.js +16 -0
- package/build/lib/crypto/aria/ARIA128.cjs +24 -0
- package/build/lib/crypto/aria/ARIA128.d.cts +13 -0
- package/build/lib/crypto/aria/ARIA128.d.ts +13 -0
- package/build/lib/crypto/aria/ARIA128.js +15 -0
- package/build/lib/crypto/aria/ARIA192.cjs +24 -0
- package/build/lib/crypto/aria/ARIA192.d.cts +13 -0
- package/build/lib/crypto/aria/ARIA192.d.ts +13 -0
- package/build/lib/crypto/aria/ARIA192.js +15 -0
- package/build/lib/crypto/aria/ARIA256.cjs +24 -0
- package/build/lib/crypto/aria/ARIA256.d.cts +13 -0
- package/build/lib/crypto/aria/ARIA256.d.ts +13 -0
- package/build/lib/crypto/aria/ARIA256.js +15 -0
- package/build/lib/crypto/camellia/CAMELLIA128.cjs +24 -0
- package/build/lib/crypto/camellia/CAMELLIA128.d.cts +13 -0
- package/build/lib/crypto/camellia/CAMELLIA128.d.ts +13 -0
- package/build/lib/crypto/camellia/CAMELLIA128.js +15 -0
- package/build/lib/crypto/camellia/CAMELLIA192.cjs +24 -0
- package/build/lib/crypto/camellia/CAMELLIA192.d.cts +13 -0
- package/build/lib/crypto/camellia/CAMELLIA192.d.ts +13 -0
- package/build/lib/crypto/camellia/CAMELLIA192.js +15 -0
- package/build/lib/crypto/camellia/CAMELLIA256.cjs +24 -0
- package/build/lib/crypto/camellia/CAMELLIA256.d.cts +13 -0
- package/build/lib/crypto/camellia/CAMELLIA256.d.ts +13 -0
- package/build/lib/crypto/camellia/CAMELLIA256.js +15 -0
- package/build/lib/crypto/des/DES.cjs +25 -0
- package/build/lib/crypto/des/DES.d.cts +14 -0
- package/build/lib/crypto/des/DES.d.ts +14 -0
- package/build/lib/crypto/des/DES.js +16 -0
- package/build/lib/crypto/des/TripleDES.cjs +25 -0
- package/build/lib/crypto/des/TripleDES.d.cts +14 -0
- package/build/lib/crypto/des/TripleDES.d.ts +14 -0
- package/build/lib/crypto/des/TripleDES.js +16 -0
- package/build/lib/ioc/DependencyInjectionContainer.cjs +29 -0
- package/build/lib/ioc/DependencyInjectionContainer.d.cts +4 -0
- package/build/lib/ioc/DependencyInjectionContainer.d.ts +4 -0
- package/build/lib/ioc/DependencyInjectionContainer.js +20 -0
- package/build/lib/ioc/Errors.cjs +27 -0
- package/build/lib/ioc/Errors.d.cts +53 -0
- package/build/lib/ioc/Errors.d.ts +53 -0
- package/build/lib/ioc/Errors.js +10 -0
- package/build/lib/ioc/FunctionTokenizer.cjs +18 -0
- package/build/lib/ioc/FunctionTokenizer.d.cts +33 -0
- package/build/lib/ioc/FunctionTokenizer.d.ts +33 -0
- package/build/lib/ioc/FunctionTokenizer.js +5 -0
- package/build/lib/ioc/InjectionMode.cjs +14 -0
- package/build/lib/ioc/InjectionMode.d.cts +12 -0
- package/build/lib/ioc/InjectionMode.d.ts +12 -0
- package/build/lib/ioc/InjectionMode.js +5 -0
- package/build/lib/ioc/Lifetime.cjs +14 -0
- package/build/lib/ioc/Lifetime.d.cts +12 -0
- package/build/lib/ioc/Lifetime.d.ts +12 -0
- package/build/lib/ioc/Lifetime.js +5 -0
- package/build/lib/ioc/ListModules.cjs +17 -0
- package/build/lib/ioc/ListModules.d.cts +4 -0
- package/build/lib/ioc/ListModules.d.ts +4 -0
- package/build/lib/ioc/ListModules.js +8 -0
- package/build/lib/ioc/LoadModuleNative.cjs +14 -0
- package/build/lib/ioc/LoadModuleNative.d.cts +9 -0
- package/build/lib/ioc/LoadModuleNative.d.ts +9 -0
- package/build/lib/ioc/LoadModuleNative.js +5 -0
- package/build/lib/ioc/LoadModules.cjs +26 -0
- package/build/lib/ioc/LoadModules.d.cts +4 -0
- package/build/lib/ioc/LoadModules.d.ts +4 -0
- package/build/lib/ioc/LoadModules.js +17 -0
- package/build/lib/ioc/ParamParser.cjs +15 -0
- package/build/lib/ioc/ParamParser.d.cts +25 -0
- package/build/lib/ioc/ParamParser.d.ts +25 -0
- package/build/lib/ioc/ParamParser.js +6 -0
- package/build/lib/ioc/Resolvers.cjs +49 -0
- package/build/lib/ioc/Resolvers.d.cts +4 -0
- package/build/lib/ioc/Resolvers.d.ts +4 -0
- package/build/lib/ioc/Resolvers.js +16 -0
- package/build/lib/ioc/Utils.cjs +35 -0
- package/build/lib/ioc/Utils.d.cts +38 -0
- package/build/lib/ioc/Utils.d.ts +38 -0
- package/build/lib/ioc/Utils.js +6 -0
- package/build/options/ApplicationOptions.cjs +50 -0
- package/build/options/ApplicationOptions.d.cts +20 -0
- package/build/options/ApplicationOptions.d.ts +20 -0
- package/build/options/ApplicationOptions.js +41 -0
- package/build/options/LoadComponentOptions.cjs +50 -0
- package/build/options/LoadComponentOptions.d.cts +22 -0
- package/build/options/LoadComponentOptions.d.ts +22 -0
- package/build/options/LoadComponentOptions.js +41 -0
- package/build/options/LoadEntryClassOptions.cjs +50 -0
- package/build/options/LoadEntryClassOptions.d.cts +16 -0
- package/build/options/LoadEntryClassOptions.d.ts +16 -0
- package/build/options/LoadEntryClassOptions.js +41 -0
- package/build/options/LoadEntryCommonOptions.cjs +27 -0
- package/build/options/LoadEntryCommonOptions.d.cts +13 -0
- package/build/options/LoadEntryCommonOptions.d.ts +13 -0
- package/build/options/LoadEntryCommonOptions.js +18 -0
- package/build/options/LoadModuleOptions.cjs +50 -0
- package/build/options/LoadModuleOptions.d.cts +20 -0
- package/build/options/LoadModuleOptions.d.ts +20 -0
- package/build/options/LoadModuleOptions.js +41 -0
- package/build/options/ModuleOptions.cjs +50 -0
- package/build/options/ModuleOptions.d.cts +20 -0
- package/build/options/ModuleOptions.d.ts +20 -0
- package/build/options/ModuleOptions.js +41 -0
- package/build/types/AsyncFunction.cjs +7 -0
- package/build/types/AsyncFunction.d.cts +3 -0
- package/build/types/AsyncFunction.d.ts +3 -0
- package/build/types/AsyncFunction.js +4 -0
- package/build/types/ControllerActionMapItem.cjs +7 -0
- package/build/types/ControllerActionMapItem.d.cts +20 -0
- package/build/types/ControllerActionMapItem.d.ts +20 -0
- package/build/types/ControllerActionMapItem.js +4 -0
- package/build/types/InjectionProperties.cjs +7 -0
- package/build/types/InjectionProperties.d.cts +3 -0
- package/build/types/InjectionProperties.d.ts +3 -0
- package/build/types/InjectionProperties.js +4 -0
- package/build/types/TimeInput.cjs +7 -0
- package/build/types/TimeInput.d.cts +5 -0
- package/build/types/TimeInput.d.ts +5 -0
- package/build/types/TimeInput.js +4 -0
- package/build/types/TimeObject.cjs +7 -0
- package/build/types/TimeObject.d.cts +11 -0
- package/build/types/TimeObject.d.ts +11 -0
- package/build/types/TimeObject.js +4 -0
- package/build/types/UnitOfTime.cjs +7 -0
- package/build/types/UnitOfTime.d.cts +14 -0
- package/build/types/UnitOfTime.d.ts +14 -0
- package/build/types/UnitOfTime.js +4 -0
- package/package.json +145 -0
|
@@ -0,0 +1,767 @@
|
|
|
1
|
+
import { __commonJS, init_esm_shims, __name } from './chunk-5NK7E2HA.js';
|
|
2
|
+
|
|
3
|
+
// node_modules/gex/dist/gex.js
|
|
4
|
+
var require_gex = __commonJS({
|
|
5
|
+
"node_modules/gex/dist/gex.js"(exports, module) {
|
|
6
|
+
init_esm_shims();
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.Gex = void 0;
|
|
9
|
+
var _Gexer = class _Gexer {
|
|
10
|
+
constructor(gexspec) {
|
|
11
|
+
this.desc = "";
|
|
12
|
+
this.gexmap = {};
|
|
13
|
+
if (null != gexspec) {
|
|
14
|
+
let gexstrs = Array.isArray(gexspec) ? gexspec : [gexspec];
|
|
15
|
+
gexstrs.forEach((str) => {
|
|
16
|
+
this.gexmap[str] = this.re(this.clean(str));
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
dodgy(obj) {
|
|
21
|
+
return null == obj || Number.isNaN(obj);
|
|
22
|
+
}
|
|
23
|
+
clean(gexexp) {
|
|
24
|
+
let gexstr = "" + gexexp;
|
|
25
|
+
return this.dodgy(gexexp) ? "" : gexstr;
|
|
26
|
+
}
|
|
27
|
+
match(str) {
|
|
28
|
+
str = "" + str;
|
|
29
|
+
let hasmatch = false;
|
|
30
|
+
let gexstrs = Object.keys(this.gexmap);
|
|
31
|
+
for (let i = 0; i < gexstrs.length && !hasmatch; i++) {
|
|
32
|
+
hasmatch = !!this.gexmap[gexstrs[i]].exec(str);
|
|
33
|
+
}
|
|
34
|
+
return hasmatch;
|
|
35
|
+
}
|
|
36
|
+
on(obj) {
|
|
37
|
+
if (null == obj) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
let typeof_obj = typeof obj;
|
|
41
|
+
if ("string" === typeof_obj || "number" === typeof_obj || "boolean" === typeof_obj || obj instanceof Date || obj instanceof RegExp) {
|
|
42
|
+
return this.match(obj) ? obj : null;
|
|
43
|
+
} else if (Array.isArray(obj)) {
|
|
44
|
+
let out = [];
|
|
45
|
+
for (let i = 0; i < obj.length; i++) {
|
|
46
|
+
if (!this.dodgy(obj[i]) && this.match(obj[i])) {
|
|
47
|
+
out.push(obj[i]);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return out;
|
|
51
|
+
} else {
|
|
52
|
+
let outobj = {};
|
|
53
|
+
for (let p in obj) {
|
|
54
|
+
if (Object.prototype.hasOwnProperty.call(obj, p)) {
|
|
55
|
+
if (this.match(p)) {
|
|
56
|
+
outobj[p] = obj[p];
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return outobj;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
esc(gexexp) {
|
|
64
|
+
let gexstr = this.clean(gexexp);
|
|
65
|
+
gexstr = gexstr.replace(/\*/g, "**");
|
|
66
|
+
gexstr = gexstr.replace(/\?/g, "*?");
|
|
67
|
+
return gexstr;
|
|
68
|
+
}
|
|
69
|
+
escregexp(restr) {
|
|
70
|
+
return restr ? ("" + restr).replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&") : "";
|
|
71
|
+
}
|
|
72
|
+
re(gs) {
|
|
73
|
+
if ("" === gs || gs) {
|
|
74
|
+
gs = this.escregexp(gs);
|
|
75
|
+
gs = gs.replace(/\\\*/g, "[\\s\\S]*");
|
|
76
|
+
gs = gs.replace(/\\\?/g, "[\\s\\S]");
|
|
77
|
+
gs = gs.replace(/\[\\s\\S\]\*\[\\s\\S\]\*/g, "\\*");
|
|
78
|
+
gs = gs.replace(/\[\\s\\S\]\*\[\\s\\S\]/g, "\\?");
|
|
79
|
+
gs = "^" + gs + "$";
|
|
80
|
+
return new RegExp(gs);
|
|
81
|
+
} else {
|
|
82
|
+
let gexstrs = Object.keys(this.gexmap);
|
|
83
|
+
return 1 == gexstrs.length ? this.gexmap[gexstrs[0]] : { ...this.gexmap };
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
toString() {
|
|
87
|
+
let d = this.desc;
|
|
88
|
+
return "" != d ? d : this.desc = "Gex[" + Object.keys(this.gexmap) + "]";
|
|
89
|
+
}
|
|
90
|
+
inspect() {
|
|
91
|
+
return this.toString();
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
__name(_Gexer, "Gexer");
|
|
95
|
+
var Gexer = _Gexer;
|
|
96
|
+
function Gex(gexspec) {
|
|
97
|
+
return new Gexer(gexspec);
|
|
98
|
+
}
|
|
99
|
+
__name(Gex, "Gex");
|
|
100
|
+
exports.Gex = Gex;
|
|
101
|
+
if ("undefined" !== typeof module) {
|
|
102
|
+
module.exports = Gex;
|
|
103
|
+
module.exports.Gex = Gex;
|
|
104
|
+
}
|
|
105
|
+
exports.default = Gex;
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
// node_modules/patrun/dist/lib/matchers.js
|
|
110
|
+
var require_matchers = __commonJS({
|
|
111
|
+
"node_modules/patrun/dist/lib/matchers.js"(exports) {
|
|
112
|
+
init_esm_shims();
|
|
113
|
+
var __classPrivateFieldGet = exports && exports.__classPrivateFieldGet || function(receiver, state, kind, f) {
|
|
114
|
+
if (kind === "a" && !f)
|
|
115
|
+
throw new TypeError("Private accessor was defined without a getter");
|
|
116
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
|
|
117
|
+
throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
118
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
119
|
+
};
|
|
120
|
+
var _IntervalMatcher_and;
|
|
121
|
+
var _IntervalMatcher_or;
|
|
122
|
+
var _IntervalMatcher_nil;
|
|
123
|
+
var _IntervalMatcher_err;
|
|
124
|
+
var _IntervalMatcher_mgt;
|
|
125
|
+
var _IntervalMatcher_mgte;
|
|
126
|
+
var _IntervalMatcher_mlt;
|
|
127
|
+
var _IntervalMatcher_mlte;
|
|
128
|
+
var _IntervalMatcher_meq;
|
|
129
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
130
|
+
exports.IntervalMatcher = exports.GexMatcher = void 0;
|
|
131
|
+
var gex_1 = require_gex();
|
|
132
|
+
var _GexMatcher = class _GexMatcher {
|
|
133
|
+
constructor() {
|
|
134
|
+
}
|
|
135
|
+
make(key, fix) {
|
|
136
|
+
if ("string" === typeof fix && fix.match(/[*?]/)) {
|
|
137
|
+
let gex = (0, gex_1.Gex)(fix);
|
|
138
|
+
return {
|
|
139
|
+
kind: "gex",
|
|
140
|
+
match: (val) => null != gex.on(val),
|
|
141
|
+
fix,
|
|
142
|
+
meta: {},
|
|
143
|
+
same(mv) {
|
|
144
|
+
return null != mv && mv.kind === this.kind && mv.fix === this.fix;
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
} else
|
|
148
|
+
return void 0;
|
|
149
|
+
}
|
|
150
|
+
// TODO: pretty primitive, just looks for '*'
|
|
151
|
+
scan(mvs, opts) {
|
|
152
|
+
let has_match_any = mvs.filter((mv) => "*" === mv.fix).length > 0;
|
|
153
|
+
return {
|
|
154
|
+
complete: has_match_any,
|
|
155
|
+
sound: has_match_any,
|
|
156
|
+
gaps: [],
|
|
157
|
+
overs: [],
|
|
158
|
+
why: "no-star"
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
__name(_GexMatcher, "GexMatcher");
|
|
163
|
+
var GexMatcher = _GexMatcher;
|
|
164
|
+
exports.GexMatcher = GexMatcher;
|
|
165
|
+
var IntervalRE = new RegExp([
|
|
166
|
+
"^/s*",
|
|
167
|
+
"(=*[<>/(/[]?=*)?/s*([-+0-9a-fA-FeEoOxX]+(/.([0-9a-fA-FeEoOxX]+))?)([/)/]]?)(/s*(,|&+|/|+|/./.)/s*(=*[<>]?=*)/s*([-+.0-9a-fA-FeEoOxX]+)/s*([/)/]]?))?/s*$"
|
|
168
|
+
// optional whitespace
|
|
169
|
+
].join("").replace(/\//g, "\\"));
|
|
170
|
+
var _IntervalMatcher = class _IntervalMatcher {
|
|
171
|
+
constructor() {
|
|
172
|
+
this.kind = "interval";
|
|
173
|
+
_IntervalMatcher_and.set(this, (lhs, rhs) => /* @__PURE__ */ __name(function and(x) {
|
|
174
|
+
return lhs(x) && rhs(x);
|
|
175
|
+
}, "and"));
|
|
176
|
+
_IntervalMatcher_or.set(this, (lhs, rhs) => /* @__PURE__ */ __name(function or(x) {
|
|
177
|
+
return lhs(x) || rhs(x);
|
|
178
|
+
}, "or"));
|
|
179
|
+
_IntervalMatcher_nil.set(this, (n) => /* @__PURE__ */ __name(function nil(x) {
|
|
180
|
+
return false;
|
|
181
|
+
}, "nil"));
|
|
182
|
+
_IntervalMatcher_err.set(this, (n) => /* @__PURE__ */ __name(function err(x) {
|
|
183
|
+
return false;
|
|
184
|
+
}, "err"));
|
|
185
|
+
_IntervalMatcher_mgt.set(this, (n) => /* @__PURE__ */ __name(function gt(x) {
|
|
186
|
+
return x > n;
|
|
187
|
+
}, "gt"));
|
|
188
|
+
_IntervalMatcher_mgte.set(this, (n) => /* @__PURE__ */ __name(function gte(x) {
|
|
189
|
+
return x >= n;
|
|
190
|
+
}, "gte"));
|
|
191
|
+
_IntervalMatcher_mlt.set(this, (n) => /* @__PURE__ */ __name(function lt(x) {
|
|
192
|
+
return x < n;
|
|
193
|
+
}, "lt"));
|
|
194
|
+
_IntervalMatcher_mlte.set(this, (n) => /* @__PURE__ */ __name(function lte(x) {
|
|
195
|
+
return x <= n;
|
|
196
|
+
}, "lte"));
|
|
197
|
+
_IntervalMatcher_meq.set(this, (n) => /* @__PURE__ */ __name(function eq(x) {
|
|
198
|
+
return x === n;
|
|
199
|
+
}, "eq"));
|
|
200
|
+
}
|
|
201
|
+
make(key, fix) {
|
|
202
|
+
if ("string" === typeof fix && // At least one interval operator is required.
|
|
203
|
+
// Exact numbers must be specified as '=X'
|
|
204
|
+
fix.match(/[=<>.[()\]]/)) {
|
|
205
|
+
let m = fix.match(IntervalRE);
|
|
206
|
+
let meta = { jo: "and", o0: "err", n0: NaN, o1: "err", n1: NaN };
|
|
207
|
+
let match = /* @__PURE__ */ __name((val) => false, "match");
|
|
208
|
+
if (null != m) {
|
|
209
|
+
let os0 = _IntervalMatcher.normop(m[1]) || _IntervalMatcher.normop(m[5]);
|
|
210
|
+
let os1 = _IntervalMatcher.normop(m[8]) || _IntervalMatcher.normop(m[10]);
|
|
211
|
+
let o0 = "=" === os0 ? __classPrivateFieldGet(this, _IntervalMatcher_meq, "f") : "<" === os0 ? __classPrivateFieldGet(this, _IntervalMatcher_mlt, "f") : ")" === os0 ? __classPrivateFieldGet(this, _IntervalMatcher_mlt, "f") : "<=" === os0 ? __classPrivateFieldGet(this, _IntervalMatcher_mlte, "f") : "]" === os0 ? __classPrivateFieldGet(this, _IntervalMatcher_mlte, "f") : ">" === os0 ? __classPrivateFieldGet(this, _IntervalMatcher_mgt, "f") : "(" === os0 ? __classPrivateFieldGet(this, _IntervalMatcher_mgt, "f") : ">=" === os0 ? __classPrivateFieldGet(this, _IntervalMatcher_mgte, "f") : "[" === os0 ? __classPrivateFieldGet(this, _IntervalMatcher_mgte, "f") : __classPrivateFieldGet(this, _IntervalMatcher_err, "f");
|
|
212
|
+
let n0 = Number(m[2]);
|
|
213
|
+
let n1 = null == m[9] ? NaN : Number(m[9]);
|
|
214
|
+
let jos = m[7];
|
|
215
|
+
let jo = null == jos ? __classPrivateFieldGet(this, _IntervalMatcher_or, "f") : "&" === jos.substring(0, 1) ? __classPrivateFieldGet(this, _IntervalMatcher_and, "f") : "," === jos.substring(0, 1) ? __classPrivateFieldGet(this, _IntervalMatcher_and, "f") : __classPrivateFieldGet(this, _IntervalMatcher_or, "f");
|
|
216
|
+
if (".." === jos) {
|
|
217
|
+
jo = __classPrivateFieldGet(this, _IntervalMatcher_and, "f");
|
|
218
|
+
o0 = __classPrivateFieldGet(this, _IntervalMatcher_err, "f") === o0 ? __classPrivateFieldGet(this, _IntervalMatcher_mgte, "f") : o0;
|
|
219
|
+
os1 = "" === os1 ? "<=" : os1;
|
|
220
|
+
}
|
|
221
|
+
let o1 = null == os1 ? __classPrivateFieldGet(this, _IntervalMatcher_nil, "f") : "=" === os1 ? __classPrivateFieldGet(this, _IntervalMatcher_meq, "f") : "<" === os1 ? __classPrivateFieldGet(this, _IntervalMatcher_mlt, "f") : ")" === os1 ? __classPrivateFieldGet(this, _IntervalMatcher_mlt, "f") : "<=" === os1 ? __classPrivateFieldGet(this, _IntervalMatcher_mlte, "f") : "]" === os1 ? __classPrivateFieldGet(this, _IntervalMatcher_mlte, "f") : ">" === os1 ? __classPrivateFieldGet(this, _IntervalMatcher_mgt, "f") : ">=" === os1 ? __classPrivateFieldGet(this, _IntervalMatcher_mgte, "f") : __classPrivateFieldGet(this, _IntervalMatcher_err, "f");
|
|
222
|
+
if (n0 === n1) {
|
|
223
|
+
if ("=" === os0 && null != os1) {
|
|
224
|
+
n1 = NaN;
|
|
225
|
+
o1 = __classPrivateFieldGet(this, _IntervalMatcher_nil, "f");
|
|
226
|
+
if (os1.includes("<")) {
|
|
227
|
+
o0 = __classPrivateFieldGet(this, _IntervalMatcher_mlte, "f");
|
|
228
|
+
} else if (os1.includes(">")) {
|
|
229
|
+
o0 = __classPrivateFieldGet(this, _IntervalMatcher_mgte, "f");
|
|
230
|
+
} else if (os1.includes("=")) {
|
|
231
|
+
o0 = __classPrivateFieldGet(this, _IntervalMatcher_meq, "f");
|
|
232
|
+
} else {
|
|
233
|
+
o0 = __classPrivateFieldGet(this, _IntervalMatcher_err, "f");
|
|
234
|
+
}
|
|
235
|
+
} else if ("=" === os1 && null != os0) {
|
|
236
|
+
n1 = NaN;
|
|
237
|
+
o1 = __classPrivateFieldGet(this, _IntervalMatcher_nil, "f");
|
|
238
|
+
if (os0.includes("<")) {
|
|
239
|
+
o0 = __classPrivateFieldGet(this, _IntervalMatcher_mlte, "f");
|
|
240
|
+
} else if (os0.includes(">")) {
|
|
241
|
+
o0 = __classPrivateFieldGet(this, _IntervalMatcher_mgte, "f");
|
|
242
|
+
} else {
|
|
243
|
+
o0 = __classPrivateFieldGet(this, _IntervalMatcher_err, "f");
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
if (__classPrivateFieldGet(this, _IntervalMatcher_err, "f") !== o0) {
|
|
248
|
+
if (__classPrivateFieldGet(this, _IntervalMatcher_nil, "f") === o1) {
|
|
249
|
+
if (__classPrivateFieldGet(this, _IntervalMatcher_mlt, "f") === o0 || __classPrivateFieldGet(this, _IntervalMatcher_mlte, "f") === o0) {
|
|
250
|
+
o1 = o0;
|
|
251
|
+
n1 = n0;
|
|
252
|
+
o0 = __classPrivateFieldGet(this, _IntervalMatcher_mgte, "f");
|
|
253
|
+
n0 = Number.NEGATIVE_INFINITY;
|
|
254
|
+
jo = __classPrivateFieldGet(this, _IntervalMatcher_and, "f");
|
|
255
|
+
} else if (__classPrivateFieldGet(this, _IntervalMatcher_mgt, "f") === o0 || __classPrivateFieldGet(this, _IntervalMatcher_mgte, "f") === o0) {
|
|
256
|
+
o1 = __classPrivateFieldGet(this, _IntervalMatcher_mlte, "f");
|
|
257
|
+
n1 = Number.POSITIVE_INFINITY;
|
|
258
|
+
jo = __classPrivateFieldGet(this, _IntervalMatcher_and, "f");
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
if (!isNaN(n1) && n1 < n0) {
|
|
263
|
+
let to = o1;
|
|
264
|
+
let tn = n1;
|
|
265
|
+
n1 = n0;
|
|
266
|
+
n0 = tn;
|
|
267
|
+
if (".." !== jos) {
|
|
268
|
+
o1 = o0;
|
|
269
|
+
o0 = to;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
let o0f = o0(n0);
|
|
273
|
+
let o1f = o1(n1);
|
|
274
|
+
let check = jo(o0f, o1f);
|
|
275
|
+
meta = { jo: check.name, o0: o0f.name, n0, o1: o1f.name, n1 };
|
|
276
|
+
match = /* @__PURE__ */ __name((val) => {
|
|
277
|
+
let res = false;
|
|
278
|
+
let n = parseFloat(val);
|
|
279
|
+
if (!isNaN(n)) {
|
|
280
|
+
res = check(n);
|
|
281
|
+
}
|
|
282
|
+
return res;
|
|
283
|
+
}, "match");
|
|
284
|
+
return {
|
|
285
|
+
kind: "interval",
|
|
286
|
+
fix,
|
|
287
|
+
meta,
|
|
288
|
+
match,
|
|
289
|
+
same(mv) {
|
|
290
|
+
return null != mv && mv.kind === this.kind && mv.meta.jo === this.meta.jo && mv.meta.o0 === this.meta.o0 && mv.meta.n0 === this.meta.n0 && mv.meta.o1 === this.meta.o1 && mv.meta.n1 === this.meta.n1;
|
|
291
|
+
}
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
scan(mvs, opts) {
|
|
297
|
+
let scanres = {
|
|
298
|
+
complete: false,
|
|
299
|
+
sound: false,
|
|
300
|
+
gaps: [],
|
|
301
|
+
overs: [],
|
|
302
|
+
lower: null,
|
|
303
|
+
upper: null
|
|
304
|
+
};
|
|
305
|
+
let bottom = Number.NEGATIVE_INFINITY;
|
|
306
|
+
let top = Number.POSITIVE_INFINITY;
|
|
307
|
+
let half_intervals = this.half_intervals(mvs);
|
|
308
|
+
half_intervals.reduce((c, h) => {
|
|
309
|
+
let heq = "eq" === h.o;
|
|
310
|
+
let hlt = "lt" === h.o;
|
|
311
|
+
let hlte = "lte" === h.o;
|
|
312
|
+
let hgt = "gt" === h.o;
|
|
313
|
+
let hgte = "gte" === h.o;
|
|
314
|
+
let hn = h.n;
|
|
315
|
+
if (null == c.lower) {
|
|
316
|
+
let b = { n: bottom, o: "gte" };
|
|
317
|
+
c.lower = b;
|
|
318
|
+
c.upper = h;
|
|
319
|
+
if (!(bottom == hn && hgte)) {
|
|
320
|
+
if (hgt || hgte) {
|
|
321
|
+
c.gaps.push([b, { n: hn, o: hgt ? "lte" : "lt", m: 0 }]);
|
|
322
|
+
} else if (heq) {
|
|
323
|
+
c.gaps.push([b, { n: hn, o: "lte", m: 1 }]);
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
} else {
|
|
327
|
+
let ueq = "eq" === c.upper.o;
|
|
328
|
+
let ult = "lt" === c.upper.o;
|
|
329
|
+
let ulte = "lte" === c.upper.o;
|
|
330
|
+
"gt" === c.upper.o;
|
|
331
|
+
"hgte" === c.upper.o;
|
|
332
|
+
let un = c.upper.n;
|
|
333
|
+
let u = c.upper;
|
|
334
|
+
if (hn === un) {
|
|
335
|
+
if (ult && (hgte || heq) || (ulte || ueq) && hgt) ; else if (ueq || ult || ulte) {
|
|
336
|
+
c.gaps.push([
|
|
337
|
+
{ n: un, o: ueq || ulte ? "gt" : "gte", m: 2, d: { u, h } },
|
|
338
|
+
{ n: hn, o: heq || hgte ? "lt" : "lte", m: 3 }
|
|
339
|
+
]);
|
|
340
|
+
} else ;
|
|
341
|
+
} else if (un < hn) {
|
|
342
|
+
if (hlt || hlte) ; else if (ueq || ult || ulte) {
|
|
343
|
+
c.gaps.push([
|
|
344
|
+
{ n: un, o: ueq || ulte ? "gt" : "gte", m: 4 },
|
|
345
|
+
{ n: hn, o: heq || hgte ? "lt" : "lte", m: 5 }
|
|
346
|
+
]);
|
|
347
|
+
}
|
|
348
|
+
} else {
|
|
349
|
+
c.overs.push([
|
|
350
|
+
{ n: hn, o: heq || hgte ? "gte" : "gt", m: 10 },
|
|
351
|
+
{ n: un, o: ueq || ulte ? "lte" : "lt", m: 11 }
|
|
352
|
+
]);
|
|
353
|
+
}
|
|
354
|
+
c.upper = h;
|
|
355
|
+
}
|
|
356
|
+
return c;
|
|
357
|
+
}, scanres);
|
|
358
|
+
let last = 0 < half_intervals.length && half_intervals[half_intervals.length - 1];
|
|
359
|
+
if (last && top !== last.n && last.o !== "gt" && last.o !== "gte") {
|
|
360
|
+
scanres.gaps.push([
|
|
361
|
+
{ n: last.n, o: last.o === "eq" || last.o === "lte" ? "gt" : "gte", m: 6 },
|
|
362
|
+
{ n: top, o: "lte", m: 7 }
|
|
363
|
+
]);
|
|
364
|
+
}
|
|
365
|
+
scanres.complete = 0 === scanres.gaps.length;
|
|
366
|
+
scanres.sound = 0 === scanres.overs.length;
|
|
367
|
+
return scanres;
|
|
368
|
+
}
|
|
369
|
+
// NOTE: assumes n0<=n1
|
|
370
|
+
half_intervals(mvs) {
|
|
371
|
+
let half_intervals = [];
|
|
372
|
+
for (let mv of mvs) {
|
|
373
|
+
half_intervals.push([
|
|
374
|
+
{ n: mv.meta.n0, o: mv.meta.o0 },
|
|
375
|
+
{ n: mv.meta.n1, o: mv.meta.o1 }
|
|
376
|
+
]);
|
|
377
|
+
}
|
|
378
|
+
var os = ["lt", "lte", "eq", "gte", "gt"];
|
|
379
|
+
var hi = half_intervals.map((hh) => [
|
|
380
|
+
isNaN(hh[0].n) || null == hh[0].n ? null : hh[0],
|
|
381
|
+
isNaN(hh[1].n) || null == hh[1].n ? null : hh[1]
|
|
382
|
+
].filter((h) => null != h)).sort((a, b) => {
|
|
383
|
+
if (a[0].n < b[0].n) {
|
|
384
|
+
return -1;
|
|
385
|
+
} else if (b[0].n < a[0].n) {
|
|
386
|
+
return 1;
|
|
387
|
+
} else {
|
|
388
|
+
var a0i = os.indexOf(a[0].o);
|
|
389
|
+
var b0i = os.indexOf(b[0].o);
|
|
390
|
+
if (a0i < b0i) {
|
|
391
|
+
return -1;
|
|
392
|
+
} else if (b0i < a0i) {
|
|
393
|
+
return 1;
|
|
394
|
+
} else {
|
|
395
|
+
if (a[1].n < b[1].n) {
|
|
396
|
+
return -1;
|
|
397
|
+
} else if (b[1].n < a[1].n) {
|
|
398
|
+
return 1;
|
|
399
|
+
} else {
|
|
400
|
+
var a1i = os.indexOf(a[1].o);
|
|
401
|
+
var b1i = os.indexOf(b[1].o);
|
|
402
|
+
return a1i < b1i ? -1 : b1i < a1i ? 1 : 0;
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
}).reduce((hv, hh) => hv.concat(...hh), []);
|
|
407
|
+
return hi;
|
|
408
|
+
}
|
|
409
|
+
};
|
|
410
|
+
__name(_IntervalMatcher, "IntervalMatcher");
|
|
411
|
+
var IntervalMatcher = _IntervalMatcher;
|
|
412
|
+
exports.IntervalMatcher = IntervalMatcher;
|
|
413
|
+
_IntervalMatcher_and = /* @__PURE__ */ new WeakMap(), _IntervalMatcher_or = /* @__PURE__ */ new WeakMap(), _IntervalMatcher_nil = /* @__PURE__ */ new WeakMap(), _IntervalMatcher_err = /* @__PURE__ */ new WeakMap(), _IntervalMatcher_mgt = /* @__PURE__ */ new WeakMap(), _IntervalMatcher_mgte = /* @__PURE__ */ new WeakMap(), _IntervalMatcher_mlt = /* @__PURE__ */ new WeakMap(), _IntervalMatcher_mlte = /* @__PURE__ */ new WeakMap(), _IntervalMatcher_meq = /* @__PURE__ */ new WeakMap();
|
|
414
|
+
IntervalMatcher.normop = (op) => null == op ? null : ((op.match(/([<>\(\)\[\]])/) || [])[1] || "") + ((op.match(/(=)/) || [])[1] || "");
|
|
415
|
+
}
|
|
416
|
+
});
|
|
417
|
+
|
|
418
|
+
// node_modules/patrun/dist/patrun.js
|
|
419
|
+
var require_patrun = __commonJS({
|
|
420
|
+
"node_modules/patrun/dist/patrun.js"(exports, module) {
|
|
421
|
+
init_esm_shims();
|
|
422
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
423
|
+
exports.Gex = exports.Patrun = void 0;
|
|
424
|
+
var gex_1 = require_gex();
|
|
425
|
+
Object.defineProperty(exports, "Gex", { enumerable: true, get: function() {
|
|
426
|
+
return gex_1.Gex;
|
|
427
|
+
} });
|
|
428
|
+
var matchers_1 = require_matchers();
|
|
429
|
+
function Patrun(custom) {
|
|
430
|
+
custom = custom || {};
|
|
431
|
+
var self = {};
|
|
432
|
+
var top = {};
|
|
433
|
+
let matchers = [];
|
|
434
|
+
if (custom.gex) {
|
|
435
|
+
matchers.push(new matchers_1.GexMatcher());
|
|
436
|
+
}
|
|
437
|
+
if (custom.interval) {
|
|
438
|
+
matchers.push(new matchers_1.IntervalMatcher());
|
|
439
|
+
}
|
|
440
|
+
self.top = function() {
|
|
441
|
+
return top;
|
|
442
|
+
};
|
|
443
|
+
self.add = function(pat, data) {
|
|
444
|
+
pat = { ...pat };
|
|
445
|
+
var customizer = "function" === typeof custom ? custom.call(self, pat, data) : null;
|
|
446
|
+
var keys = Object.keys(pat).filter((key2) => null != pat[key2]).sort();
|
|
447
|
+
keys.forEach(function(key2) {
|
|
448
|
+
pat[key2] = String(pat[key2]);
|
|
449
|
+
});
|
|
450
|
+
var keymap = top;
|
|
451
|
+
var valmap;
|
|
452
|
+
for (var i = 0; i < keys.length; i++) {
|
|
453
|
+
var key = keys[i];
|
|
454
|
+
var fix = pat[key];
|
|
455
|
+
let mv = matchers.reduce((m, t) => m || t.make(key, fix), void 0);
|
|
456
|
+
valmap = keymap.v;
|
|
457
|
+
if (valmap && key == keymap.k) {
|
|
458
|
+
if (mv) {
|
|
459
|
+
var g = keymap.g = keymap.g || {};
|
|
460
|
+
var ga = g[key] = g[key] || [];
|
|
461
|
+
mv = ga.find((gmv) => gmv.same(mv)) || (ga.push(mv), mv);
|
|
462
|
+
keymap = mv.keymap || (mv.keymap = {});
|
|
463
|
+
} else {
|
|
464
|
+
keymap = valmap[fix] || (valmap[fix] = {});
|
|
465
|
+
}
|
|
466
|
+
} else if (!keymap.k) {
|
|
467
|
+
keymap.k = key;
|
|
468
|
+
keymap.v = {};
|
|
469
|
+
if (mv) {
|
|
470
|
+
var g = keymap.g = keymap.g || {};
|
|
471
|
+
var ga = g[key] = g[key] || [];
|
|
472
|
+
mv = ga.find((gmv) => gmv.same(mv)) || (ga.push(mv), mv);
|
|
473
|
+
keymap = mv.keymap || (mv.keymap = {});
|
|
474
|
+
} else {
|
|
475
|
+
keymap = keymap.v[fix] = {};
|
|
476
|
+
}
|
|
477
|
+
} else if (key < keymap.k) {
|
|
478
|
+
var s = keymap.s;
|
|
479
|
+
var g = keymap.g;
|
|
480
|
+
keymap.s = {
|
|
481
|
+
k: keymap.k,
|
|
482
|
+
// sk: keymap.sk,
|
|
483
|
+
v: keymap.v
|
|
484
|
+
};
|
|
485
|
+
if (s) {
|
|
486
|
+
keymap.s.s = s;
|
|
487
|
+
}
|
|
488
|
+
if (g) {
|
|
489
|
+
keymap.s.g = g;
|
|
490
|
+
}
|
|
491
|
+
if (keymap.g) {
|
|
492
|
+
keymap.g = {};
|
|
493
|
+
}
|
|
494
|
+
keymap.k = key;
|
|
495
|
+
keymap.v = {};
|
|
496
|
+
if (mv) {
|
|
497
|
+
var g = keymap.g = keymap.g || {};
|
|
498
|
+
var ga = g[key] = g[key] || [];
|
|
499
|
+
mv = ga.find((gmv) => gmv.same(mv)) || (ga.push(mv), mv);
|
|
500
|
+
keymap = mv.keymap || (mv.keymap = {});
|
|
501
|
+
} else {
|
|
502
|
+
keymap = keymap.v[fix] = {};
|
|
503
|
+
}
|
|
504
|
+
} else {
|
|
505
|
+
keymap = keymap.s || (keymap.s = {});
|
|
506
|
+
i--;
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
if (void 0 !== data && keymap) {
|
|
510
|
+
keymap.d = data;
|
|
511
|
+
if (customizer) {
|
|
512
|
+
keymap.f = "function" === typeof customizer ? customizer : customizer.find;
|
|
513
|
+
keymap.r = "function" === typeof customizer.remove ? customizer.remove : void 0;
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
return self;
|
|
517
|
+
};
|
|
518
|
+
self.findexact = function(pat) {
|
|
519
|
+
return self.find(pat, true);
|
|
520
|
+
};
|
|
521
|
+
self.find = function(pat, exact, collect) {
|
|
522
|
+
if (null == pat)
|
|
523
|
+
return null;
|
|
524
|
+
var keymap = top;
|
|
525
|
+
var data = void 0 === top.d ? null : top.d;
|
|
526
|
+
var finalfind = top.f;
|
|
527
|
+
var key = null;
|
|
528
|
+
var stars = [];
|
|
529
|
+
var foundkeys = {};
|
|
530
|
+
var patlen = Object.keys(pat).length;
|
|
531
|
+
var collection = [];
|
|
532
|
+
if (void 0 !== top.d) {
|
|
533
|
+
collection.push(top.d);
|
|
534
|
+
}
|
|
535
|
+
do {
|
|
536
|
+
key = keymap.k;
|
|
537
|
+
if (keymap.v) {
|
|
538
|
+
var val = pat[key];
|
|
539
|
+
var nextkeymap = keymap.v[val];
|
|
540
|
+
if (!nextkeymap && keymap.g && keymap.g[key]) {
|
|
541
|
+
var ga = keymap.g[key];
|
|
542
|
+
for (var gi = 0; gi < ga.length; gi++) {
|
|
543
|
+
if (ga[gi].match(val)) {
|
|
544
|
+
nextkeymap = ga[gi].keymap;
|
|
545
|
+
break;
|
|
546
|
+
}
|
|
547
|
+
}
|
|
548
|
+
}
|
|
549
|
+
if (nextkeymap) {
|
|
550
|
+
foundkeys[key] = true;
|
|
551
|
+
if (keymap.s) {
|
|
552
|
+
stars.push(keymap.s);
|
|
553
|
+
}
|
|
554
|
+
data = void 0 === nextkeymap.d ? exact ? null : data : nextkeymap.d;
|
|
555
|
+
if (collect && void 0 !== nextkeymap.d) {
|
|
556
|
+
collection.push(nextkeymap.d);
|
|
557
|
+
}
|
|
558
|
+
finalfind = nextkeymap.f;
|
|
559
|
+
keymap = nextkeymap;
|
|
560
|
+
} else {
|
|
561
|
+
keymap = keymap.s;
|
|
562
|
+
}
|
|
563
|
+
} else {
|
|
564
|
+
keymap = null;
|
|
565
|
+
}
|
|
566
|
+
if (null == keymap && 0 < stars.length && (null == data || collect && !exact)) {
|
|
567
|
+
keymap = stars.pop();
|
|
568
|
+
}
|
|
569
|
+
} while (keymap);
|
|
570
|
+
if (exact) {
|
|
571
|
+
if (Object.keys(foundkeys).length !== patlen) {
|
|
572
|
+
data = null;
|
|
573
|
+
}
|
|
574
|
+
} else {
|
|
575
|
+
if (null == data && void 0 !== top.d) {
|
|
576
|
+
data = top.d;
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
if (finalfind) {
|
|
580
|
+
data = finalfind.call(self, pat, data);
|
|
581
|
+
}
|
|
582
|
+
return collect ? collection : data;
|
|
583
|
+
};
|
|
584
|
+
self.remove = function(pat) {
|
|
585
|
+
var keymap = top;
|
|
586
|
+
var data = null;
|
|
587
|
+
var key;
|
|
588
|
+
var path = [];
|
|
589
|
+
do {
|
|
590
|
+
key = keymap.k;
|
|
591
|
+
if (keymap.v || keymap.g) {
|
|
592
|
+
if (keymap.v) {
|
|
593
|
+
var nextkeymap = keymap.v[pat[key]];
|
|
594
|
+
if (nextkeymap) {
|
|
595
|
+
path.push({ km: keymap, v: pat[key] });
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
if (null == nextkeymap && keymap.g) {
|
|
599
|
+
let mvs = keymap.g[key] || [];
|
|
600
|
+
for (let mvi = 0; mvi < mvs.length; mvi++) {
|
|
601
|
+
if (mvs[mvi].fix === pat[key]) {
|
|
602
|
+
path.push({ km: keymap, v: pat[key], mv: mvs[mvi] });
|
|
603
|
+
nextkeymap = mvs[mvi].keymap;
|
|
604
|
+
break;
|
|
605
|
+
}
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
if (nextkeymap) {
|
|
609
|
+
data = nextkeymap.d;
|
|
610
|
+
keymap = nextkeymap;
|
|
611
|
+
} else {
|
|
612
|
+
keymap = keymap.s;
|
|
613
|
+
}
|
|
614
|
+
} else {
|
|
615
|
+
keymap = null;
|
|
616
|
+
}
|
|
617
|
+
} while (keymap);
|
|
618
|
+
if (void 0 !== data) {
|
|
619
|
+
var part = path[path.length - 1];
|
|
620
|
+
if (part && part.km && part.km.v) {
|
|
621
|
+
var point = part.km.v[part.v] || part.mv && part.mv.keymap;
|
|
622
|
+
if (point && (!point.r || point.r(pat, point.d))) {
|
|
623
|
+
delete point.d;
|
|
624
|
+
}
|
|
625
|
+
}
|
|
626
|
+
}
|
|
627
|
+
};
|
|
628
|
+
self.list = function(pat, exact) {
|
|
629
|
+
pat = pat || {};
|
|
630
|
+
function descend(keymap, match, missing, acc2) {
|
|
631
|
+
if (keymap.v) {
|
|
632
|
+
var key = keymap.k;
|
|
633
|
+
var gexval = (0, gex_1.Gex)(pat ? null == pat[key] ? exact ? null : "*" : pat[key] : "*");
|
|
634
|
+
var itermatch = { ...match };
|
|
635
|
+
var itermissing = { ...missing };
|
|
636
|
+
var nextkeymap;
|
|
637
|
+
for (var val in keymap.v) {
|
|
638
|
+
if (val === pat[key] || !exact && null == pat[key] || gexval.on(val)) {
|
|
639
|
+
var valitermatch = { ...itermatch };
|
|
640
|
+
valitermatch[key] = val;
|
|
641
|
+
var valitermissing = { ...itermissing };
|
|
642
|
+
delete valitermissing[key];
|
|
643
|
+
nextkeymap = keymap.v[val];
|
|
644
|
+
if (0 === Object.keys(valitermissing).length && nextkeymap && nextkeymap.d) {
|
|
645
|
+
acc2.push({
|
|
646
|
+
match: valitermatch,
|
|
647
|
+
data: nextkeymap.d,
|
|
648
|
+
find: nextkeymap.f
|
|
649
|
+
});
|
|
650
|
+
}
|
|
651
|
+
if (nextkeymap && null != nextkeymap.v) {
|
|
652
|
+
descend(nextkeymap, { ...valitermatch }, { ...valitermissing }, acc2);
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
}
|
|
656
|
+
nextkeymap = keymap.s;
|
|
657
|
+
if (nextkeymap) {
|
|
658
|
+
descend(nextkeymap, { ...itermatch }, { ...itermissing }, acc2);
|
|
659
|
+
}
|
|
660
|
+
}
|
|
661
|
+
}
|
|
662
|
+
__name(descend, "descend");
|
|
663
|
+
var acc = [];
|
|
664
|
+
if (top.d) {
|
|
665
|
+
acc.push({
|
|
666
|
+
match: {},
|
|
667
|
+
data: top.d,
|
|
668
|
+
find: top.f
|
|
669
|
+
});
|
|
670
|
+
}
|
|
671
|
+
descend(top, {}, { ...pat }, acc);
|
|
672
|
+
return acc;
|
|
673
|
+
};
|
|
674
|
+
self.toString = function(first, second) {
|
|
675
|
+
var tree = true === first ? true : !!second;
|
|
676
|
+
var dstr = "function" === typeof first ? first : function(d) {
|
|
677
|
+
return "function" === typeof d ? "<" + d.name + ">" : "<" + d + ">";
|
|
678
|
+
};
|
|
679
|
+
function indent(o2, d) {
|
|
680
|
+
for (var i = 0; i < d; i++) {
|
|
681
|
+
o2.push(" ");
|
|
682
|
+
}
|
|
683
|
+
}
|
|
684
|
+
__name(indent, "indent");
|
|
685
|
+
var str = [];
|
|
686
|
+
function walk(n, o2, d, vs) {
|
|
687
|
+
var vsc;
|
|
688
|
+
if (void 0 !== n.d) {
|
|
689
|
+
o2.push(" " + dstr(n.d));
|
|
690
|
+
str.push(vs.join(", ") + " -> " + dstr(n.d));
|
|
691
|
+
}
|
|
692
|
+
if (n.k) {
|
|
693
|
+
o2.push("\n");
|
|
694
|
+
indent(o2, d);
|
|
695
|
+
o2.push(n.k + ":");
|
|
696
|
+
}
|
|
697
|
+
if (n.v || n.s || n.g) {
|
|
698
|
+
d++;
|
|
699
|
+
}
|
|
700
|
+
if (n.v) {
|
|
701
|
+
var pa = Object.keys(n.v).sort();
|
|
702
|
+
for (var pi = 0; pi < pa.length; pi++) {
|
|
703
|
+
var p = pa[pi];
|
|
704
|
+
o2.push("\n");
|
|
705
|
+
indent(o2, d);
|
|
706
|
+
o2.push(p + " ->");
|
|
707
|
+
vsc = vs.slice();
|
|
708
|
+
vsc.push(n.k + "=" + p);
|
|
709
|
+
walk(n.v[p], o2, d + 1, vsc);
|
|
710
|
+
}
|
|
711
|
+
}
|
|
712
|
+
if (n.g) {
|
|
713
|
+
var pa = Object.keys(n.g).sort();
|
|
714
|
+
for (var pi = 0; pi < pa.length; pi++) {
|
|
715
|
+
var mvs = n.g[pa[pi]];
|
|
716
|
+
for (var mvi = 0; mvi < mvs.length; mvi++) {
|
|
717
|
+
var mv = mvs[mvi];
|
|
718
|
+
o2.push("\n");
|
|
719
|
+
indent(o2, d);
|
|
720
|
+
o2.push(mv.fix + " ~>");
|
|
721
|
+
vsc = vs.slice();
|
|
722
|
+
vsc.push(n.k + "~" + mv.fix);
|
|
723
|
+
walk(mv.keymap, o2, d + 1, vsc);
|
|
724
|
+
}
|
|
725
|
+
}
|
|
726
|
+
}
|
|
727
|
+
if (n.s) {
|
|
728
|
+
o2.push("\n");
|
|
729
|
+
indent(o2, d);
|
|
730
|
+
o2.push("|");
|
|
731
|
+
vsc = vs.slice();
|
|
732
|
+
walk(n.s, o2, d + 1, vsc);
|
|
733
|
+
}
|
|
734
|
+
}
|
|
735
|
+
__name(walk, "walk");
|
|
736
|
+
var o = [];
|
|
737
|
+
walk(top, o, 0, []);
|
|
738
|
+
return tree ? o.join("") : str.join("\n");
|
|
739
|
+
};
|
|
740
|
+
self.inspect = self.toString;
|
|
741
|
+
self.toJSON = function(indent) {
|
|
742
|
+
return JSON.stringify(top, function(_key, val) {
|
|
743
|
+
if ("function" === typeof val)
|
|
744
|
+
return "[Function]";
|
|
745
|
+
return val;
|
|
746
|
+
}, indent);
|
|
747
|
+
};
|
|
748
|
+
return self;
|
|
749
|
+
}
|
|
750
|
+
__name(Patrun, "Patrun");
|
|
751
|
+
exports.Patrun = Patrun;
|
|
752
|
+
function make(custom) {
|
|
753
|
+
return new Patrun(custom);
|
|
754
|
+
}
|
|
755
|
+
__name(make, "make");
|
|
756
|
+
if ("undefined" !== typeof module) {
|
|
757
|
+
module.exports = make;
|
|
758
|
+
module.exports.Patrun = Patrun;
|
|
759
|
+
module.exports.Gex = gex_1.Gex;
|
|
760
|
+
}
|
|
761
|
+
exports.default = make;
|
|
762
|
+
}
|
|
763
|
+
});
|
|
764
|
+
|
|
765
|
+
export { require_patrun };
|
|
766
|
+
//# sourceMappingURL=out.js.map
|
|
767
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL25vZGVfbW9kdWxlcy9nZXgvZ2V4LnRzIiwiLi4vbm9kZV9tb2R1bGVzL3BhdHJ1bi9saWIvbWF0Y2hlcnMudHMiLCIuLi9ub2RlX21vZHVsZXMvcGF0cnVuL3BhdHJ1bi50cyJdLCJuYW1lcyI6WyJrZXkiLCJhY2MiLCJvIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBRUEsUUFBTSxTQUFOLE1BQU0sT0FBSztNQUlULFlBQVksU0FBMEI7QUFGdEMsYUFBQSxPQUFlO0FBR2IsYUFBSyxTQUFTLENBQUE7QUFFZCxZQUFJLFFBQVEsU0FBUztBQUNuQixjQUFJLFVBQVUsTUFBTSxRQUFRLE9BQU8sSUFBSSxVQUFVLENBQUMsT0FBTztBQUV6RCxrQkFBUSxRQUFRLENBQUMsUUFBTztBQUN0QixpQkFBSyxPQUFPLEdBQUcsSUFBSSxLQUFLLEdBQUcsS0FBSyxNQUFNLEdBQUcsQ0FBQztVQUM1QyxDQUFDOztNQUVMO01BRUEsTUFBTSxLQUFRO0FBQ1osZUFBTyxRQUFRLE9BQU8sT0FBTyxNQUFNLEdBQUc7TUFDeEM7TUFFQSxNQUFNLFFBQVc7QUFDZixZQUFJLFNBQVMsS0FBSztBQUNsQixlQUFPLEtBQUssTUFBTSxNQUFNLElBQUksS0FBSztNQUNuQztNQUVBLE1BQU0sS0FBUTtBQUNaLGNBQU0sS0FBSztBQUNYLFlBQUksV0FBVztBQUNmLFlBQUksVUFBVSxPQUFPLEtBQUssS0FBSyxNQUFNO0FBRXJDLGlCQUFTLElBQUksR0FBRyxJQUFJLFFBQVEsVUFBVSxDQUFDLFVBQVUsS0FBSztBQUNwRCxxQkFBVyxDQUFDLENBQUMsS0FBSyxPQUFPLFFBQVEsQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHOztBQUUvQyxlQUFPO01BQ1Q7TUFFQSxHQUFHLEtBQVE7QUFDVCxZQUFJLFFBQVEsS0FBSztBQUNmLGlCQUFPOztBQUdULFlBQUksYUFBYSxPQUFPO0FBQ3hCLFlBQ0UsYUFBYSxjQUNiLGFBQWEsY0FDYixjQUFjLGNBQ2QsZUFBZSxRQUNmLGVBQWUsUUFD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QUFHLEdBQUc7O1FBRTNCO0FBakVTO0FBbUVULFlBQUksSUFBUyxDQUFBO0FBQ2IsYUFBSyxLQUFLLEdBQUcsR0FBRyxDQUFBLENBQUU7QUFDbEIsZUFBTyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksSUFBSSxLQUFLLElBQUk7TUFDMUM7QUFFQSxXQUFLLFVBQVUsS0FBSztBQUVwQixXQUFLLFNBQVMsU0FBVSxRQUFXO0FBQ2pDLGVBQU8sS0FBSyxVQUNWLEtBQ0EsU0FBVSxNQUFXLEtBQVE7QUFDM0IsY0FBSSxlQUFlLE9BQU87QUFBSyxtQkFBTztBQUN0QyxpQkFBTztRQUNULEdBQ0EsTUFBTTtNQUVWO0FBRUEsYUFBTztJQUNUO0FBdGRTO0FBb2VBLFlBQUEsU0FBQTtBQVpULGFBQVMsS0FBSyxRQUFXO0FBQ3ZCLGFBQU8sSUFBSyxPQUFlLE1BQU07SUFDbkM7QUFGUztBQUlULFFBQUksZ0JBQWdCLE9BQU8sUUFBUTtBQUNqQyxhQUFPLFVBQVU7QUFDakIsYUFBTyxRQUFRLFNBQVM7QUFDeEIsYUFBTyxRQUFRLE1BQU0sTUFBQTs7QUFHdkIsWUFBQSxVQUFlIiwic291cmNlc0NvbnRlbnQiOlsiLyogQ29weXJpZ2h0IChjKSAyMDExLTIwMjAgUmljaGFyZCBSb2RnZXIsIE1JVCBMaWNlbnNlICovXG5cbmNsYXNzIEdleGVyIHtcbiAgZ2V4bWFwOiB7IFtrZXk6IHN0cmluZ106IFJlZ0V4cCB9XG4gIGRlc2M6IHN0cmluZyA9ICcnXG5cbiAgY29uc3RydWN0b3IoZ2V4c3BlYzogc3RyaW5nIHwgc3RyaW5nW10pIHtcbiAgICB0aGlzLmdleG1hcCA9IHt9XG5cbiAgICBpZiAobnVsbCAhPSBnZXhzcGVjKSB7XG4gICAgICBsZXQgZ2V4c3RycyA9IEFycmF5LmlzQXJyYXkoZ2V4c3BlYykgPyBnZXhzcGVjIDogW2dleHNwZWNdXG5cbiAgICAgIGdleHN0cnMuZm9yRWFjaCgoc3RyKSA9PiB7XG4gICAgICAgIHRoaXMuZ2V4bWFwW3N0cl0gPSB0aGlzLnJlKHRoaXMuY2xlYW4oc3RyKSlcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgZG9kZ3kob2JqOiBhbnkpIHtcbiAgICByZXR1cm4gbnVsbCA9PSBvYmogfHwgTnVtYmVyLmlzTmFOKG9iailcbiAgfVxuXG4gIGNsZWFuKGdleGV4cDogYW55KSB7XG4gICAgbGV0IGdleHN0ciA9ICcnICsgZ2V4ZXhwXG4gICAgcmV0dXJuIHRoaXMuZG9kZ3koZ2V4ZXhwKSA/ICcnIDogZ2V4c3RyXG4gIH1cblxuICBtYXRjaChzdHI6IGFueSkge1xuICAgIHN0ciA9ICcnICsgc3RyXG4gICAgbGV0IGhhc21hdGNoID0gZmFsc2VcbiAgICBsZXQgZ2V4c3RycyA9IE9iamVjdC5rZXlzKHRoaXMuZ2V4bWFwKVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBnZXhzdHJzLmxlbmd0aCAmJiAhaGFzbWF0Y2g7IGkrKykge1xuICAgICAgaGFzbWF0Y2ggPSAhIXRoaXMuZ2V4bWFwW2dleHN0cnNbaV1dLmV4ZWMoc3RyKVxuICAgIH1cbiAgICByZXR1cm4gaGFzbWF0Y2hcbiAgfVxuXG4gIG9uKG9iajogYW55KSB7XG4gICAgaWYgKG51bGwgPT0gb2JqKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIGxldCB0eXBlb2Zfb2JqID0gdHlwZW9mIG9ialxuICAgIGlmIChcbiAgICAgICdzdHJpbmcnID09PSB0eXBlb2Zfb2JqIHx8XG4gICAgICAnbnVtYmVyJyA9PT0gdHlwZW9mX29iaiB8fFxuICAgICAgJ2Jvb2xlYW4nID09PSB0eXBlb2Zfb2JqIHx8XG4gICAgICBvYmogaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgICBvYmogaW5zdGFuY2VvZiBSZWdFeHBcbiAgICApIHtcbiAgICAgIHJldHVybiB0aGlzLm1hdGNoKG9iaikgPyBvYmogOiBudWxsXG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICAgIGxldCBvdXQgPSBbXVxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvYmoubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKCF0aGlzLmRvZGd5KG9ialtpXSkgJiYgdGhpcy5tYXRjaChvYmpbaV0pKSB7XG4gICAgICAgICAgb3V0LnB1c2gob2JqW2ldKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gb3V0XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBvdXRvYmo6IGFueSA9IHt9XG4gICAgICBmb3IgKGxldCBwIGluIG9iaikge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcCkpIHtcbiAgICAgICAgICBpZiAodGhpcy5tYXRjaChwKSkge1xuICAgICAgICAgICAgb3V0b2JqW3BdID0gb2JqW3BdXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gb3V0b2JqXG4gICAgfVxuICB9XG5cbiAgZXNjKGdleGV4cDogYW55KSB7XG4gICAgbGV0IGdleHN0ciA9IHRoaXMuY2xlYW4oZ2V4ZXhwKVxuICAgIGdleHN0ciA9IGdleHN0ci5yZXBsYWNlKC9cXCovZywgJyoqJylcbiAgICBnZXhzdHIgPSBnZXhzdHIucmVwbGFjZSgvXFw/L2csICcqPycpXG4gICAgcmV0dXJuIGdleHN0clxuICB9XG5cbiAgZXNjcmVnZXhwKHJlc3RyOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gcmVzdHIgPyAoJycgKyByZXN0cikucmVwbGFjZSgvWy1bXFxde30oKSorPy4sXFxcXF4kfCNcXHNdL2csICdcXFxcJCYnKSA6ICcnXG4gIH1cblxuICByZShnczogc3RyaW5nKTogUmVnRXhwIHwgYW55IHtcbiAgICBpZiAoJycgPT09IGdzIHx8IGdzKSB7XG4gICAgICBncyA9IHRoaXMuZXNjcmVnZXhwKGdzKVxuXG4gICAgICAvLyB1c2UgW1xcc1xcU10gaW5zdGVhZCBvZiAuIHRvIG1hdGNoIG5ld2xpbmVzXG4gICAgICBncyA9IGdzLnJlcGxhY2UoL1xcXFxcXCovZywgJ1tcXFxcc1xcXFxTXSonKVxuICAgICAgZ3MgPSBncy5yZXBsYWNlKC9cXFxcXFw/L2csICdbXFxcXHNcXFxcU10nKVxuXG4gICAgICAvLyBlc2NhcGVzICoqIGFuZCAqP1xuICAgICAgZ3MgPSBncy5yZXBsYWNlKC9cXFtcXFxcc1xcXFxTXFxdXFwqXFxbXFxcXHNcXFxcU1xcXVxcKi9nLCAnXFxcXConKVxuICAgICAgZ3MgPSBncy5yZXBsYWNlKC9cXFtcXFxcc1xcXFxTXFxdXFwqXFxbXFxcXHNcXFxcU1xcXS9nLCAnXFxcXD8nKVxuXG4gICAgICBncyA9ICdeJyArIGdzICsgJyQnXG5cbiAgICAgIHJldHVybiBuZXcgUmVnRXhwKGdzKVxuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgZ2V4c3RycyA9IE9iamVjdC5rZXlzKHRoaXMuZ2V4bWFwKVxuICAgICAgcmV0dXJuIDEgPT0gZ2V4c3Rycy5sZW5ndGggPyB0aGlzLmdleG1hcFtnZXhzdHJzWzBdXSA6IHsgLi4udGhpcy5nZXhtYXAgfVxuICAgIH1cbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIGxldCBkID0gdGhpcy5kZXNjXG4gICAgcmV0dXJuICcnICE9IGQgPyBkIDogKHRoaXMuZGVzYyA9ICdHZXhbJyArIE9iamVjdC5rZXlzKHRoaXMuZ2V4bWFwKSArICddJylcbiAgfVxuXG4gIGluc3BlY3QoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9TdHJpbmcoKVxuICB9XG59XG5cbmZ1bmN0aW9uIEdleChnZXhzcGVjOiBzdHJpbmcgfCBzdHJpbmdbXSk6IEdleGVyIHtcbiAgcmV0dXJuIG5ldyBHZXhlcihnZXhzcGVjKVxufVxuXG5pZiAoJ3VuZGVmaW5lZCcgIT09IHR5cGVvZiBtb2R1bGUpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSBHZXhcbiAgbW9kdWxlLmV4cG9ydHMuR2V4ID0gR2V4XG59XG5cbmV4cG9ydCBkZWZhdWx0IEdleFxuXG5leHBvcnQgeyBHZXggfVxuIixudWxsLCIvKiBDb3B5cmlnaHQgKGMpIDIwMTMtMjAyMiBSaWNoYXJkIFJvZGdlciwgTUlUIExpY2Vuc2UgKi9cblxuLy8gVE9ETzogbWF0Y2hlcnMgc2hvdWxkIGFjY2VwdCBzdHJpbmdbXSBvZiBrZXkgbmFtZXMgLSBvbmx5IG9wZXJhdGUgb24gdGhlc2Uga2V5c1xuXG4vLyBUT0RPOiBleHBvc2Ugd2FsayBhcyBtZXRob2QgZm9yIGdlbmVyYWwgcHVycG9zZVxuXG5pbXBvcnQgeyBHZXggfSBmcm9tICdnZXgnXG5cbmltcG9ydCB7XG4gIE1hdGNoZXIsXG4gIE1hdGNoVmFsdWUsXG4gIEdleE1hdGNoZXIsXG4gIEludGVydmFsTWF0Y2hlcixcbn0gZnJvbSAnLi9saWIvbWF0Y2hlcnMnXG5cbmZ1bmN0aW9uIFBhdHJ1bihjdXN0b20/OiBhbnkpIHtcbiAgY3VzdG9tID0gY3VzdG9tIHx8IHt9XG5cbiAgdmFyIHNlbGY6IGFueSA9IHt9XG4gIHZhciB0b3A6IGFueSA9IHt9XG5cbiAgbGV0IG1hdGNoZXJzOiBNYXRjaGVyW10gPSBbXVxuXG4gIGlmIChjdXN0b20uZ2V4KSB7XG4gICAgbWF0Y2hlcnMucHVzaChuZXcgR2V4TWF0Y2hlcigpKVxuICB9XG5cbiAgaWYgKGN1c3RvbS5pbnRlcnZhbCkge1xuICAgIG1hdGNoZXJzLnB1c2gobmV3IEludGVydmFsTWF0Y2hlcigpKVxuICB9XG5cbiAgLy8gUHJvdmlkZSBpbnRlcm5hbCBzZWFyY2ggb3JkZXIgc3RydWN0dXJlXG4gIHNlbGYudG9wID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0b3BcbiAgfVxuXG4gIHNlbGYuYWRkID0gZnVuY3Rpb24gKHBhdDogYW55LCBkYXRhOiBhbnkpIHtcbiAgICBwYXQgPSB7IC4uLnBhdCB9XG5cbiAgICB2YXIgY3VzdG9taXplciA9XG4gICAgICAnZnVuY3Rpb24nID09PSB0eXBlb2YgY3VzdG9tID8gY3VzdG9tLmNhbGwoc2VsZiwgcGF0LCBkYXRhKSA6IG51bGxcblxuICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMocGF0KVxuICAgICAgLmZpbHRlcigoa2V5KSA9PiBudWxsICE9IHBhdFtrZXldKVxuICAgICAgLnNvcnQoKVxuXG4gICAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHBhdFtrZXldID0gU3RyaW5nKHBhdFtrZXldKVxuICAgIH0pXG5cbiAgICB2YXIga2V5bWFwOiBhbnkgPSB0b3BcbiAgICB2YXIgdmFsbWFwOiBhbnlcblxuICAgIC8vIFBhcnRpYWwgbWF0Y2hlcyByZXR1cm4gbmV4dCB3aWRlciBtYXRjaCAtIHNlZSBwYXJ0aWFsLW1hdGNoIHRlc3QuXG4gICAgLy8gVHJhdmVyc2UgdGhlIGtleSBwYXRoIChrZXlzIGFyZSBvcmRlcmVkKSwgaW5zZXJ0IHByZXNlcnZlcyBvcmRlci5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdMJywgaSwga2V5cy5sZW5ndGgpXG5cbiAgICAgIHZhciBrZXkgPSBrZXlzW2ldXG4gICAgICB2YXIgZml4ID0gcGF0W2tleV1cblxuICAgICAgbGV0IG12OiBNYXRjaFZhbHVlIHwgdW5kZWZpbmVkID0gbWF0Y2hlcnMucmVkdWNlKFxuICAgICAgICAobSwgdCkgPT4gbSB8fCB0Lm1ha2Uoa2V5LCBmaXgpLFxuICAgICAgICB1bmRlZmluZWRcbiAgICAgIClcblxuICAgICAgLy8gaWYgKG12KSBtdi52YWwkID0gZml4XG5cbiAgICAgIHZhbG1hcCA9IGtleW1hcC52XG5cbiAgICAgIC8vIGNvbnNvbGUubG9nKCdTMCcsa2V5LGZpeCxrZXltYXAsdmFsbWFwKVxuXG4gICAgICAvLyBBbiBleGlzdGluZyBrZXlcbiAgICAgIGlmICh2YWxtYXAgJiYga2V5ID09IGtleW1hcC5rKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdTMS1hJylcbiAgICAgICAgLy8gYWRkX212KGtleW1hcCwga2V5LCBtdilcblxuICAgICAgICBpZiAobXYpIHtcbiAgICAgICAgICB2YXIgZyA9IChrZXltYXAuZyA9IGtleW1hcC5nIHx8IHt9KVxuICAgICAgICAgIHZhciBnYSA9IChnW2tleV0gPSBnW2tleV0gfHwgW10pXG4gICAgICAgICAgbXYgPSAoZ2EuZmluZCgoZ212OiBNYXRjaFZhbHVlKSA9PiBnbXYuc2FtZShtdikpIHx8XG4gICAgICAgICAgICAoZ2EucHVzaChtdiksIG12KSkgYXMgTWF0Y2hWYWx1ZVxuICAgICAgICAgIGtleW1hcCA9IG12LmtleW1hcCB8fCAobXYua2V5bWFwID0ge30pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAga2V5bWFwID0gdmFsbWFwW2ZpeF0gfHwgKHZhbG1hcFtmaXhdID0ge30pXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gRW5kIG9mIGtleSBwYXRoIHJlYWNoZWQsIHNvIHRoaXMgaXMgYSBuZXcga2V5LCBvcmRlcmVkIGxhc3RcbiAgICAgIGVsc2UgaWYgKCFrZXltYXAuaykge1xuICAgICAgICBrZXltYXAuayA9IGtleVxuICAgICAgICBrZXltYXAudiA9IHt9XG5cbiAgICAgICAgaWYgKG12KSB7XG4gICAgICAgICAgdmFyIGcgPSAoa2V5bWFwLmcgPSBrZXltYXAuZyB8fCB7fSlcbiAgICAgICAgICB2YXIgZ2EgPSAoZ1trZXldID0gZ1trZXldIHx8IFtdKVxuICAgICAgICAgIG12ID0gKGdhLmZpbmQoKGdtdjogTWF0Y2hWYWx1ZSkgPT4gZ212LnNhbWUobXYpKSB8fFxuICAgICAgICAgICAgKGdhLnB1c2gobXYpLCBtdikpIGFzIE1hdGNoVmFsdWVcbiAgICAgICAgICBrZXltYXAgPSBtdi5rZXltYXAgfHwgKG12LmtleW1hcCA9IHt9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGtleW1hcCA9IGtleW1hcC52W2ZpeF0gPSB7fVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIEluc2VydCBrZXkgb3JkZXJzIGJlZm9yZSBuZXh0IGV4aXN0aW5nIGtleSBpbiBwYXRoLCBzbyBpbnNlcnRcbiAgICAgIGVsc2UgaWYgKGtleSA8IGtleW1hcC5rKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdTMS1jJywga2V5LCBrZXltYXAuaylcbiAgICAgICAgdmFyIHMgPSBrZXltYXAuc1xuICAgICAgICB2YXIgZyA9IGtleW1hcC5nXG5cbiAgICAgICAga2V5bWFwLnMgPSB7XG4gICAgICAgICAgazoga2V5bWFwLmssXG4gICAgICAgICAgLy8gc2s6IGtleW1hcC5zayxcbiAgICAgICAgICB2OiBrZXltYXAudixcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzKSB7XG4gICAgICAgICAga2V5bWFwLnMucyA9IHNcbiAgICAgICAgfVxuICAgICAgICBpZiAoZykge1xuICAgICAgICAgIGtleW1hcC5zLmcgPSBnXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoa2V5bWFwLmcpIHtcbiAgICAgICAgICBrZXltYXAuZyA9IHt9XG4gICAgICAgIH1cblxuICAgICAgICBrZXltYXAuayA9IGtleVxuICAgICAgICBrZXltYXAudiA9IHt9XG5cbiAgICAgICAgaWYgKG12KSB7XG4gICAgICAgICAgdmFyIGcgPSAoa2V5bWFwLmcgPSBrZXltYXAuZyB8fCB7fSlcbiAgICAgICAgICB2YXIgZ2EgPSAoZ1trZXldID0gZ1trZXldIHx8IFtdKVxuICAgICAgICAgIG12ID0gKGdhLmZpbmQoKGdtdjogTWF0Y2hWYWx1ZSkgPT4gZ212LnNhbWUobXYpKSB8fFxuICAgICAgICAgICAgKGdhLnB1c2gobXYpLCBtdikpIGFzIE1hdGNoVmFsdWVcbiAgICAgICAgICBrZXltYXAgPSBtdi5rZXltYXAgfHwgKG12LmtleW1hcCA9IHt9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGtleW1hcCA9IGtleW1hcC52W2ZpeF0gPSB7fVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIEZvbGxvdyBzdGFyIHBhdGhcbiAgICAgIGVsc2Uge1xuICAgICAgICBrZXltYXAgPSBrZXltYXAucyB8fCAoa2V5bWFwLnMgPSB7fSlcblxuICAgICAgICAvLyBOT1RFOiBjdXJyZW50IGtleSBpcyBzdGlsbCBub3QgaW5zZXJ0ZWRcbiAgICAgICAgaS0tXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHZvaWQgMCAhPT0gZGF0YSAmJiBrZXltYXApIHtcbiAgICAgIGtleW1hcC5kID0gZGF0YVxuICAgICAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICAgICAga2V5bWFwLmYgPVxuICAgICAgICAgICdmdW5jdGlvbicgPT09IHR5cGVvZiBjdXN0b21pemVyID8gY3VzdG9taXplciA6IGN1c3RvbWl6ZXIuZmluZFxuICAgICAgICBrZXltYXAuciA9XG4gICAgICAgICAgJ2Z1bmN0aW9uJyA9PT0gdHlwZW9mIGN1c3RvbWl6ZXIucmVtb3ZlID8gY3VzdG9taXplci5yZW1vdmUgOiB2b2lkIDBcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc2VsZlxuICB9XG5cbiAgc2VsZi5maW5kZXhhY3QgPSBmdW5jdGlvbiAocGF0OiBhbnkpIHtcbiAgICByZXR1cm4gc2VsZi5maW5kKHBhdCwgdHJ1ZSlcbiAgfVxuXG4gIHNlbGYuZmluZCA9IGZ1bmN0aW9uIChwYXQ6IGFueSwgZXhhY3Q6IGFueSwgY29sbGVjdDogYW55KSB7XG4gICAgaWYgKG51bGwgPT0gcGF0KSByZXR1cm4gbnVsbFxuXG4gICAgdmFyIGtleW1hcDogYW55ID0gdG9wXG4gICAgdmFyIGRhdGE6IGFueSA9IHZvaWQgMCA9PT0gdG9wLmQgPyBudWxsIDogdG9wLmRcbiAgICB2YXIgZmluYWxmaW5kID0gdG9wLmZcbiAgICB2YXIga2V5ID0gbnVsbFxuICAgIHZhciBzdGFycyA9IFtdXG4gICAgdmFyIGZvdW5ka2V5czogYW55ID0ge31cbiAgICB2YXIgcGF0bGVuID0gT2JqZWN0LmtleXMocGF0KS5sZW5ndGhcbiAgICB2YXIgY29sbGVjdGlvbiA9IFtdXG5cbiAgICBpZiAodm9pZCAwICE9PSB0b3AuZCkge1xuICAgICAgY29sbGVjdGlvbi5wdXNoKHRvcC5kKVxuICAgIH1cblxuICAgIGRvIHtcbiAgICAgIGtleSA9IGtleW1hcC5rXG5cbiAgICAgIGlmIChrZXltYXAudikge1xuICAgICAgICB2YXIgdmFsID0gcGF0W2tleV1cblxuICAgICAgICAvLyBNYXRjaGluZyBvcGVyYXRpb24gaXMgZWl0aGVyIHN0cmluZyBlcXVhbGl0eSAoYnkgcHJvcCBsb29rdXApXG4gICAgICAgIC8vIG9yIGdleCBtYXRjaC5cblxuICAgICAgICB2YXIgbmV4dGtleW1hcCA9IGtleW1hcC52W3ZhbF1cblxuICAgICAgICBpZiAoIW5leHRrZXltYXAgJiYga2V5bWFwLmcgJiYga2V5bWFwLmdba2V5XSkge1xuICAgICAgICAgIHZhciBnYSA9IGtleW1hcC5nW2tleV1cbiAgICAgICAgICBmb3IgKHZhciBnaSA9IDA7IGdpIDwgZ2EubGVuZ3RoOyBnaSsrKSB7XG4gICAgICAgICAgICBpZiAoZ2FbZ2ldLm1hdGNoKHZhbCkpIHtcbiAgICAgICAgICAgICAgbmV4dGtleW1hcCA9IGdhW2dpXS5rZXltYXBcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV4dGtleW1hcCkge1xuICAgICAgICAgIGZvdW5ka2V5c1trZXldID0gdHJ1ZVxuXG4gICAgICAgICAgaWYgKGtleW1hcC5zKSB7XG4gICAgICAgICAgICBzdGFycy5wdXNoKGtleW1hcC5zKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGRhdGEgPSB2b2lkIDAgPT09IG5leHRrZXltYXAuZCA/IChleGFjdCA/IG51bGwgOiBkYXRhKSA6IG5leHRrZXltYXAuZFxuXG4gICAgICAgICAgaWYgKGNvbGxlY3QgJiYgdm9pZCAwICE9PSBuZXh0a2V5bWFwLmQpIHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb24ucHVzaChuZXh0a2V5bWFwLmQpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZmluYWxmaW5kID0gbmV4dGtleW1hcC5mXG4gICAgICAgICAga2V5bWFwID0gbmV4dGtleW1hcFxuICAgICAgICB9XG5cbiAgICAgICAgLy8gbm8gbWF0Y2ggZm91bmQgZm9yIHRoaXMgdmFsdWUsIGZvbGxvdyBzdGFyIHRyYWlsXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGtleW1hcCA9IGtleW1hcC5zXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGtleW1hcCA9IG51bGxcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICBudWxsID09IGtleW1hcCAmJlxuICAgICAgICAwIDwgc3RhcnMubGVuZ3RoICYmXG4gICAgICAgIChudWxsID09IGRhdGEgfHwgKGNvbGxlY3QgJiYgIWV4YWN0KSlcbiAgICAgICkge1xuICAgICAgICBrZXltYXAgPSBzdGFycy5wb3AoKVxuICAgICAgfVxuICAgIH0gd2hpbGUgKGtleW1hcClcblxuICAgIGlmIChleGFjdCkge1xuICAgICAgaWYgKE9iamVjdC5rZXlzKGZvdW5ka2V5cykubGVuZ3RoICE9PSBwYXRsZW4pIHtcbiAgICAgICAgZGF0YSA9IG51bGxcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWYgdGhlcmUncyByb290IGRhdGEsIHJldHVybiBhcyBhIGNhdGNoIGFsbFxuICAgICAgaWYgKG51bGwgPT0gZGF0YSAmJiB2b2lkIDAgIT09IHRvcC5kKSB7XG4gICAgICAgIGRhdGEgPSB0b3AuZFxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChmaW5hbGZpbmQpIHtcbiAgICAgIGRhdGEgPSBmaW5hbGZpbmQuY2FsbChzZWxmLCBwYXQsIGRhdGEpXG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbGxlY3QgPyBjb2xsZWN0aW9uIDogZGF0YVxuICB9XG5cbiAgc2VsZi5yZW1vdmUgPSBmdW5jdGlvbiAocGF0OiBhbnkpIHtcbiAgICB2YXIga2V5bWFwID0gdG9wXG4gICAgdmFyIGRhdGEgPSBudWxsXG4gICAgdmFyIGtleVxuICAgIHZhciBwYXRoID0gW11cblxuICAgIGRvIHtcbiAgICAgIGtleSA9IGtleW1hcC5rXG5cbiAgICAgIC8vIGNvbnNvbGUubG9nKCdrZXltYXAgdiBnJywga2V5bWFwLnYsIGtleW1hcC5nKVxuICAgICAgaWYgKGtleW1hcC52IHx8IGtleW1hcC5nKSB7XG4gICAgICAgIGlmIChrZXltYXAudikge1xuICAgICAgICAgIHZhciBuZXh0a2V5bWFwID0ga2V5bWFwLnZbcGF0W2tleV1dXG5cbiAgICAgICAgICBpZiAobmV4dGtleW1hcCkge1xuICAgICAgICAgICAgcGF0aC5wdXNoKHsga206IGtleW1hcCwgdjogcGF0W2tleV0gfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobnVsbCA9PSBuZXh0a2V5bWFwICYmIGtleW1hcC5nKSB7XG4gICAgICAgICAgbGV0IG12czogTWF0Y2hWYWx1ZVtdID0ga2V5bWFwLmdba2V5XSB8fCBbXVxuICAgICAgICAgIGZvciAobGV0IG12aSA9IDA7IG12aSA8IG12cy5sZW5ndGg7IG12aSsrKSB7XG4gICAgICAgICAgICAvLyBUT0RPOiBzaG91bGQgcGFyc2UhXG4gICAgICAgICAgICBpZiAobXZzW212aV0uZml4ID09PSBwYXRba2V5XSkge1xuICAgICAgICAgICAgICBwYXRoLnB1c2goeyBrbToga2V5bWFwLCB2OiBwYXRba2V5XSwgbXY6IG12c1ttdmldIH0pXG4gICAgICAgICAgICAgIG5leHRrZXltYXAgPSBtdnNbbXZpXS5rZXltYXBcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV4dGtleW1hcCkge1xuICAgICAgICAgIGRhdGEgPSBuZXh0a2V5bWFwLmRcbiAgICAgICAgICBrZXltYXAgPSBuZXh0a2V5bWFwXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAga2V5bWFwID0ga2V5bWFwLnNcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAga2V5bWFwID0gbnVsbFxuICAgICAgfVxuICAgIH0gd2hpbGUgKGtleW1hcClcblxuICAgIGlmICh2b2lkIDAgIT09IGRhdGEpIHtcbiAgICAgIHZhciBwYXJ0ID0gcGF0aFtwYXRoLmxlbmd0aCAtIDFdXG4gICAgICBpZiAocGFydCAmJiBwYXJ0LmttICYmIHBhcnQua20udikge1xuICAgICAgICB2YXIgcG9pbnQgPSBwYXJ0LmttLnZbcGFydC52XSB8fCAocGFydC5tdiAmJiBwYXJ0Lm12LmtleW1hcClcbiAgICAgICAgaWYgKHBvaW50ICYmICghcG9pbnQuciB8fCBwb2ludC5yKHBhdCwgcG9pbnQuZCkpKSB7XG4gICAgICAgICAgZGVsZXRlIHBvaW50LmRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIHZhbHVlcyBjYW4gYmUgdmVyYmF0aW0sIGdsb2IsIG9yIGFycmF5IG9mIGdsb2JzXG4gIHNlbGYubGlzdCA9IGZ1bmN0aW9uIChwYXQ6IGFueSwgZXhhY3Q6IGJvb2xlYW4pIHtcbiAgICBwYXQgPSBwYXQgfHwge31cblxuICAgIGZ1bmN0aW9uIGRlc2NlbmQoa2V5bWFwOiBhbnksIG1hdGNoOiBhbnksIG1pc3Npbmc6IGFueSwgYWNjOiBhbnkpIHtcbiAgICAgIGlmIChrZXltYXAudikge1xuICAgICAgICB2YXIga2V5ID0ga2V5bWFwLmtcbiAgICAgICAgdmFyIGdleHZhbCA9IEdleChcbiAgICAgICAgICBwYXQgPyAobnVsbCA9PSBwYXRba2V5XSA/IChleGFjdCA/IG51bGwgOiAnKicpIDogcGF0W2tleV0pIDogJyonXG4gICAgICAgIClcbiAgICAgICAgdmFyIGl0ZXJtYXRjaCA9IHsgLi4ubWF0Y2ggfVxuICAgICAgICB2YXIgaXRlcm1pc3NpbmcgPSB7IC4uLm1pc3NpbmcgfVxuICAgICAgICB2YXIgbmV4dGtleW1hcFxuXG4gICAgICAgIGZvciAodmFyIHZhbCBpbiBrZXltYXAudikge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHZhbCA9PT0gcGF0W2tleV0gfHxcbiAgICAgICAgICAgICghZXhhY3QgJiYgbnVsbCA9PSBwYXRba2V5XSkgfHxcbiAgICAgICAgICAgIGdleHZhbC5vbih2YWwpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB2YXIgdmFsaXRlcm1hdGNoID0geyAuLi5pdGVybWF0Y2ggfVxuICAgICAgICAgICAgdmFsaXRlcm1hdGNoW2tleV0gPSB2YWxcblxuICAgICAgICAgICAgdmFyIHZhbGl0ZXJtaXNzaW5nID0geyAuLi5pdGVybWlzc2luZyB9XG4gICAgICAgICAgICBkZWxldGUgdmFsaXRlcm1pc3Npbmdba2V5XVxuXG4gICAgICAgICAgICBuZXh0a2V5bWFwID0ga2V5bWFwLnZbdmFsXVxuXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIDAgPT09IE9iamVjdC5rZXlzKHZhbGl0ZXJtaXNzaW5nKS5sZW5ndGggJiZcbiAgICAgICAgICAgICAgbmV4dGtleW1hcCAmJlxuICAgICAgICAgICAgICBuZXh0a2V5bWFwLmRcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBhY2MucHVzaCh7XG4gICAgICAgICAgICAgICAgbWF0Y2g6IHZhbGl0ZXJtYXRjaCxcbiAgICAgICAgICAgICAgICBkYXRhOiBuZXh0a2V5bWFwLmQsXG4gICAgICAgICAgICAgICAgZmluZDogbmV4dGtleW1hcC5mLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobmV4dGtleW1hcCAmJiBudWxsICE9IG5leHRrZXltYXAudikge1xuICAgICAgICAgICAgICBkZXNjZW5kKFxuICAgICAgICAgICAgICAgIG5leHRrZXltYXAsXG4gICAgICAgICAgICAgICAgeyAuLi52YWxpdGVybWF0Y2ggfSxcbiAgICAgICAgICAgICAgICB7IC4uLnZhbGl0ZXJtaXNzaW5nIH0sXG4gICAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBuZXh0a2V5bWFwID0ga2V5bWFwLnNcbiAgICAgICAgaWYgKG5leHRrZXltYXApIHtcbiAgICAgICAgICBkZXNjZW5kKG5leHRrZXltYXAsIHsgLi4uaXRlcm1hdGNoIH0sIHsgLi4uaXRlcm1pc3NpbmcgfSwgYWNjKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGFjYyA9IFtdXG5cbiAgICBpZiAodG9wLmQpIHtcbiAgICAgIGFjYy5wdXNoKHtcbiAgICAgICAgbWF0Y2g6IHt9LFxuICAgICAgICBkYXRhOiB0b3AuZCxcbiAgICAgICAgZmluZDogdG9wLmYsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGRlc2NlbmQodG9wLCB7fSwgeyAuLi5wYXQgfSwgYWNjKVxuICAgIHJldHVybiBhY2NcbiAgfVxuXG4gIHNlbGYudG9TdHJpbmcgPSBmdW5jdGlvbiAoZmlyc3Q6IGFueSwgc2Vjb25kOiBhbnkpIHtcbiAgICB2YXIgdHJlZSA9IHRydWUgPT09IGZpcnN0ID8gdHJ1ZSA6ICEhc2Vjb25kXG5cbiAgICB2YXIgZHN0ciA9XG4gICAgICAnZnVuY3Rpb24nID09PSB0eXBlb2YgZmlyc3RcbiAgICAgICAgPyBmaXJzdFxuICAgICAgICA6IGZ1bmN0aW9uIChkOiBhbnkpIHtcbiAgICAgICAgICAgIHJldHVybiAnZnVuY3Rpb24nID09PSB0eXBlb2YgZCA/ICc8JyArIGQubmFtZSArICc+JyA6ICc8JyArIGQgKyAnPidcbiAgICAgICAgICB9XG5cbiAgICBmdW5jdGlvbiBpbmRlbnQobzogYW55LCBkOiBhbnkpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZDsgaSsrKSB7XG4gICAgICAgIG8ucHVzaCgnICcpXG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHN0cjogYW55W10gPSBbXVxuXG4gICAgZnVuY3Rpb24gd2FsayhuOiBhbnksIG86IGFueSwgZDogYW55LCB2czogYW55KSB7XG4gICAgICB2YXIgdnNjXG5cbiAgICAgIGlmICh2b2lkIDAgIT09IG4uZCkge1xuICAgICAgICBvLnB1c2goJyAnICsgZHN0cihuLmQpKVxuXG4gICAgICAgIHN0ci5wdXNoKHZzLmpvaW4oJywgJykgKyAnIC0+ICcgKyBkc3RyKG4uZCkpXG4gICAgICB9XG5cbiAgICAgIGlmIChuLmspIHtcbiAgICAgICAgby5wdXNoKCdcXG4nKVxuICAgICAgICBpbmRlbnQobywgZClcbiAgICAgICAgby5wdXNoKG4uayArICc6JylcbiAgICAgIH1cblxuICAgICAgaWYgKG4udiB8fCBuLnMgfHwgbi5nKSB7XG4gICAgICAgIGQrK1xuICAgICAgfVxuXG4gICAgICBpZiAobi52KSB7XG4gICAgICAgIC8vIGQrK1xuICAgICAgICB2YXIgcGEgPSBPYmplY3Qua2V5cyhuLnYpLnNvcnQoKVxuXG4gICAgICAgIGZvciAodmFyIHBpID0gMDsgcGkgPCBwYS5sZW5ndGg7IHBpKyspIHtcbiAgICAgICAgICB2YXIgcCA9IHBhW3BpXVxuICAgICAgICAgIG8ucHVzaCgnXFxuJylcbiAgICAgICAgICBpbmRlbnQobywgZClcbiAgICAgICAgICBvLnB1c2gocCArICcgLT4nKVxuXG4gICAgICAgICAgdnNjID0gdnMuc2xpY2UoKVxuICAgICAgICAgIHZzYy5wdXNoKG4uayArICc9JyArIHApXG5cbiAgICAgICAgICB3YWxrKG4udltwXSwgbywgZCArIDEsIHZzYylcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAobi5nKSB7XG4gICAgICAgIHZhciBwYSA9IE9iamVjdC5rZXlzKG4uZykuc29ydCgpXG5cbiAgICAgICAgZm9yICh2YXIgcGkgPSAwOyBwaSA8IHBhLmxlbmd0aDsgcGkrKykge1xuICAgICAgICAgIHZhciBtdnMgPSBuLmdbcGFbcGldXVxuXG4gICAgICAgICAgZm9yICh2YXIgbXZpID0gMDsgbXZpIDwgbXZzLmxlbmd0aDsgbXZpKyspIHtcbiAgICAgICAgICAgIHZhciBtdiA9IG12c1ttdmldXG5cbiAgICAgICAgICAgIG8ucHVzaCgnXFxuJylcbiAgICAgICAgICAgIGluZGVudChvLCBkKVxuICAgICAgICAgICAgby5wdXNoKG12LmZpeCArICcgfj4nKVxuXG4gICAgICAgICAgICB2c2MgPSB2cy5zbGljZSgpXG4gICAgICAgICAgICB2c2MucHVzaChuLmsgKyAnficgKyBtdi5maXgpXG5cbiAgICAgICAgICAgIHdhbGsobXYua2V5bWFwLCBvLCBkICsgMSwgdnNjKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAobi5zKSB7XG4gICAgICAgIG8ucHVzaCgnXFxuJylcbiAgICAgICAgaW5kZW50KG8sIGQpXG4gICAgICAgIG8ucHVzaCgnfCcpXG5cbiAgICAgICAgdnNjID0gdnMuc2xpY2UoKVxuICAgICAgICB3YWxrKG4ucywgbywgZCArIDEsIHZzYylcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgbzogYW55ID0gW11cbiAgICB3YWxrKHRvcCwgbywgMCwgW10pXG4gICAgcmV0dXJuIHRyZWUgPyBvLmpvaW4oJycpIDogc3RyLmpvaW4oJ1xcbicpXG4gIH1cblxuICBzZWxmLmluc3BlY3QgPSBzZWxmLnRvU3RyaW5nXG5cbiAgc2VsZi50b0pTT04gPSBmdW5jdGlvbiAoaW5kZW50OiBhbnkpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoXG4gICAgICB0b3AsXG4gICAgICBmdW5jdGlvbiAoX2tleTogYW55LCB2YWw6IGFueSkge1xuICAgICAgICBpZiAoJ2Z1bmN0aW9uJyA9PT0gdHlwZW9mIHZhbCkgcmV0dXJuICdbRnVuY3Rpb25dJ1xuICAgICAgICByZXR1cm4gdmFsXG4gICAgICB9LFxuICAgICAgaW5kZW50XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIHNlbGZcbn1cblxuZnVuY3Rpb24gbWFrZShjdXN0b206IGFueSkge1xuICByZXR1cm4gbmV3IChQYXRydW4gYXMgYW55KShjdXN0b20pXG59XG5cbmlmICgndW5kZWZpbmVkJyAhPT0gdHlwZW9mIG1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cyA9IG1ha2VcbiAgbW9kdWxlLmV4cG9ydHMuUGF0cnVuID0gUGF0cnVuXG4gIG1vZHVsZS5leHBvcnRzLkdleCA9IEdleFxufVxuXG5leHBvcnQgZGVmYXVsdCBtYWtlXG5cbmV4cG9ydCB7IFBhdHJ1biwgR2V4IH1cbiJdfQ==
|