From e84db7283fba5957104fd9ae58185061a2fcb505 Mon Sep 17 00:00:00 2001 From: Carl Hartzell Date: Thu, 29 Jun 2023 14:21:30 +0200 Subject: [PATCH] feat: First commit for OS --- .eslintrc.js | 37 + .github/workflows/publish-npm.yml | 33 + .github/workflows/release-please.yml | 19 + .gitignore | 4 + CONTRIBUTING.md | 15 + LICENSE | 29 +- README.md | 68 + docs/examples/flow.json | 169 + docs/images/sinch-voice-api-nodes.png | Bin 0 -> 304004 bytes package-lock.json | 8532 +++++++++++++++++ package.json | 40 + src/api/index.html | 0 src/api/index.js | 5 + src/api/voice-api.js | 33 + .../application/application.html | 55 + .../application/application.js | 313 + .../locales/en-US/application.html | 20 + .../locales/en-US/application.json | 5 + src/constants.js | 3 + src/nodes/ace/ace.html | 45 + src/nodes/ace/ace.js | 47 + src/nodes/ace/locales/en-US/ace.html | 44 + src/nodes/ace/locales/en-US/ace.json | 6 + src/nodes/call/call.html | 175 + src/nodes/call/call.js | 254 + src/nodes/call/icons/voice_call.svg | 9 + src/nodes/call/locales/en-US/call.html | 67 + src/nodes/call/locales/en-US/call.json | 19 + src/nodes/dtmf/dtmf.html | 51 + src/nodes/dtmf/dtmf.js | 38 + src/nodes/dtmf/icons/dtmf.svg | 9 + src/nodes/dtmf/locales/en-US/dtmf.html | 41 + src/nodes/dtmf/locales/en-US/dtmf.json | 5 + src/nodes/incoming/icons/incoming.svg | 9 + .../incoming/images/example-incoming-call.png | Bin 0 -> 46993 bytes src/nodes/incoming/incoming.html | 58 + src/nodes/incoming/incoming.js | 37 + .../incoming/locales/en-US/incoming.html | 77 + .../incoming/locales/en-US/incoming.json | 6 + src/utils/get-params.js | 196 + src/utils/helpers.js | 27 + src/utils/is-empty.js | 7 + src/utils/rest-client.js | 50 + src/utils/validators.js | 34 + src/utils/voice-node.js | 104 + src/utils/wait-for.js | 7 + 46 files changed, 10775 insertions(+), 27 deletions(-) create mode 100644 .eslintrc.js create mode 100644 .github/workflows/publish-npm.yml create mode 100644 .github/workflows/release-please.yml create mode 100644 .gitignore create mode 100644 CONTRIBUTING.md create mode 100644 README.md create mode 100644 docs/examples/flow.json create mode 100644 docs/images/sinch-voice-api-nodes.png create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 src/api/index.html create mode 100644 src/api/index.js create mode 100644 src/api/voice-api.js create mode 100644 src/configuration-nodes/application/application.html create mode 100644 src/configuration-nodes/application/application.js create mode 100644 src/configuration-nodes/application/locales/en-US/application.html create mode 100644 src/configuration-nodes/application/locales/en-US/application.json create mode 100644 src/constants.js create mode 100755 src/nodes/ace/ace.html create mode 100755 src/nodes/ace/ace.js create mode 100644 src/nodes/ace/locales/en-US/ace.html create mode 100755 src/nodes/ace/locales/en-US/ace.json create mode 100755 src/nodes/call/call.html create mode 100755 src/nodes/call/call.js create mode 100644 src/nodes/call/icons/voice_call.svg create mode 100644 src/nodes/call/locales/en-US/call.html create mode 100755 src/nodes/call/locales/en-US/call.json create mode 100755 src/nodes/dtmf/dtmf.html create mode 100755 src/nodes/dtmf/dtmf.js create mode 100644 src/nodes/dtmf/icons/dtmf.svg create mode 100644 src/nodes/dtmf/locales/en-US/dtmf.html create mode 100755 src/nodes/dtmf/locales/en-US/dtmf.json create mode 100644 src/nodes/incoming/icons/incoming.svg create mode 100644 src/nodes/incoming/images/example-incoming-call.png create mode 100755 src/nodes/incoming/incoming.html create mode 100755 src/nodes/incoming/incoming.js create mode 100644 src/nodes/incoming/locales/en-US/incoming.html create mode 100755 src/nodes/incoming/locales/en-US/incoming.json create mode 100644 src/utils/get-params.js create mode 100644 src/utils/helpers.js create mode 100644 src/utils/is-empty.js create mode 100644 src/utils/rest-client.js create mode 100644 src/utils/validators.js create mode 100644 src/utils/voice-node.js create mode 100644 src/utils/wait-for.js diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..6ca06de --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,37 @@ +module.exports = { + extends: [ + 'plugin:prettier/recommended', + 'plugin:security/recommended', + ], + plugins: [ + 'html' + ], + parserOptions: { + ecmaVersion: 2018, + sourceType: 'module', + ecmaFeatures: { + jsx: true, + }, + }, + rules: { + 'prefer-const': 'error', + 'react/prop-types': 'off', + 'react/display-name': 'off', + 'security/detect-object-injection': 'off', + 'no-unused-vars': 2, + 'no-undef': 2, + 'prettier/prettier': 'off', + 'semi': 2 + }, + globals: { + Cypress: true, + RED: true, + $: true + }, + env: { + 'amd': true, + 'node': true, + 'es6': true, + 'jest': true, + } +}; diff --git a/.github/workflows/publish-npm.yml b/.github/workflows/publish-npm.yml new file mode 100644 index 0000000..ceda636 --- /dev/null +++ b/.github/workflows/publish-npm.yml @@ -0,0 +1,33 @@ +# This workflow will run tests using node and then publish a package to GitHub Packages when a release is created +# For more information see: https://docs.github.com/en/actions/publishing-packages/publishing-nodejs-packages + +name: Node.js Package + +on: + release: + types: [created] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 16 + - run: npm ci + - run: npm test + + publish-npm: + needs: build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 16 + registry-url: https://registry.npmjs.org/ + - run: npm ci + - run: npm publish + env: + NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml new file mode 100644 index 0000000..a9d3076 --- /dev/null +++ b/.github/workflows/release-please.yml @@ -0,0 +1,19 @@ +on: + push: + branches: + - main + +permissions: + contents: write + pull-requests: write + +name: release-please + +jobs: + release-please: + runs-on: ubuntu-latest + steps: + - uses: google-github-actions/release-please-action@v3 + with: + release-type: node + package-name: "@sinch/node-red-voice-api" \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9eb5e49 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +node_modules +.DS_Store +.vscode + diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..8ee280b --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,15 @@ +## Contributing to @sinch/node-red-voice-api +All contributions are welcome. Here are some guidelines you must follow. + +### Raising an issue +Raise the issue on the project's issue tracker and make sure that the issue hasn't been raised before. +Try to be as clear as possible in the description of your issue. +Include what Node-RED version and node.js version you're running. +Also, if possible, include a small example flow that can be used to reproduce the issue. + +### Feature request +For now, features are requested by raising an issue on the project. + +### Pull request +For pull-requests, make sure that the commit message follows the [Conventional Commits 1.0.0](https://www.conventionalcommits.org/en/v1.0.0/) specification. +If the pull-request relates to an issue, also include the issue number (#issuenumber) in the commit message. \ No newline at end of file diff --git a/LICENSE b/LICENSE index 261eeb9..b9b9d2a 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ - Apache License +Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -173,29 +173,4 @@ incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. + END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..e9dd904 --- /dev/null +++ b/README.md @@ -0,0 +1,68 @@ +# @sinch/node-red-voice-api + +A package of nodes for [Node-RED](https://nodered.org) which allows you to connect, initiate and receive voice calls through the Sinch Voice API. For more information about the Sinch Voice API and how to get started, see the [documentation](https://developers.sinch.com/docs/voice/getting-started/). + +![Sinch Voice API](docs/images/sinch-voice-api-nodes.png) + +## Installation + +The first step is to install [Node-RED](https://nodered.org/docs/getting-started/local). + +``` +$ sudo npm install -g node-red +``` + +> Compatible with Node-Red version 3.x.x and later + +The second step is to install the package. You can either install it directly using the Palette Manager. Instructions can be found here: [Node-RED](https://nodered.org/docs/user-guide/runtime/adding-nodes). + +Or install manually using npm: + +Navigate to the Node-RED installation and install the package: + +``` +$ cd ~/.node-red +$ npm install @sinch/node-red-voice-api +``` + +Run Node-RED locally: +``` +$ node-red +``` + +This will start a server for Node-RED on [http://127.0.0.1:1880/](http://127.0.0.1:1880/). + +If the installation of the node package was successful, the Sinch Voice API nodes should be available in the node palette to the left, under the category "Sinch Voice". + +## Get started +After you've installed Node-RED and the @sinch/node-red-voice-api package you can start building your flow. To get you started we provide an example [flows.json](docs/examples/flow.json) containing the essentials for initiating and receiving voice calls. To import the flows.json file, open Node-RED in the brower and select the hamburger menu in the top right corner. Choose "Import" and press "select a file to import". The flow file will then be imported on a tab called "Example flow". + +The flow.json contains two separate flow examples. For each of the flows there exists a comment node containing additional information about the configuration required to test it out. + +### Testing +If you're running Node-RED locally on localhost and want to test receiving voice calls and events, we recommend using a tool like [Ngrok](https://ngrok.com/). This tool allow you to expose your localhost to the internet and makes it possible to route callback events to Node-RED. This is also a useful for testing the native Http-in node provided by Node-RED. + +## More about the nodes +This package contains the following four nodes: + +### Incoming Call node +Handles and routes inbound voice calls from the Sinch Voice API for a specific application and Sinch number. + +In order to receive calls from the Sinch Voice APi, you need to configure a Callback URL on the voice application in the [Sinch dashboard](https://dashboard.sinch.com/voice/apps). The path should be: <node-red-path>/sinch-voice-api/callback. + +### Voice Call node +Initiates an outbound voice call using the Sinch Voice API. + +In order to initiate calls from the Sinch Voice APi, you need to configure a Callback URL on the voice application in the [Sinch dashboard](https://dashboard.sinch.com/voice/apps). The path should be: <node-red-path>/sinch-voice-api/callback. + +### DTMF Answer +Captures the DTMF (Dual Tone Multi Frequency) keypad (0-9, * and #) input from the user response. + +### Answered Call Event (ACE) +Stores a SVAML for a call (inbound or outbound) in case of an ACE (Answered Call Event). + +## Contributing +See, [CONTRIBUTING.md](CONTRIBUTING.md). + +## Copyright and license +Copyright Sinch AB, https://sinch.com under the [Apache 2.0 license](LICENSE). \ No newline at end of file diff --git a/docs/examples/flow.json b/docs/examples/flow.json new file mode 100644 index 0000000..51e6528 --- /dev/null +++ b/docs/examples/flow.json @@ -0,0 +1,169 @@ +[ + { + "id": "352c14c5878acfd8", + "type": "tab", + "label": "Sinch Voice API", + "disabled": false, + "info": "" + }, + { + "id": "de31144f.01d448", + "type": "sinch-voice-incoming-call", + "z": "352c14c5878acfd8", + "application": "", + "endpoint": "", + "svaml": "{\"instructions\":[],\"action\":{\"name\":\"RunMenu\",\"barge\":true,\"menus\":[{\"id\":\"main\",\"mainPrompt\":\"#tts[Welcome to Sinch. You have two options, press 1 or 2]\",\"options\":[{\"dtmf\":\"1\",\"action\":\"return(option1)\"},{\"dtmf\":\"2\",\"action\":\"return(option2)\"}]}]}}", + "x": 550, + "y": 400, + "wires": [ + [ + "87e5a492.af0318", + "550945e2.9863cc" + ] + ] + }, + { + "id": "87e5a492.af0318", + "type": "sinch-voice-dtmf", + "z": "352c14c5878acfd8", + "action": "option1", + "svaml": "{ \"instructions\": [ { \"name\": \"say\", \"text\": \"Hello, this is a text-to-speech message.\", \"locale\": \"en-US\" } ]}", + "x": 970, + "y": 360, + "wires": [ + [ + "101f0ef8.fe6f51" + ] + ] + }, + { + "id": "550945e2.9863cc", + "type": "sinch-voice-dtmf", + "z": "352c14c5878acfd8", + "action": "option2", + "svaml": "{\n \"instructions\": [\n {\n \"name\": \"say\",\n \"text\": \"Hello, this is a text-to-speech message.\",\n \"locale\": \"en-US\"\n }\n ]\n}", + "x": 970, + "y": 440, + "wires": [ + [ + "c72328f1.fba0e8" + ] + ] + }, + { + "id": "101f0ef8.fe6f51", + "type": "debug", + "z": "352c14c5878acfd8", + "name": "debug node", + "tosidebar": true, + "console": false, + "tostatus": false, + "complete": "true", + "targetType": "full", + "statusVal": "", + "statusType": "auto", + "x": 1250, + "y": 360, + "wires": [] + }, + { + "id": "c72328f1.fba0e8", + "type": "debug", + "z": "352c14c5878acfd8", + "name": "debug node", + "tosidebar": true, + "console": false, + "tostatus": false, + "complete": "true", + "targetType": "full", + "statusVal": "", + "statusType": "auto", + "x": 1250, + "y": 440, + "wires": [] + }, + { + "id": "e6feda7a.90f418", + "type": "sinch-voice-call", + "z": "352c14c5878acfd8", + "name": "sinch-voice-call node", + "application": "", + "destinationEndpoint": "", + "cli": "", + "destinationType": "number", + "svaml": "", + "text": "Hello, this is a message from Sinch", + "dtmf": "", + "prompts": "", + "messageType": "text", + "locale": "en-US", + "debug": false, + "x": 825, + "y": 615, + "wires": [ + [ + "9c065b1e.5fb728" + ], + [ + "fa63809f.86565" + ] + ] + }, + { + "id": "7efd3e1e.c036c", + "type": "inject", + "z": "352c14c5878acfd8", + "name": "inject node", + "props": [ + { + "p": "", + "v": "", + "vt": "str" + } + ], + "repeat": "", + "crontab": "", + "once": false, + "onceDelay": 1, + "topic": "", + "x": 540, + "y": 615, + "wires": [ + [ + "e6feda7a.90f418" + ] + ] + }, + { + "id": "9c065b1e.5fb728", + "type": "debug", + "z": "352c14c5878acfd8", + "name": "debug node", + "tosidebar": true, + "console": false, + "tostatus": false, + "complete": "payload", + "targetType": "msg", + "statusVal": "", + "statusType": "auto", + "x": 1070, + "y": 580, + "wires": [] + }, + { + "id": "fa63809f.86565", + "type": "debug", + "z": "352c14c5878acfd8", + "name": "debug node", + "tosidebar": true, + "console": false, + "tostatus": false, + "complete": "payload", + "targetType": "msg", + "statusVal": "", + "statusType": "auto", + "x": 1070, + "y": 640, + "wires": [] + } +] \ No newline at end of file diff --git a/docs/images/sinch-voice-api-nodes.png b/docs/images/sinch-voice-api-nodes.png new file mode 100644 index 0000000000000000000000000000000000000000..d48ee45eef08e6db87f8be2a0051b0b29fec181a GIT binary patch literal 304004 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%0D2An>Jm!83F;j&4r2Gs_xB*ra)ajyX zTp@Ie-sdus?9z}|)LX}gJO0WzwTw4xm!=gaw~P!|k|z!saw^N)bZF?`f5ga9>X zxEK|~2wNT*2B5*ZLr+00$DCtX#%V9Xx)JuN5kdQu6}Etpahw%} zQ>9PwZG6l45vdHJ0~KZl zkF>h_0o(kmx>6CSH|&L62!}f~bE{(S?#N)Ax+@2deYXH}hMo1X_E0!ltJ@yi~6toPFM8|`6E z^=m>+`;`cyOoUaYmdiB);g{_3Ojg}X3HHtf8RjTI?XYBE#c~D&x13Za#}jfgdQMJ1 zXwtfNN()O-KDN zm?j!#&JWvWwGz>0RA7>jL%YGEJ3W)**{Zr4xsjzru8#rNs-rSPQ#7L>YV_e}hf;uO z-utgw)p+i-d5e}n+)2cP(1|VBc0ziY$p2Zc9jlsAjj(Qn+J#PArX1I%##BqnCkctqYWO zUpr;Wt zJBhx!1q<uv^6QG4}=`zGS=d)3V+aAUsXe*7~K=L(igaUb0$y-F z3&D@efZK{hmfVAwqiRbBH3YZ8%UBNj z;W5|sRJyPb@BANUEcM}2X0c6A;)pLPo8Dk<1NclRSCk5V>H@(lbGb+gT`9Ui;e-fg z`I>LoYKF>fL1$kG>t5H$@4<6xP~Z^am}K< zgskRjPvUT{z2b%yuJO_L4=I{gzk_=OfBBzDy^V<;CN10%9q5-c2Map##4C4m`5OfE zDkEp+H*cUKfWL1?$NR$fk}#gJ3?tI1RZw-cBl44cn8hS*C)uQN8pg;#Z^2PA{)Ec3 z1?Phv>0d!h@MGdU`;MGHs^*h1);ForBrOSNezk5hs^&_Hb_lem8z_{XjZ}7CQci<* zc%P7BS;>SQyi`fR#y>{^7lNy)MsZL`RTQ5s_e6BK#Ym@e&r-5`o^2_DC6T%Nh&1s2K za#o{u4K4EB-@6ZOkxVaGW&R|`RiBmcFWb?IPU+eD4_PiHuJT6DMN0FZdaxHm<6f92uk*7Fo)*z>Jgp1vRBR|s%NY{Pxj9FZb%ROG zz2WDtbwY!!P{p}5FM>owSfSJh37pSlmP^yKhMy*R^a5xbR*fSiUsQAN$lb(5n62~T z!l4|`=e?sicfEYe_gnUyk&&pdahc(~bV1%V0Q_ABP-D7@23?liO!uDDCU0yg4z!D3 zhGSxKIrEIVQZb9eg#6T0EtbZwyS*9!VxbV!S8Cdtg0@Ut-Sq^gJ(b=)DzKqS$oiNK z@p54YsPzOfw^T*q1i?z^NDKqy!eV_9ZuP>sNs~JUX>m})8=Mu_C4*2#gKgi6dSWoK zX+Rfp|B1c=2RYqK2=R}zm-_rn-2A4RPY*b#-xzZ;2^0GeH`4A&w0+o6TKv=slg>)G zMb~S|Sr!#Ha*nko-7b`qnZ0qGtn{Rpd-tW1h%mEPzrHR)Sp~lQ=4vQ91=}z+oJmoz zji^dpq`8bW0uM4SdO_tt&|QL%TP)!lD~ptXO-+1Q>6*mv?-1PTR}6*Wl7DKbs%DAe z>VwZCth4mH<7wei8IW>s+oV+HBT0OKptJWP@*>(ot!fVpJ^E_h`PJ~VCFb}^ve$~& z3U^kLV~NIPCAg}m<#i9r+%_4V1=ir|!s{tD6NlpZmfX{4G@f;OxpDl+Fc4BZg{%-0 z^RM=#mdBbFfNF0M^s;Y3u0KOvzo}_w_t`JyYNf>4jHC2~6LQd9pc1!I<$U*?1)s|- zN{a5X({bfk@>4V$MhI|DtJ&lad{>AsxX8BfK-fTr%>n&D+q!-OU65@>SbyjkG1cT% z%$JchoHGpPd1YhBiO}aV4e$kck^z+3uQiS`?<+cQPvY*qbi0+{>E&l>A#?s^$;z-@ zq3PFxy-C-If_!Nsf1m!{-iEtv^|^nz)5w%AK%1JWfwabX;4Xm7Y@n%cEC3#pUfp`M zYzJ*_^7GRteEU@@glb29cMqxv6dn=DH=vpttd&&Vg7kj8tPXj`W{#^DVYg>*+x$P{ zU%?&>Y?v~hmRPUK;%u78ogix=r2=nVB8U@<<)_Xg{IQRVh> z1@5uHk1VX$8gxq8*&8N4uTaIORO;=HiX_qJ+oYh1UC!3JuNdDo*p-61uA6W!j$*Za zQ>66`F_aDV1>sEsQ^JC9ZWAK~790n=jUe`|{$jpmGdrjg*$W3%t2^;7 zcM%1XZiTzPwB!Vr+EazHyb&7C*8>eu>HrE7u;F#`*Rb@zK1OsG@i68sx4nBT!)_u{ zFNt6b7a4-n33La?F6|T-$u>a|FEzf{35%Vb{DsR^v|gl4^raN5Ce@4M+jo)c0yieP>!+vwmd za8Zt8OIdcc_s0Hq)hl$5)!Ex0eVSs4>nBq{Ztu0K)q_En8lbb?5$&t$F#Z!kRTC7p zi#(ZKw`o+E${N1Pz3d7NYx?{Oz;_)Mo)wfs81!5gogl;yn3_dXpa}$9Waj5)GQBeA z32hZDyQ&+^wUuCg=`E5&di;owf$B#MpqRTS?nB@pp%n-nfS`4~1#`n+-?Nv6M z#yC$K@h-uAgan{WhJD8yraI-6>Bhm2^y%Yx#1h0uR&CKiKmPWw?iQYDF+q&Fr6c1T zpnxYNqY20T?x#j8;U#^>Ci`%qqr9>AFgoG1jenhI&@GUw__PHD6#GRl! z6Waz5qfBDgyh@NYOk{`vYaxFH1N>H&^u!U;F`RmHFNF4lI$`c zLjd5l!!_sfB7-ymb6&E)SN%Lh*n|8W4_*FR4u&>??>&Ux3qqSqRzGnI%Xf$fdz-xv z-0WNZQ@QGGrIkM4um_X6n~7C+uP)ymxIn#za1^L44Y3L&`sX&JmK+WYqcF_#gi*U4 z>uS|4HVf*N5U%>DMo;k)F~c_;F%mtz7v`x9J8G2bGL^-bL##ouX#Mb!iy2Bpvm|rQ zP69bm)xdJ5G014-F6+79QN0NA)(a{4&Xt@r6L36+q?pYWPp1<=gzS!ES(Fy@EdxG` z83%fzQg&2fMXGIo6Kd@s`9i|(y}ls7EacmF4NfVI@BCNecE>Bh7cHk1ePTSD%FLrfXzP5+e=eHaGSQlnLNr*aL6 znAWxM21n{nXVDj9W^`ByLDz7>>upU6%udzWf^y>{!IPM&w3Ikd@MoykYZs4-0SW{e z-(1bYE;kjc`tG1u%OQxY>lZp_okkXNhBv-pCEv#5-+$)TlRajt(Y@-lIMcKM0znQx z2THFVj$bbl4@ZB1xtx~R9Thk>dz}2qZO=i*+$AU`&o7Nr@bz5v`D;c18Y}@^t};D1 z4@2;BrEdGNWZ@XU|B<}zd?oLCGbRffLPSF0J9U$d42NOUZ8=SJ25LZhuTTP1;F7^q z0NeWL30J&~NAd^uDQVy29_H_6x$h}Dk>gH787F10Scgpo!F?zj5Wz*D_>4trsA>N(dqf#;40voy2v{L3)ja7I$Prbho zz-!d+`iNCNT^lqd)}Hs6Z6|hFfS}7iKNLxZ^t>o98|0YQ!Om?2NCSrDByewqfFz=! zzW-y*$vIsw!b0VYelUpvM)E=^G!;I~fEZ^(-%U;omaKs^=PlaCAlt~`qQ@uryWBis zo?dv|6=jgRIKFzjUs!P{1gFL<@5d=L00rB=Ibu_>w^_#?w18?wM=5+95p-T(Zf%tE zi?z>-Bz$>Kpmy)vE-fOGE|CA^aNaoA(n>chY=DVUAeR~Wg3BBSBGa6meHJlrd@+XnwSom8Z&pi>K3LZEW~Od-2~< ziweZkIpBOAtD3rz9tj9fT$0M3t99Y!$S&`7&@PDjA<^A)Ow^SoqGQ^V1$+}Ib^_&Q z>=$IOZmi2`vF%OHG!RT{u9QaKqXH9OcV^%Cq4c^udcLiKa6Vk7v~Xer7i6mOb3x%R zZsF(}oN7E2#AX$Xo&IxG&to6AQD+lGlGh})Q96M&}aZm zbHaZ8R%-c0=BrmuRd7$MQ~-+5{;x2n+W&NO|4N;ji-!>x^gjAPR#lo}Zws*982pBf z<@dY(gXjLgW#C3%0hFe>fW_GVke~Zs7N%0FukLl+*2csi3@2QO;tB949=SBd6)mvv zPpZDV>qws>qTO;V5A*!}&h&q3Upfh@Trzk0(1i_9j9OfSE?-^{VnE zyw3}?v_F{*GTIB)EIM-MMW^Y4nQ)8a$DRtgvK_RGXU_hlA3zksJ8&sKuU+(%uGbav zg?q8Kfg;h~*>@MJk54Y0?l0B4EC*D{%a2wi2f^FwZ^Q>wP!FaGG~#hJ{;YMIDbq){ zfdah7-7szAST#5yPDD)CtBrVQ1mV+(0^wXlr($)krG0f6KNiED0D#}Cfo8Zln3w?+ zNivlt!d-J+zkdsW;yN}{jl0-8@YM#|k5b~| z4)Zg5c3RVq-Wz7P3WeYdX&$j(^pb^kT6a(7zrXkf=Ftiq|EXc7JdAnw{RdsLdaG!R zebBZ>xcX|t3K7M&;A?H|1Zk^NaWN6xOhn3r;AR1p8@#ymFqW$1@LD7 zZ>HAZxZ>q9{Re9z2oc!)KO6yc_h3X+yon>dx}B#1qd-;YXtT$~C{PS7!2_(b?@+1V zzyCZ5*beU$K9^_oC3OaxMp5Dg5bVWQh%$HyT()`%f?n<`bv6vYrZ<49aVED6g}(=U z|6Qc2A7End&~DT^`BphqMSVvtfKrW4fTXho)b`pgx5R3u4Jf4#A)po4ylAHXogWcM z&p})QYCw+wuFMlUOSNxUGeC8*qNYWDHeES){Eq;b#Y?T(QWPr5=`S$74l0W(^VzoY z&Dl0ZzsZsm&PG7KK__4)cif+=ei@p~W~$%{q#4m})!vK;0_&c|Z@BvjuiU>H=zmv- zf1dR_XZrt$d+WHUzqM^tkZuDJkWdt)6_ik522oHcMY_8~NvVMm0YwQxItEa>yBP!} zr9`?xy1QoJtgpYl_p_hk#7)2&jW6OH3<0gvNnz$scrv-TKTXwzs88kZHtlRH|> z9nG!&hsgC$Ap}lL8wHl(A`pk~19leO1r6g5H_W>d^IO>^@uy&1YT@d+{@$#;IArj;+fpy_!XgEWQsdVw~cXO3~Fv!uND)&ZA}tjMgB ziaR_1o`>QZpj7?V%llB>N$>6&FSh8J`b~4(Qko2QZ3<#y1oY3~3!{?tzL;CRkK=PQ zW<+XB2`DhVeMd8WxQ2(~{JLH>J*KMX;(!cOPe`ZTH8Ioyek4(oXz~gnMDW^|V0N2N zN&>oi#fK!?UhZrk%`N{1}7){{h6KK7!>{WW5 z92>mjEhV8)4BwjtYP35ptC#xpys!`t?W+@C<$SUMAXVPx)k%*f>gP9K$=QE8asPnNwPO$ARDdfbJa7xm=T)=Z29K@%kfU*29p*aDYy02Xgut+iT=~hT|n{ei{i>mba^cg+UTH>67^lRNR$>1Xb3(yzup) zL>;oDf|BZ4PZMn;BpQI_d_*%OJx^Oc^b@QK4Vix`?{VCL3L0NPF8{hfLUZ=iC9#*! zUjly(BlDmT2*ssKKpZZV>)vz9tJ&35_t^Mmv>ya#?j;@!3YIv$PP9&P^=x%4xWBYl zg@&!q`NP1|eQ?@~QeLL4h9@@UiVD}DA12@<%472p#d#&{^OfXiPXkrYIE z?#0eJPvk6(AooW9Ao3ucx!~bdxjI!BmYEvTWBS$E)`jeUHRms8W;NazgBXy{0n^GC z5_ok;PXyDjPJRJOBY()(!ta1&A_pjU3zWvdFK4QBS!15P~D|p-(mG0Qd)LVM2;X*dYXBRscHW%GL9z90ee_K?{)AJ0r*IQ7_ zRmU#uWUW12<;J$sX2EI@JL0XLDS8!#J8AuSwK5fX+uUl|$J>X!d)N2E5iA2sj@mm=Pti&O+B4etC+K9J zYt%pUj5CwZEvkJ?`Gq_Tms4@PhYcwFDE0&$nh~IouJ<$|lz351K&6{>hr3m26OMhH z%5^6R@j&A-bGlxO@&k^adDmrIPVaC>XU@Mqq&4AmP5iSrSFO@(x%=ZiDK!w$!uPUH z6H$;rjuGA022$*vMr1OSk2((%);rMYdAv|Ji+8FA?l1T{vp-0-ZuiY6MCLw+$hji) zNmcSfgI8(xV*!1Cc{2h&S-F(U*i>Zw%Gs{=z*M^lx*RUToECrH04_8mnM!IE8Jnz4 z8f2pdHh|Ut7Fjn!(f;zDiX;Q=k&N&65HsY0!l*MS+5Fk zxBWrFOi;OClTLX_xtR`%;m0q>Hvt9s?nDa8lVjDfw*DCM4!%tniy7qwrX_=4n$0w9S@oG+gbp!6?Y z+;s;yPy-PBU-I7r%6bXYEKG_MBsG{s5;K#4(_<7D91vvv|;CZFleRNrL@z zC=E0jP}Ji-NXd1hFM|kqkG&xG8DLCN&m4>~W|WjlP0`ZH#HO4YPn7h*hh?1U8wPUp zp0*Jqqnz9Mw-S9Kx88EFGp=o;pwOt}qu04`%-HkE| zYKeadne3?Pc{;rWT_7W`A;5c(9RNy?X=dT#?-ypDZ~Q@V1kWPN25Cvbp?+5G&v4%2 zy1Cozvg+S~POAYJ0h|L%TIBX@D`xUNe@T0S_+7u9d7qf$j7J%@;G7^6#~`?}JPL?A zu8x2&P>}r#C|Zo@pZnsp-0=j9I2*TtIr_PtI4)S`8A-7neMru)O$s=H|Sx^+0|XP+*H-Kv)k1QiqM; z={vtY5c+|-S6}vyX?%O3=X8=-<+vw=zZ2Fz3S+0$ z!Pr)TE2#7PwSH2JATdzUV{q+SVOvltV zQSslEK>z$`hQi?}2~R`nFyLsF)r>f^YZNU60VXK~fWKXUH`v8OyWIyA&!+xZb*Smu zC}j;C2ILh_f2oGps5G0?_sT&g=3(U9pHL|K1UQm$>f{t>n;1g~K%4iE(5!{f(@59Gg~9vDn+R{CoEtSrw5 zch51`IbT{;^~*$i0l-HnoNx_bg6n|IoMhdBY9w_O_anT`;3^>L~*l*~km%TZ7fU zanBi?SVf~YUe^(zlA(hHZ-81){neESkiJ0;@*&m>Ab60@sGv%Z$dr3yhW&7gROhfT z4w9-}0#(c;sOZ|{1%R?FAF4U3Rx7#VfQKDaZcy{r?i=#7J>IFq?hf+{=it0Wz;37{ zY`*9TuDwZ!yGw}9bhjG4L&!jvSjb|4wsy`PxYSODq1Afg;ODf|$GZ)Z+$Yh&Lg~5g zqfle{h6i}`R8UMS2is!09J~h%159oxK>>*1`9@DXi!B1t&A%m#12QG^d&gIKJ?L6o zvp|*O!dWSANTatm>Y_(M6uLaB??YJ+fEHBQRXtn_KmZYxkkbTNa67y*}x+l<&d-Xi^LRR0Q|{`X7oU;j0c zl3?i8dgQJPaAvE6J z^QV>8R_>muyzv`LqCJk8o7Glf@5)lk3$W?_9xdq8W+jn^XfHETzyd(GZaU?EGuHb* z!^lHHvufA7Uij1O#=>?I^2hF2z2?*5VkC~a>tY+FRA$|0FrPQgY_#gSL*kg5Apb%Z z*DwO^2yHyBBg$p8+_wgVH8I}3i1s@GV(;38dK|~%&&hFqC-YK(7z(Km+ARd$8<=;w zob53X*=9F?yXS%hPt^|{LOP8=AMkMm$kx7f9s^&60f?Tbt)VuV$G5y^ zIm#9oGM-pT!}_K6{HoE&4@Lwt3C1Hc^caA-wou~e&;!9jNs1^51E4le0tTKh_JLfj zVR^8~p~n~n-JRQuz1-Cxi8RP5=_3PWVsj9c#ldKm3pJ1cx7Fkdchm7hrZf<;Z1|}j zDm79S;u#Oc=QeQhiUt*v@&)%fHfkA4NbF*)Rb z0Nr(lb;11*FazY{4p95H9ykqM(gm(AH^A*&z74wHtP-jEx&TU^_5gO99xs9S;9mxB zS{uNVuyN+x)vN1~=-TD40J+uet{cZ3Y&8JEB=c;0EM0`Qeaj61fh}80s3p!q_}+-t zED`SOpL}X`XE*aGDMf!=8l9E3y7x6QujiHpX6{)eX3crnMosPh`j(RiD7c_vnH+K_ zgs{pj)`YZ2v&Qbwk_((o*jQTdGJaGi9+3JCQI)PEfsm_qMs@8D2sDWKR z=6nM}nb`v*m6RBh7aqD{_&Q34rR-&6fw%zWf8GB`KSGkD6h4n=%bCi2COjBoek?M; zi{O;S!p>Y?%npC=F-V%w&%Y4Ty#`*l{s6HnX_=wfWV`;bF4)$^0)$fCY>EM(s?_$a zW2aL##^<8hT^om4S1zPZMrhfR_N2;_L-OmmO+aDP@;C-U_OG`78COLh%nRsd8y9i` zO+cg?@g|J5T1wcj*@m&O7hCxf;Im_NOz8 zvVr+}r74fS2MyX^jse?&0nb&C63ZsUhK!z5^e6~)a!AR21q!f(S0*&&RiOBAfI%tE zms=E3;_l8bL5^V5U(bWe^*aGF_+P1>C)mByqeMMS>yY|c$`xWKUQ!f!4s2^DA%`LN z$kbRZY$^ZT73nGQy3JrE45;xy;k8!EdXD3OR4Q(^CR{pymA>yuUxFad{OK zNuGa?x`~{$j+I9$5ib8IQ|3&=6@vxNC%bpD%cd_ zh~Yb=l(q{E^N4MI7n}s=g9>}N^G;>+H>Rxr<<+YPUD!2X(O};I1Bqfj;C;;Lrg1=? zeG~^dAlKV?0r^Kj2QYg|WKGamohepHm z5mC9X{Hd528r%sm(0Ly4-2lO=0f>efPru7%<8_CuSHtlJ*};$j5M7({4Ll}cWFN1C zn*9EC4%~mW4hhX}mVS9&6e;a0WQl6{DS&DTw289G0F=XMoiDjO6>0mDw0WisfTDcP zfw3^LliR(!0BvRI0Hv(kCz1{OXciZAi(i;Ku8!56x%C0ZE%#qXxfidqHh57uBA)17g7v$NSXf+L`*ku6_;0iT* z)Z#<9-Ut!4((YFanN&E4*5Lg6$du7_AYRo5LYAa^@__~xA`NaPl?U=YAJ;`dMhuTy z0m(2GsPPmj8hC+D7-?(WW&xy>FR}ynfO52H)xIrS*h`a(@N79FFk4l3oe6h+$S-y5ENDO9m9#Mjh^Oy#PNzLLa2DUWFhx%Im?mF#{A@_veViBH z`7)fYb{KZCUK(vhSJm_5Za3)uy~@|CSh~s+RgakISlTB0MSgL=jc%g^=Y6`OlBlLL z5iGqP42?JV`4O;T`hE`2G~!&B1~nt?R1b`%tde!zdvm=O|$>$!LeWuD3~fepEbDcaBal7^U=k-K(mV6C>1a^Yq^X z2>ogx|c9_q{;|AQR-!^tKGsqwKix%$7rKy^za@xyrTGj;Jm$}$q=*TC|4PUpLN$Bi% z>aBi{MDx7I4HZe;AxsUl!#Y(;gJYgZOQ3msUD&2^c_7fv=%{3K7Hw|rXglKH!{H00 z2AB7SIBfX4+&7{p(Rtr(k0@W@UcdtE*ZF!^CKBzsMR!YM)b8!r(#NlHse;>TXVtRg z?uWz1jQ(gY3w(wUd{woD_O+@;i5DOIj=6Z3Hve7F`{%W_d^B-V{M&~njfA&q+ z7xV=NydiJqV!iIpdY$H;>e+{^EykNwFg3TPt1j#<@p9~f(fv-$VbK+@?j-SdGa&FLC$vINwwF zB&^>5`Hven2yQLU<&AI(rYVM(mrpbzJtR<52t_0swID6rISOOo=x-{x*PtnQfN z8eEd>C(4=jHMX?LV{Kkh{y?`UK1Q_WQ^U6J+q&bz3?=1w-oWEo!W`|2A0Ay^%N+7C zSKnRWB?}8Lq`>9Jfki-45&C_n-59&9v>(;H5YI%FbPkW;P%lyOv=_r}R%T|X>(=Ze z4-b#nDjRe2kOu$VM+PN3b`OY?V3bF+wv~Ed>D$qH?G@LE)!x+l=gL@`TMFGo_a{XUW~F347gkniCR6ERoqaKz3(1Hom7Hba%l-7bJ%kH_eRFx} z(+s%nac_7O8AU~6Mdo-%UWKOqvu9z}u4_@}6Ve@>boHnZ?sHGOy>)JA>C`A9$}D5E zb-myU;r$Oir9Lf>xZFcvf0-U6&O1g%a_uK-3)LPa(U+O*-5hk9FpiwNaS92?_hi`b zvGEvI+qJ5p5jV9vJzS{=vzn=eYaNv4?e`y#JlxlH>f_iuu71);A^Y)UPd*Pb-K(*= zFMF+U2P;^JkO{9gsX6YXYiw1ly)9`desj~GPNC)N(??2(O3Bg{(H{GES;DHVU%Oj) z$EC26C_S~#fw2zJpH|auxb28j_@gvkHXcs0dN#Z6TV-#K-1~XSjdwquk<{7awqq$K zbL?&9?Qj3UKjK*6vFj&xaA-rGBNr@lTxo0fB=4IsiQ~1dG_6Btrww@1?fEqR(H~`= zMN;0orL_zc@4uEF)Ch)3Tvw2AX}EE2o)LECQD~T0sDy~ZVh)+t+#+UkvgJ<2^F`K! zAzrqW}urDeqU$dLjY39;9RL@s=YQ(>PQ;s3b$iR)#aBsgug|ea2 z{$sJdxpto+7CR?PGZwGICQAFs;tz!mCy%-_UsjH;@Sfa|5%>}M%}gcy$8+t;4YDk_ zdf4X__EwJE7(TY5p6>;bV5wnAvKRcWEv21`DaL#=FOX%M`-J?tl62zmiDjaU3)lYo2&ZVwhuqq|M=DC zRSp+Z-N?xloHOZ-+523bsXApS-glvD(0*UN!UK!qvvGJ=+2<+q*ktyzfq?VZkO-r< z8wHzhxzpN?`YzPmDQl|SEy`QDxi?qV@ius?S!K(?L;>7UyyO#7KgnL3Oyp&yb>CU0 z%Rr(-1Bf<)q|c#^%G_$geaFRIq! zoc*OH`zF(X+Txt?7s^yx$ZyvUDg>^$=T~p;Ue+j^xq*cFGceWAzKNp#-%C&%>dElHhv?=MuC~nA3^uaa=(v zLqftvEp10uwuG5N-=ZsB=Otb`1s021>VnMUl|rsv3nwwkBOMW&kD|H6c3MJe%*Q>$ zg`R7qS@`-}9g%G?q2VD>!AAl_9I=^hk$Pg1roX5J9V|lD1Km%;PVw=K%! zN>??wPYLZa3@bLd5V-Mn9q<=K_B4I_1_rMCd~IrS5eZ{1;xZ(%cCJ$-{`paO%_Yav z89hq({M8MK=U+ZbLic>~Wpvxt50kYIng>{iZ<}4>=ZvRwEnOXC!aa_*jO0%}|1n^! zQB?7Ri(|+`N_N(yIkUt>_0=H1LyqfV(Zbf!BK^{ux8HwG=Ke~P?ji4GxuNE>d}d4T zA$Ch^?&LZ(uWeT`#dTqGzhBPa^*NW_6v2N8gE64p)4&u)i?V#@aCF^l+t&1HLvYE&hJV(cC@sJBDIoWHqHZz zFe{TUL7KDUdCycetV&sI#Z%LZHT!HNcv$qrMu+@FBz4QU4s&$9>a5oohc&Ke?p*bd zu1kTV*b6`t;Hs~$@6?VP6G)2QGD#FG+AAp#YTGZhdOCM0j@KOQ5sGmrQN3qMxbBj7 zk@Msr((v4NkBvL5==;#p@M5Q2a2VFNWHX$FHfs2h!gliGZwlvktA>^>y$&nNm)}=cmmmD#HwYyjM-w{qsXAB;v{8A0gkR~xd+q+k z>nyi>NA4{5YhJz9!gffumzo6gv~Vxc|1bguwoTR=_xa;?=I-Zt+s;|pEm^5;_bejv z_OjE%h{l%t7C()ejM;(9T5MyJ@1Vh9xZNcu&Sli(S^JzKU-V_goH1U-+%c0{E7s>A z6eJHX45{F)xEg&v(6q@r=-z23=wmr5_e>bgTVvSODsT)EtJ?J}Vy;PW`T2xX>}j`~ zdfVJPvmhbVcs|#z_~G(hUThEhujZx;3PR&^?euJR*5X&Fu?96xHfO|Bk#%X=?hMh` zZs%`z%0JyMk!vL;sHBw4$Vo6O+y3%sb7p2Mdz8=fhcRu9>|@OJ(vLB5tf;DuD^{}F=(xLj{1#s0 z_G+E&OtFKr3_eO{hdlako-75mZMPSDVYMfAMm(4B1slz5j9j67X7(K2;{Ycc%2T!5 zeTZ&LA7qT*@wST7Y;|1O>Sb=WUghh>O(1wl&nhr+-kw`DdE=C4>5!sA`DE_rL0-A> zEBeg6M^cHx_(-pmn&@zcGdLEoG;mf70as2U2${|ZdE?d2*#0yFw8TJb*{9ew9%VX~ zxexoQ2I!y;YH1YFx})rv4zXhEgB}^#3J~oRUOf}=>KNcl>z^=m^L|RYQ4mUl8nIXQ zd4G%G6)(;4(Kn)_plE8GDru>tp;{H)i^7Y*~iu3H(Ij9m0@P4GB)MjX915sbsG(T zc-pI?qC!biiN~Gl-Ft;WE5Z{llH;8dyF@kau0)jTZcqNW`Wnxl{KOn@qD_(+-@dr4 z%Uvw^mnks|l(YQm*9S!#OgdNPMAfwc#*x}J>S8j_N6V`gu=6#_#-jw{nVGvTj&R_9 z@VEWp&8NNG!WbynF7>el$68&%F*N)}q3&mTb12buRN}gpe*sKy*zxeay0?of)NqW` zzmF2~4K3?BT|sb=FWVn|#W1*BSa0%zUqwHXBOeSSY-wv_d@0<>gwx^imeN1kT@mm) z_K-o37PxMiYS@2aJ>p&i6?&cb**A<&TpHT%=fI_l6VA=D`S?(HC3+jNh;8z7C(@XF%QAdyiXK{tN%4d4c}|TQK$N75-q6d(}r3 zW!X>Y3|K_nZJ(<&OK(49Cs_y>IVb#@oh7nRO_jv0oJm$o%*c2Y5D;JttQ)2_o^*1% zd6ABY;wvCSh>wMAMp$L2*CM((-M`(fz9%;2lAB5GX4!FYl|!(C+B9gD6D!Zmnb#h& zqQ&*O__O*Z9nX7PnpI}pR&YM44v;#30d{<7Afs?A&;fj|tkeXJeSYAX68*AfjJadz zs0Rq6*Z|cwvbwr@OmWuU517zDYYb-L2V{8%SN4W87o(u7!omdLknPO_G=+)dbspA} z4r&P((Z*>JvZk%3u4zxM-Zc{mKdztK$UlqI`6F>a`uP!Q6qyE+9v)y3=T@QV!2F=> zXJ6j~B%HR^aPE}a+ObQJUga7mC+BCE65G)`VB)46n&9|&I}O$XDE{CPe^!ip=UW6_ zmX(2ds=MSWD(L5aEap}{6DZ*o?-G@*C-`2cS0?RYIPIP;Gkl;43xF8wo4t7m71Pdy z(b+o|78Zq$3rbseo=`)P7~lKa8Xr<>6Bnlg@eyaY9flXLlu zIzW&)Mawg1?y?-}u?nUrjd5qMp7`eDXNl~EPE0sBheU>Zto-^@wtOJ zl&}ick$befT!dciWxiTX?`)hY^KT=Q-Y8pQ2KKfy0H(IGe z#Uf#yNlSDGotvuwhP#fpfVs2ZM*zKDaBXGo*IoQ>9w;jSXR2)xkrCZfwIjCt;`MRm zH`-81%^5}1O-kJM^&29*QB9ZLOcncMjB9s}bBV>kn)~=s0;UIs4dceA{IN1n&`^C# zOxUQA;#>%rHCjlDhX9i~Lcl4A@itI9XZ1X{yqxzy^v&PB00!Ql?0KEIfZ<=%@*%e1 z3m58t!LI=GlI22H$B$RW@0XoH{Q4mC3(TR21WKGIeR+EPUcmkcNRMo9O4b4Gg{*3x zuFWe?w^2yZun8C>tzgKi{3AKJTXPbCNWK}r=8@K5vTz3hM33*rngGFQY~i5NsUUYF zw`w&M^dedTA;7jifJs4)1OF)(v`+bf4(#K`saLn@tTkqF&12>tvkD6K5R5M84`*u> z$qlUappJ{R!LS*fc;@wTRjfNuO#K2P5-^43r}uQ_oy5yu0P(KnBj>YUgJ!7Pm*F{u zX_u>6j@SJ|V`HsSyIw$6M>Bv-vss45%5O_Z9JDCL7=bSNN1!Gun^Cgr%f8tJ=qGW_vHlZj~p45Ye z0HDqCKlsioXiAFIBGMs%?rn&@r^Kh>60b#?h* zM}wW3T$>AhUoW%k@VQscuao>WxHf>5O!29R!MtFSU< zoXp_ZQ83(UcC>f^A7xOFRb?9~vqO<(k|^;yV%+Kdzn|JNm|txJ*k+o0^QWZOM{^5`<bb(hw| z{qy5m_|NYPK{t_yOs5;Nr^`+plxp|FUxa>`{XFhau6n#b#pyb+#1byIvbwp)BFr4Mi!( zm;#G&g*cJRieekDKSo5fropfa5sNM>O(n;+YP&__S}Z+cO+Z=BK`plK?Xe)MC*be6 zG!A)RPHnvW1#AK$0J*Tsx-*M7EHv~g2S=Jo05s)(6YvLHf%%ou;jR3aK!6l|L%%K2 znZ;4J%E|c{$oFWAa)CmrpMvG4;cIi65Ky|XkcvDrV_{m_;h;QHQBi5BcHO#kvSHEE z{#TEYfC3wSN&DL2=InSs`}W@PJMQm8rn)D_dHoj^&ixeLpE1_(6yeQiD={DFj1*Cs zol{&{r?;BY^dbf~_h)0=(yRL!-nM2(VDvD&)Oygc-g7siQqyq(u$;o6xr)a8cgWVA z?hAPyI=TX?@bD$K{YihVS}?y!0Zbv%i(avJ>HybOgb_o>Q9WHPE9z)uPL2@fPOk6n zZMy=T-Vkbwi;JH@zMxEA9PG3`c3A0FU9`0`0F*AC&orJCJvfX93t>Zecxyc^V>+lF zQAr>V9?mU!A-l}^8|!Jbm|M$fz1ShO{hm|$lc`7TvM?FV;mu=u*IzAHL{++3i#SqR zb=qWFkNmBEb@E5HR@^~*Y$dU6_Ih2q+@#RkGHEoI)9Na}xm(pM@HLZcKSeR{2C9E8 zJM{I-;E~E(TDjFPAEM8go1mf3X7y~;TvRzhok5}z?)SAX;uQ3*+=n{|0c+b2**aCK zK%7L`P38h!ou5da<=dJ8K097oKw#kQVGI#NNL1AI!$pgwWse-Lbbe4xiV#XeHq363$ZS;cb?dlJY zLgVIdPQu*dKlxv4h3UrI)atrP##j&O@VX%^?X!2N-QHt%0_~sCb}_T$tc8b%OV&8e zE-`T+_AAaz>`ncD)hhghvMag0Gmz2zqCge5wD@PC7zvf z@HZlLB-3G!zTQ!)B+Q*#&t3cI=7;@JBbDX5YIBiOn{F1?%b%C^E{?`YpmP%nj;YLX z%`SewuI3yGP1(}u=iNczh!I*}Ur%+~fZ^<24|CM7&vAwRWv>0KsM=ct{Sw<|Uco=} z_2j(IdQD4TZOu>Gu-`lFZ*tP@kUXuqHk5@rHwAMu#!I!B9_ZJTP7QDU@Cu8EDvjyC-=c5lG5e?FAH)Q07%o1TgxWIwW_(= zoaEBE4kc5&1~73AAH;`?yADp%XKtxWc^&@Pwfu6W0??G%%y)Qbak>@%hW$_=gLnM{ z-|rMY{)3GKc2lxaVkbA|K?;{}AZ~Gt)f-Mi=xpN-5Aw{HX7JpRtg*D#e)XQ-CGdO2 z{#as1n=uJ%mmol*#2u!2aQ-g!_uvf(vn-e9_Y2Ri@$r?vUSDGR z&dlIjFEGx)PT8{HxGb!NgvEv9&1Wyu{j7D^5f#tTWR(`n<@E(kYr3q6m$Ry- zF8<&TzU>uR)|=P*c?J+`9g86GX9IqnmHSwv%h7U&m`)%k56?%YyUvcc-%pd=_x&66 zDu9@>9(-2uglnmgO!Gd@!)3o`vI$wEXeS1ejT$#{+;QoKrV zM*l_0t;5)R#JcpAvJcwA0Raf04%M!%ud&H9Ne(ESE;gE{_$yhvy}cKTHP8r{^ZHV1 zC&ErJk-FAgrLM8Dk=d8pP&rYjRBNoC^a259PyW4lh<$c3Tf66ce82V z2Y!o`X8&DkT6+zywZ{E;xZA9f1-1~+UV7X{!g5^^HoUgGv0BToRVoK`iI%zyhglgJ zAEu@Z>BZfOwSo2^l|k?E@mC^psX+k?h>YlKo{{)K_SQ*063sjpMgpbAb)EE z4k^|hJvLq?-x?cZT9E(_3=8&LHcHK_t{$o0B1W2@osZ=8{6re%{s1>56c9VmgdM26 zS0A;6-5>WEZG2DPBaq^UDF#VbG?yoIB(rsEhO8U1l4{`cSv&FxVihybwYB4TGzve@ zxZB$oe*OA2YK`I2&(vXp9-22o5aPf4m3SVjs;Ww~(-D>D61P7&C+$7{?*9Ro>kksN z|B)c}RtP36)Gel3w$-burq$&qS+-wtBx@N9o{0^S^G3?&&-a(RP&!VEW#hmVz)b!D z8Vnz7GrcE{*M+6P)8$&#zmZV!|Wf0Y4H$LG;>tb%QxO^<>)r zz%BQ!UgyfT9A@2tt#0kx|6g3Uzt*RFcJ6#4M~Js=zm`ib{A?HiNr+CZ+I=gv8UBlW zmETqYj@+(HN=j-ETo__`J?7eDIqa%8{KSCG8(4ZU&o~-B4(ySy0R%7Wb4p4}rPI>q z^z?^7r|HJY%Nq{dSiXD*2jvRzCJCJPs0`1miMPAa*LI2Ie&H!3`XRzC8$2W2LMD=r zU^xVZ9Yd58;gygjs$zTgjEK==h==~;O@WLYK+2gXs;Z@B#kIGfTI&qR8vuezNllgZ zqo6mu=MLGbn8TmM+U^Wj^6J%&d{1&HNibXZk&@#dP4;TnY539vIsQ{t0Ev?^3zWV2 zd;I)Qylyxv9wolzKqrFwR&Eg@r@8-W53pb;)Uve9#1=HTj4qZr4dgXQI$ojqhM#b~ z)&)$v!|~@rTes>Eg{2|`On@{vT6v%Q`t=a;sxn!P2T%~Jf99v+B+CjC5e=yxO$A(n1~81M&;bLUBg81~kbFZvtg$Ku-4Jh37fK9~C$O^~a zS{7zA@-e;|;mfn!fAamb3*ld#k+ug7!fpP(Yi}ita3&wm6EwcBk`7Rai0;zM&&xFU zr&f2Yx}EpY52zulm!5e@s7^HM$(r~DB>Z?*S+hyjE5pRKa&K{a>;z|{95!kSt%gq* znyoQdZ1)l~^nF5rvdjSX_bl-<5?vTzSrlkzR<;6Y=S2;?O_r^Dk6XT|006Y>1V5TH zd{fuJ>4g6^?SI;0fBQ~P*%Ogs_gtUuc2$g~pC_@H$m<^eY2t(iaNVdI&92BjuhA*8 z7S^22w9Y78`D?!m3>ptS#q~6b(f6WZc4s}iaXXBE-^CZ_@y{>;C|7FUF7f1k1q|oS z4Sfvln|%OS6C}Y@a3(+fUMvb@WIibAu_SuT^ zQr4ylEdd@Eu6y+N>*7hjIyv9C*aWpFfVB85s?#j>U-S(e6DHt6#(1Or4wMAbVqYBQ z=JhqwsgZP0^}aBj62>K89w2ms7i zquBhz(Ie5*e_uviD%Zq7IEv`_*0P$4$~Dko3ESV_7oxNMht>h$kQV8RT1$(b47*#i z<7S!1CDAwT)xQ6(5CZdXDg4Y%9rr(o9o~hoTyMiQL;x@%pBB*K0C{5R`f?h>Ut$D6 zWCMQ1bfuOx>gtb7d@x?YOkpetr|O?^b|1q#FSK=F&8~@dvu&ADMRbmfXrG-H2Ta_j z5RyFTn%Jn#Yj?<6fn~9md$PXcq98l@_Rhvp?5`Xql~DaaJ%oIOwm9q)9rw~8V0Yww z%13pib`C7>GeTjKRxK{5rp zo_wR-HE42g7e)OtX1{wVHToj?vu^Figh5fx8cLV10MHYg>9R8sJ=L5_I@4hntt97` zVt?r&-0m}DW(gqXF%KAfG4~6`EXoBt>3>^j(@F2@DwTpc^qPD8-sxU@h4jJliTL%C zwOCzx*cHytW!sitl5NGO!NioJ&c2erC>={h2hq5pv-L86qjX@r$%m?4i$KPDbz%eQ zroU$t+_DkKm{O2*Ilb(n740@djXv^w?R3!Ju>zz7kVu%xo_*9FXRAA!F_C5fXJUD4 z^Q~mibdVbM;$BDZf&Bbh5eo}@T9#+3*LMEvh+zidYSDc)=gI??nKOf=?8|AV9f4j0 zku{`ST>Ad~gpHZDh6d;N{w=+;2=THW!HtH_z*A_t{|)+wf0Hvy$D*FGy19en?l9r~ zJxWM^YU&ju@sD_>ciA9*zCKRg6K;(64~C;`7lwO=f1W}KpGZ6#ROCKz`dO^k^uT^1 zueeb1*7ly>p5g}+Mj?{> z+1{$VjL~7|w)0W1%)Ot?^;rS*E%D@cZ{XyMu%i+?fE0HP2|s8Kb|RK5Q`SCtiJN2| z1u{omKLnI0_2EtS0M&K(?YwVFK&lh2`VHNb05d7wV~X$5Ug%8tgdX2HaN2qA6Mt!K z&3*O|w{rp)A)Obh^^ET9s_>~%c`kBLaDm{;qeR8FZ}Ks>9+8oge_PslTwQ{4SxUWJ z0QGGYS~L1aM-NBha}ZUxpTekrthjq^rk&f2KB9^WH%@J86P6HHGBh&!HP-q5gG>Tf zXy>?B^QG835*pyNcTW}II|Ipx;S7F5a-bY{I2+-S$-UK|RDXy@9_s0LjZ}mRc)GRS zv)o$^FS_ee>M?g3F=w|8xGr@uKUqSbg;E}mR{(Vu2QIB`{P>^kr6|ficcviS3S>fFU`Lc*|wNh)Em;} zRlf?EqloalyN&A(Er>}_hUBPj-1|eR?Nvc>U0Zd`(?>s%j&>usrZDh* z@?z@!+of6ibGuYQmqf1sH=Iz?H2^-e0^1d1Q0bV)l#L^_Km+j#K>kzjpqPQ}%F-`j zPaLt;r&@p4c{v0ajkTFcY|$@RGsiFc(&>hrCZ>7_G<@$FZa=oI*-_;>uJBZU&q9O$ zv*Hp>@P}Aj(w5)lNTL-|n%lg;vV{6nsYGAzTxKR0aLqNl%El%I(H?+taKZ9ejTVGa zef##U(4c`R8n8}A06HY#z6%tDHG2^A3OI^uzJ2#D43M%~ftxIQe7jLz5~wz9fqk&x zF|eX4wCd+OqFE!kAAXAVIC=4fLlJJ*$0@+9=~C9?mk$g)Yos!5wR!NlC9}4_C-sX& za1&eEi2XZrCp5rxWR;XcKc}V18X6{(&b6apdX7h9A3vUVhz8yet-v=G_wWUR%kbEF#%K4h|XMCt*~&(B9lkGupV95~(W?nVFR(xCU->c7pWjJF#iP zOVio}M9J`n+?bi!*~b=-3YJBApwjp=hpJ;`%^IA5#eDBGAZdVd4_z>(k&Jt}MU#ME zpsFHaQ@d&3-4&0p%g$KnHUz^0xFdDlGOS0+y9uyUQ&Yy^D+-u?zgX111{_uaYl``% zgL{o`&mLfxJy@-nWA0va2f+dcCVbli+a2P#w8X@^xIC+r%ii7(0hNv{;eQ3Z_bzcs zxn!7EC}ndrT2IFc^8=%(Vll^6Afd(~fxe=~Dx~TMCd%?I@t5Me)L4+y@tyYsT!=?* zZfcC7-~Q=a+A1*qa*uND_hzL8#Cj6f z3B{xx*nO@q50(^zj-+wKD=wPj=QJR8Yh1;cyFr#45fY;BMX^8DErv(za0+?-{QCV# zafdcs&--7myB`PPD(^(DUBH>0b)vlmy9&fRei{?y!nmmP-TIKSlbr zvFRN^-pk8#Kfwcgdvn*c|B*r&#$@-MwCNL)Y-{U-fgz!hk^NhwA~-%H>3?LIiDHtGP#tCh8KX28!^64liSfmGU!_56AB0j zyb>}oF-f_h*D1QOR1u%>mIYx;uwPUDzf}wTueq?$5GD@4d-#*27$tUPu>2_lBf~4Q zBw%sCuMQvJPtTO|gLe{w8gL{?5I0f;*y<$Yc$C!gugQMM5#pJ9oqWh`A0L zm`?zqn$Y*dBODISKfPpL3joocOKr=4wnGUXu<~6mDv$e|m1FvW%7)P|H>7sDhJl zTG-&MdSy4!6Bei><6;0olx{8hFW{V{4JGz6bM+5|+>{)SWs(PL=< zvMJ?5XMUWnPO_7~bkjDVa}7_%KNOqs%bK3Zi(mBzfMv(qJ3d9lHHS=JsEEJOM_?qs z-?9Io?S6BNy0AGUSQvfc`{kg$NV~taBtA2N`zibb)t%@cn-~LNPHUoNO`I|0|2%s) z_53ep@37~z2MdA>dzj&nIbtX9Fc?>cC9-rt+Nyao_Y@P;==ErD!o7=?Rw}wN?_zOa zRu$38xTdtdk*r^oDKEV%LBA62_y4dw|M6DHs3kQTcA0)&kP(jG++*hK|4;mwviXgz!-Q58UrQ67hTX>*~gJBui-inwlCJbp!%wR-osl%IC3|FPfgX+zXdDY!J^x?wFfc z&L;WbW1VKF)#fRH35r_EWh^$wb2pNjnpznmA>KT6tU6B|PMSgb;!<_YTbVYCAD6-72%o>!Q+%4Vv)m?xK7fN0&KPT8uRfamR#0 z*>Rn?qIfVGbFNq_R}5e#}pFX+?ZJK`I9w^0*;7XSmWa&!68bJJ=~#Q<1RfWW;o zjS6$m)DAzUkmDBRU%xe%Gv#i3!H(Pf&YC!@Zf7{|G(_islRGbcgRw&+)*qAQ)co~y zt{leU9E$QydwY9^$QAR|>;EG-*>Cd^2B$!0$Fuxex}S_p9(e(q|zH{-L5m4*)vWU}|3CZihXPLQ@OZaZ=K<7JGhnjDa}(K<9IrJxT?LFa$t` zONpd#b6#3pZ0y6=Jlx!^P+m|q(6w~NH+pz@hj!EOK9wkTF*ksD zn9{P#TtvZz;h=bL59bK9E%e!5G6X`8c;yJjHZYU)b9G1wQ80jPKQ#Gw?Y0^Ujl7!O z#Z-dW&D|}N4i;uk<(7Q$gU@AE8s6E<_z}N){K=ra{ke5PbU76#0uf9I`M+k6ox@Lp zn6Pn~$$z-~G7tzk`4D+|cR(J_IfiL~Gb93Eddd=@&ueRMj{(tJ36~;XzMKZqj(EVR z@B!|cRzroRyumw5rQPj-l0GxVaad)0eHDbiy#)gT3FyX(@+Bt00@2z3~T_zkvl*>Au2B3 z{*;1x8U*x+=;F%E^A864`^&B@?g9})JBX4~YVu{a9mtL&fyV6sT8IZ`?(HCY0PWf} zh%oN-Ez3*q@&OVeRlr4Y94^VSKEXl%+#M!|fM}gI-%HomIdpRzXtLXW{y6eRk!AzT zh0HyV^vLOl1a9j!EJqDL{DQ|fQqE21ie+sq3rEH|=KG?D0{sp2kfvNif~?FdYA&U6 z0fBq0(tgc<$C)5X0W{l)RRu-wkfSsry1Pq(G*foc?jL<>Czh5R_oL6v?d*5fI(I@I z)k&i-!mvLpJ32bzg~n#}ll9j6#Qk?4V+(`a`7LU7b#xN0WOj|zq{;;V&AZ$M`d-q2 zq_0V$b}^SSb1#i;!>;_NgN4U2TS}bhkDN|IVY>8UA3@b_4uc1;kkn`g>@~cN?gETqK^P35L0L zi5v`w6?j6-NJ*9prrTNXqwyj;gn(QErp$T6HzfoG5$Zu0;UvCZL{L%9;$qrng? zTqZNSw}nwRysJJ_;cRqHqbYE_Ocqf);$NW{xLq4?59ttxR2^%Vxb*n~5*KB%@7b~6 z!f5rpp-dJSP|S`Iu#H3Y+bY<=otJL}(a1p5$M|mix~2VK;IKJwiH~-*=-x=7!r`a> z;`G1s2IY@Vt1h!9Sx|)Ei7OD#l*gNB?MK8v9K&ZAuRxhSz?bD2HB);-z`hkgJY2!< zZ^vQh$TS}6FS3X`Cgg%nq>mSCrmxSm#wt6p?hUCuc?E#;x2kr^A~5fDmIOR6$r86Y z4Z}+3R7j8oNni}i?c)TDD>_n!M55`ADHTKar(gM>0A?wDljWvB-;$&F^I}VLi?bK3 zih-Fy*7CqpWmll&y4Bil2srV?K*#g}q&2Cl32k(0HKLUGvM=djBxBB4fSMXG6pU0o zd4GJ*?#V@(u~+A=-J+tRI^l>h6>?etalNg^F7-T+h-KlseJ~`@EbwaMfs@N<()llH zr^f)M-W?D=Xs1naZ|)}$2MzNYkc9%zM6liA(3ujP!45)hY7%4RkDd69L(`CRuaFSi zCBanB^jt}Ip2=7LgH~lxu{AJ}E-o8L7|o1#3RJg|AlO>VLr_klpvSVdtDD;l2t+MM zChgR&Hq_4S0}FTSu3kZJK;iiSRJdJfviu>Gbe<_YFEst%&B)N~2pX0s-HKv&+JmHv zq(J~(6hjNw%%AUt7pjDWvQf|)^G=bGo`lrIq#Vp@#DYBvpy+3wj@_8;oh{w^l=q;V zJ2lx#N^B{IL?K|SEGs9cR<3+YlDVU=*jyh`T->9x24%Kqefrd^!`RW*_U7%|x8gY! zX|}rS3Ec>?Z*u6GY z0qX0DK(9l_KBeGI4G2EZ|6g!zR-)frDDh?8qb@T7PK&7m4FAM|Iai9c8p(FOtvT9b z7l$O+SW-Asl+~D9Zk=vRhR<#5G!xqhZQiu#`nJs)(dZ$jNA&t6oQTc&^|{Z z;jiGT7dkGpR;SG5(jddb3J8mU*u=R+vWb7Us*sxm-NAyo{guea20=2;g+vmO{y4Yj zb4k-wO|N5!-dw+XYtAId7@)6j){JQQ3~JfW>jB8~tDF?$YvQ<4|8a@xq*vATBC=U# z%_!3vf0jG&2n)MRjGgrgCF-Zp!j?xWQ9udFhWBg%xf|APF+AJ)lr4H_hdKW%OmCW>sFi8ir1bekreiBXlVe{6{)Ng|_SfO9be187ib)h&6q^`%V?>%Z^#&2m4ae zqpk(n{zY$DO$Ihn>F~nQiCQ?|#>}^-JKzP}n1>Zl-Mq3ngm=|I-V= z@#%9t1hr6qO~;SJqCtBVW8)Uj_zEnG^zvPspFx;@JHc{2L~4zW$z`G7ixKon+X1hZ zxUJCea`H5$iWEq#5P_<0&y+W57#$1h&KbY+q5kphFincSST7@+sn2S)XBJ?!ao%ZjA3 z%)9w6woBkO<^JV#(QeArF}%;WfeRsJ?dc7~Gf^#$gBnEj$&*h?N=gYu(b4p|MMX@@ zNcV*pU}UJ~=;&xM=1w=Rt{4*M_en>M%b}y*RIWgzzYfO6e*8( zR(^i|*q)wyiPxXJ0~ydX@8T%T{nwS<1liuVl($d3k{G`TChuuLeVw#lw~(D|1$x_x z=EZCCcve~8ex0lR_5px=k#k&fQH+6sfrpQ;#pHs3z}<%3Z^C!(-i?HG?z3s;J~L;k z!QUWVL`74h0lDv8&Z?Hees!krJ?YnWht%N~M#SxN@b=mJ5Uf{_|MBA$RR7{e{jwNh z59DE9(O&MJd|W2+VN4D|y9<6z(nMO=B2-!p*LoE>q8rA@7e$pMY%dbzg9X-V`?5u2?gF3#4|KzMIR*%DQc3_2I-h z5hXd?G=p0wNIGrN!LVF=6bY37?JzRRyFBu#P~f77%eahNF35#U$a+>(yCPL8@3UdW z&~;5(yqR6j-ymBvUFi1h+q3g^bJ>M-X|AU7@FNA2u>AsVoK7 zD7IfItlZ+9vpk#3;5o?ju8M(?7b9>dB z1>Ztr-@Ee2ZY$I(ouQ!QvB5BOwxp=-)NHHp-F>s^Bk#z5tw(}3NRP*%f^o}xV)ZeB zThcsb~AD)L?1JqIl}`y$+8zy^`;$0M2BM2 z(_Lo$A+r0dy~T8LV0DX&_6&_~dQANe^A!%qiU-Cjbm$_`jAEh?AK3b_hMD~7N15N}duih@1Rkz<^o130~9>{TBEpz*u&2$=ZbqcIO0BGcGM zs8|p(cpKDQxg|N1@-$xoZlekmN8pSb@$Jaf&PjS1z`S8x^*EDN%3alSW%Lr{dSWYv z1erpRXy?+9c~E_de2^JP{N}1DbMb;gW!uAOSh#t3zJ=0m?HRpz3^Z13W`l-VYhbd# zdp1{%p${xUm@~}**qH@m#pyR~k32SMwrU$U`r$kQ0PQY|bpDi5U_MtfrvEc<3%4}uI4-{uUk7##nXPfezVrLZaGEe7LD|+sbR>>z(R$}f482^+3Ex^~L#A!qv z$X0P$RgA>p2@~ggfZK>sikhO6QJos_U)n^3{d6B53k?m`Lv7Tg{G6Nx5zp2juN871 z1wO2c!60-B-ruj|mZta97=R$GlCEEuz9Rce9Vij z7D(qH?0XurBN{V$*3&0u+8y!ydGwDT20*-6f1FRM`w3fdKAK^O)YhQhn*o*Rk*VWBTlZ6jAHZL)(?IX=O zE*Njex4W3tb4J+EF2tz}?Fkdb;t4YPQaX1rR6=>S-NRQU1(;h=3f5*V!X3Oji=FP1cbtW9LD#YZlc z`ohxkR6bAwZ=#0TedoF6c+-!O7bsL7B^<2xcUk+1ZO)xI%iI8Erzy=@1mV_7YEKds-<=Q1%BU*D5jN|DO=GRL znM~OEjSZotsV_!As0zJz{fg8K?gB(hEX`>b3 z<}UFG7_+kp?tI#Y1DpJ8~Dxs~|@%=I8=hpPKX+hdy&uwc4_OI4*M=3Rq)cjt?Q1!pjOG;a8(-aaTQ zKwA~`qBk&4@iCr)lt{NhXy;YpngzI$rswe<`3xd|fQm4DQ` zjg6=02OHDlj|`L-%ZkY|KETrM*?Y)~_3(JZyI#ba*Snh)wz3MWe^QUzf2qbM(*N^y z$>p6H#{PD5iPOv_dttXU-AVe2R*Oo#MoqIU$d1BTi1gs|y{`aY_PEYE=1D14`P?2O(8qp7{)&ANSG^V54tg!ge=V8Ui9=fKsogB!2C*IJ+J5Hi{jYceZ7Up?2r)M zfccT1I(2Fq4A;g^?ezhX2x15*iWF9}9Lm0gN z!}Ytt>E>4VZXyHMAAr~x(&xv=#Sfu4^JCDFFM2z>Q^f@J2s?ZsS#>35zmA3*aml|C z?udf7u33P3FDAK=^{0$y_L-ypv*CgyHE+K@_Sur>OP*rp?Jr7mj6Fq%n)H9OgrLwu z_w2R*Ve%ZHK(q}RI}Dukz^^ZI35_&oX8uWjy~g|YKO|IfLVC;08=Yzg_DG?_5q-$l zS8e3yRKzrll6{`PvMYed5*2?_fy^g#WA9u3G#CB+J*dcHGaHKtVP3+}AwJ!oc65Fv zkjOTa_rN^JTRe?uwEA}|x=%qWw>E?)mvwu#R?O)$jk@4F`@n?aZ?&`NMzo$c-2!gQ#qm$+CWaPb=m~a%V{x*n=k=uc)wyGcRvdbC9tDDW@Z$|>skTb)4T%&oVEDZy(kT&O)Mvw;uH;(1k z7Rgby{TMW*KpU6eJg+>)N5nRXbOhx?auR8^dtD96#?D+lA6fXSF z7^rb3&b6Wa)nMsAR@rX^_`m<7(T2pdc?cbcH*vW&x4onFxe!|l=yc=M*q}gZE5p7TMH%>Mg-HaMlNPZ%=}ccd z$9}cWXX#r~glol~Beo&u6~rs5ga?fDS?--w$OtDtsI~Q?8xw`!$UrE7$fpsZ^c_Gg z2*m;G@&o@r6kD&4poRbcD~E`zvdB8SO@rB8$QPM0+)~^%J|9e-N3*r1 zGD$c&uM^A@AkFiD_;){EF{3ckqp@f?(A>WrvO5?qP1V0-Qtg@rJSWP9<<9R!DwG1u z_z{&jQBMJS@bhR=C;q+ivDI!(z$D`V7#SXS(x-xivoWTDY=Q^-oaoK*QDNj|pwrIs zy(A%!1_Tsp0RErztd$yaD5~f6 z@$u;#f-Ge(YRch0=;-UCx>BXp#TxflYP(G;>pwZieupU>0lpyA8Su{tVy3*mE3KZ? zKkiMX+cI#!^w}EFx1Mf&!<&*bSr2FokSFP+9L*vR56_FED?%n!oGcQ~qJ0j zk}avKbHu?A;K|o$W;A>@@rFKn>lB2De80m z6B%jm(`x`DMtsf^>oePN4$^;Eqv8`^!g6zSMZm;-xYQ=0$03ZZWB%>o z8=Q^gAJ>>HghNM&tV#iHElp9DXRdTF)IF;vecb&1{Wrkj!fp z81;ZcqB+D0bkzOg{dbfehtAvR8@aoe<-VPh3KwdE?is^4@P&Bw>Q(ml^w+)7sbQ-o ziou0*o@I#1n?rggCXS@f3Il4s7F7Vkn8D_F*+NN!Q};li^h1!v15-F@aT~4R!!Sxo z9I^n`uqm@Xz4-dKz6IQ-{RjLLnzQfbkw}w^5`(7GQ4EX@1jT9>; zC03K1R2|GXGwM&SP!jvzg*l%(7H^TrB2nqH?euLVsWM>L0DxZe`nPYt04VK;fz!aB z8M&Dt^eG>vVB-gPajD6(+9AG$PV2wEy)*9;2RxVRtwCe;XL9wg!}e2_Yti^Zx4uvs zB!1aNOD=t47QaxV6)MD7!PuaCgwxO&8w=6w6u z*xcBLhAZ?)05oT7)70^V=B)3?QskDWMl)BBDJX?&)Z%@JLt&uXlz}2mOiawaX#wYZ zKuW#`QY;VQ7cp-b?ayhT6n1nZfeo*r+YER0fs zlOIEPzKDt?>asGTs6)d-Up7rf_w;lz?H4$ItiYE&a>o329|?d>j3X&l{`(r}U;fqq zOoEJmiHS^5Zz#b(wW-es7-;?n6+M9DU1j|tZ50{Or?5YxfjAJwN|$NSvR}XW+Bdu# zTjupnj}EY|{-eJJqt_iYiPs;kKM}P8xHqEFDi@2?LQ^6Y(&@pGA-A4Xb(`ob0+j;{ zCPc5Jr#E=L=cG5GK`=TsRS;Bniz9TO$A~IwgZ2Njx_c<5QtWsR)$L3E3taoA9ZCG= za$iwYvKJMAhNUHH4-9p5xI5;gF9bG>EF|tu+NcDtGW~zVtcWbq{sD#kfX&VcDbRsa zwdat+;CtmE@?qNFo11bR1Mdh*;WsKom({;(uS2NOJd~b2PSiU7a~1BvK#do;cFKqR zZ#`6kFjz|e2ftb-{_v#FO`jB|6?$<&`;yD7Wa%TbkAPADQikn$KB_ zkkhZJb8?ae0blMo$n^p!B&PvKZELyhIyKS9GYKaUsFXwu$4FYg3k}7Qlf-Qny9E~DPJAQz&`dXzK2ps4#nF3PN zH=&{AESeqnh<m9u`H0$7*M1p2+vjfx#-V-M_r)E zM1k3^`t>zv$j@;wLAf!6B8lrCosXC|JvR-eGxeB5b{4wVWWkqW=Vt4|8IzSMxEH_pU z39H%dspIdCF1nlVZ&g(;gCWnOk4Kl-y(dT*Hc@~n4+d&bI0q-NFE5sq140AbR#A{s z-adYkF6c^tzIj0T!GdOx$PGCf_SxCl_7;wy(Z%l&;|8j2-WoesE0;-`8yO`X;L(Tm z2Uz*T(otZO{>Twn6yp4s%ZEDVAZNlnO2SYOUO&GYQaLeivjDsE>OwuT{`NrT>;2Z@ z#B0(vtzlK0#yoQPiiU$@qtc{gw;C}Z_7X!_=Q!+bv~AVQM=#`vFMA>OY^0=j72*8@ zdRkiNf6rXXa=2;$`J!^Hl$nKPW^mFHoM3c{E+QlZW2VT#(|6h%lNkX$CFRp46xrnGne!Mxxy=#?lf86 z$2plYHqT^-W7}3HYd}RX=JletGs1y;PtfG>vD<#&Ag%WQd@BY}4 zUNwYa=`GP~?&yG>;VKbDD1Aq8;W|rq5f@T=rK+j<93p%%rV4cIZ^230f3TJYcpN^B zpp!@@^D?T|g!kZo4mI#Xc7`%Lqi!3Z4%gUZQU-hHT+R-Z0aI$_g5^$ksR}y;y*$6v zPK0oS?Q8pTc_%Pdj0VOAkTX>We8C+z1zHs`OUS|z^)O177i92kthaC^pX}m!W*SyX zG{IA$@wjbO(M6lMuQ}+!#qnQ#&T;R$&ET!)_XqH0-te$J_wo)1EfFRA@T~k41B3dc zFwMT*tcpJ707|PdvRDF{D-z0$(Ci&LJF1zeT*`fUmNF~~i&8zD~ts&NWI|4}`EMHa+RfM57< zdxVgQ6oAfhx7UR4J>pJ3MYS`F3JN*|`tn~qVA}z&p%+I_fLx$ESZZDgi6H@WKG+&- z;qq_O@k=(mwjV7O5merQjNcx5oZ+WgOaSr6twu&YRp3v3Q}mtleC5r3>15 zLkw88!gE*P@$rvbuh+!bn3|^ME_neYA`wvOAv{CNz`(ZT1{m8v8qlCQNR{;)jI96l zl7Go0>C>?j1~9YZ2X;6O#OMylvrz-OozU>`WUC^fv3zwh?;7$V!h{2l+}O~J*Ws)S zq4{9V;Vh8707{W_;1kFh0dGID$*N8Tv^dGZ7J&Yh&xOQwx&Q>}!mJ6x=wsV2n=~Il zI07dwu0PAq+sNQ!b`R8f2i88Dh~w&uAH{lFCyq;KX^$Zhp& z&yt8Kd;}x{p#E>$Y1ol1?c{(7W@K3ynn@O;PkIp(I2ep12V4$ISGKg-KGx3=zRR`( z#~0xRw1FGP!uqgi57Rk$Lw7@Tg*qHJkgbNl)vPW;(pd4(-5fqqk6)!LliKW(UTvLh z3ZIci<22k3!56Wf@5%fnP!<;x^ML9pfC>Gw>4y~QWVt_m`jmb42LKqA;n;!m<~q9$ zyjEl|S_1}lS+498Ee1$D-r07BISiLyi?2)Ds&-V0YJ1xR=?Pk*zss7T#pYX(DfEq$p#$r4ijL1d`cDV99g3e(Tib+yCzM2A z8|TEc#tw({=v0Tmi5dC`oT|G7`FlKx~D+KP#NE5yA!Idebp9DiW8?!SKFNv*Fq0e2328)Phy0W{J zC{X6lAH8`FG9a1NeF8iLhz6B_M!*p4>HmXY?I|-tJetINyFs`Z1QsTWIq0E-=+pj$ zK>quME_DXT8N#ist$kSG0J}oP3u3+NknG;R1KK4%Lq~HF`CFI^Vd2kEU(Q7URv-H| zrtU7V%569vy64Gk!$ogEy1u?1Sepr|TuV8$_4_!x3PnA#7(5 z1Aq$O3;zsMkOuu-1hdE5A8$I`z4gf5IY{`-l9c=iIHBv0z~omEXaC*?QYbpU>(#qr z=66DfXd|X0q-@6p(mcysnpn02Ce{;D$>2h!F`$`h1wnSwGRvTy1O`fwe0t?EDKks@b~uyW-&D2fYY% zGOcOD4t@s>2fljH_|&q=s2dru?>P*NpdeL%qho=9d4q|TmR3hU;25NVDI=tnpO~k6wfZ_cb+Ax9{AE0o`EY z70ag`>GJ60kw+&;10YdYdVt3$@o^F3)O8Irx~r6aS4)7N9}46;CuaXvz@+LP5ScoB z31A-Y^IV&_0kKpCjLKBCw6!}cj^fw@Ht)NcH2DHw0En-Ddt+l``hAp~NTwVO9(0Pg zeSE6V@g;u{ww5h|hD5S*Es^Ig024{q&H4Lodtj;XT)lc9IB9hd zpcF3Qy0xcEW3^z|sM`Plk0G6-ch%GwXy{i)DvSEm90nRewF`}1JAMGBek&AHr_uco zq%+>g&?gNtdVp;lH;pkjIKM?hga7=bQBLuBT&o7Fl#+;WG8eFH{X3R)kwh>SriEg#jZ{*9Bai7y8=$p(+nsi~|C#D|1S>ZY33`V>6EKfQ;LR z@rNGUG*4^zjp=3hhO71X0R`E@x(|`bRTf-9#i*}>{9wr&E zR|YH;Ug}}`vMuFo0P{lxwKV>ug{?~nN=E^?j?ckYxndEbE6`C*{uoS!6ZvFhMk9wF zcIg=zEsmb1p{g-cnaf2WoaDNWlHv_BQ~;_p3>f2yA>BI$Jw@`!It6cW8b@B`fjeI^ z{BfJpmbdS)-^xNNcwZd__N>J0)}C7vUHq#~eSIbS8_i6{o^_*1S09GuwnFK=5kf*%1-gW?Z(qN* zg29@yVleY;9~O+;@w-z|$}Jd?FF^IyaGXsl3j0DKh;hERFdbL*vPffGjd+}|xCP4uxCVV$*Wst>R1*S&&=-Re?Z*f}QOI?yS z{(g;V>M~Ie0n|Aa`kv~gBHHUueuY927Z6$k4pC@&4j2-r*;EuW zkkp&D6Gdi2qZOAwdknr~==;g0_2w|~#JR*vJae>Vekon!XL`Kyi6_L-dy@`zHrzi- z_tK;GQ%Rndk6jbT*xs`H*Kgl^SPLy>X~=x-jm{L;XU_q!zl!ZU)l=Yi@&@PwBFwx1 zqL*zn0Rm}9n*sYJhyhv(65egG@v0jizAe*^9X2EH^!MnzI=s_1j9-48Nu0mn@5*bG zqK0|VE&Y?1@1u?cOVU8dhqA6t20FP-JO*@6F)|KHOMKNmIe!BdOnu;kUCJ$Wk!S+? zx%c1B65X)v!5blS*F9xLiwwZy9H1QRK}X-$-d|jHLlgVdkL@aR$_SW%w#j_f-sM!P zanTLMBd~F%WA7 zJxX@vr?%n@M5q0PS$Osz{J6zl2iL1aegAnj7@%ROf=$&DVe?P?xHPk^x2#g-<}qPB zw*ga->7c(Doi(bachovh#(Sg*|0c@jW`^eR-5tKVR26iYT`Xk4Dydw@Bm6Cr>Nsu8 z^o@ZScGDkShT~pa12X{;D2M4vm!)VQZ51OJ@-eQPsj~GcN~;sTqbaPVWhNMf-!V$O zX8j?O<(zO)q5MUO4i*>EpzgYIZT5OM=SoTfEfY;Vc4iV#o8PhxSmcP~gE#>fyu`Nm zymZub-;dp0@ANK*)elf1-LP#{hiU4T=F@z?hUK0zl@A=3^kIIM&UbEgZynp!)_3th zrpxCTht0^+CzI4Y%df|6{ z=BDjV2d04^-ST&SG(lkpyK?Dh^F^9pcJnUSLK-b&eauk!V0$37jR5b`oW3rvVxt!% zF0%Vk1QLg4yHfcrEiDl%B_NSogH`&xdi19g`{fVhBUajA*@yjae>g7ZqF8fxy8D@8+B%H6gySk$v$XzLr#Hscu`$b{= zK@&QFo4>H@Z3M-PmVpt^o5{=#v+XB7R^QHSbQssp@X?t8Ba_pTlD@-CGXHEVhJ_aOWg#~k zh>3obv>W+Mj>*28`%1&kt!9(ew!zO=L%VKg%)ejGwB6UX$(94yWq`1M>;U%xb(`pY z54!3INU-BhvswZ4*g|8ckGTnvVSW~koWZ3h7S4Ya#pVXxH6;jljyOqd(7Hs|HF1FnwLtgDDuaVLSx}BpeEX!fUdB}(jn`@IaIXs1*y&wc zT+EpxkuOh3JY*@be!N<1StGLrUv~XAebRMi=AlxP54h9eu1yCgaEt2j5YR`#~N2>x2UE2Q~zFO?3Y@<83&2(=;_Q}S2^U}b_CWmIZpa*`r)eHi{dX~^1c(7 z+k^|>@|h3w_P()n?M(SpsOaQ^*~cug{S9@*@8&tffpm;{7xNSGV%jmVp()y2e{QD* zXQ-{xM!mZ9rg^4xdcp=56DO%vg1GF<96AytqA$cEfA^@0nBa)9?o@P8eb6Vv=AF^3 zl3A1{bF6Li2X5N<&67_`W@BUZIIr9-tjJrteJ{ErN%UsLk~BYyXKDNiO6n1V1s^})(KLFH#w~NXaDc&XUN~Sf0I^4E zXVV-yxsk6g|K^$xPsyQD;b_3JsH7Fep=%dYTjBd^5tqf**^$(gc-t?5oowvl8!s<^ z$oO!lVZGGL_|;j~Grjick<^1Zos1?3ge!K z`QJV!C&+c9LEp7#^H=ZXd<^$hxxBtNga}%3)0a3Yp4G=k0@*gI*a{p@#0IF`Qrm7> zk14mv{o34I^D6WG4#nmUy1A3(Lq(?Ea?Z;2BeGA_kYD`=} z8POR4E6W_%7wSICJG|fBwqB|%!sYQ%_l>Z!Co9!0hWS6e0IDzgMa{K0Rdzc!n3~=k zN{*+OR&6$lBLwbwp_0NK;u?CQCuRerS=K|63GMi5j?oA4>jQ4oYWW@TRG+i|CMCYI z2Ke$Nv-JZd7W3gT%pQd*M}$rfwufdCUPo=UBHT`rJ5nu0YoB>$hJ**pU=wk!>v?x4Gdc>6`L*RO>FXKt zU*pSeZNq*m88rG?nO!(eejJINW=<#btqCm>Vk%Ih)7Kej&-!%-S0wNBW=uuc*Uf?L zbuXlv99$*)w~#Ca^l1RC%bwfDB;OeoBW<9Ld?ClL79McX&(nD;;8fQVBcQC}c!CAb$91Fq_3`H&O{1-xtx|8#R+f{~=p!ShHq`A=hB1*_&r zI^YlVFNkM=<^;fq9-TASjKiPj_1C=_))l??#Z=2}bElK;Y|Ity^CE;OVXG_w}r?W@LnYc@gDGF{xjnQ>gBf?yZ!O_`9d@t`(Bnx1I;a z>GZ1>lsgtX81zWqlFu<3AUB9JVrOFK|2B5X6NV)@gHEaG?cP*o;%HY&f%}T#1=56Zk-8{)`5_y%+Lb<{}?6$@F zbJX|6=nWF_#lsRLH9#6Wx|j*Wg^IC=lymmBAi-zxX+97|!F-{B!5^0=p(QK=1Ua_LtGxs{%U0yf%lt4XW4fDJ)a2}<-t`!;70o=4F3CXn?=nf%73fzr1~VGC;s(rQ4^?XA*X&I^oXU0jb=Xu@ zXAOM^w2o6d;G;@`r`z2uP0}DXk$*Ldk)r=miTRKs9gAL&S6#Gt=}EUBZ^4|Hbg}PI zq|?szRKS)jB_(0lbqm{%;S;-p;JSg{p&$V!Aro6KAG8La z#lNf~&YssG3kmZY%)0K7gu~)9EzB_LcwTW1MMTxO) z|7bC_+$~+?LN96laxl*Q}Rbym(RXA5MnZa0)tnCiTVoo=2pp5n9S4Q%sBF0bXli zQqNppSoh4pDF&vog}D6oJRWWVr7stZg&9T`UXX}p4DKl#y5M_gU%ohzQM;ICd|Oo` z8o&*tL1Rs*f`2;GPpHE7_I#20+iuVLd;T0ePHYTKj0Iie`uzF31)j$6ar7M0k*{h9 zznWQFn6aw&7g=V83)RwasS5BC5o`*hiM7BW(aI{uB(d{2tw*vN_3v-dn$>Y?zw>OJ z{=Coq;EO(w%v63ST^?#*%2;PmyHjm%kbOVEtqPpS(V5qj;DqHnwOcs@&N)#UR530l zOuYJ<)NjTlX*SkY?MIuhOS>=St=?+iIJ8Z&nNd6`;^v4sG&9!ey(mGbTG(Ydq`&mO z;GTuw(17HeCe@omLSEb+wui9$MlrB9Tce?jQ>US}&gH19XPRSlkYBmR_+Cz7_!Ck0 zosAY+T)S>2Z=}A#xUFOQ;iFKi?214-cGdbtLf@@$|KcJuv*Ou-?9Uym2bs6b_B1|3 zp8cuur7z#GR?b%Qe)f`3+NGwj9M#9Rp`k6}ord@BS;TMlr+-5UBTWDmb$l!0s$vf5 zGM<2Xo@U#X@7CX@jM*_aGD>v>2Ky4RBY~y8}vAJx_^BKvyVKymo1nk zF!ksI4$J84UMM?QDrL_mvO36LgRfB&+F6Zh@N_YNug(NrEX{BB{^w(4ty00(0EjMS zY`hNwWM{!!;qVxM+Jv9X(_hLJjNU!AgN)wkp1PvuLUmf_*^9sUGbx}MdfN4vuRz$V z(ya=PS!PN5$fbk+yq7k*do1I#CsWVhH?@%|>LCGLgZBH_C(F8&?yq-dwVNI=XE+oS z%(U`x%f+O2hiffHK5NvL8aS(b?F`g+|BLetJ0{c?h&BNg4~sFX34wg25`)Et|I&I=a%66 zG=1y7n}5dLynXf@8bBN+W$olMr*3`Sr#*SZW;V48zJ9IGZ(4&0fmv zQuNQ+Sy(ibDd9Le{{smF@KuC+V>= z2#_|PwZ3MxAAjoHDbRpk4nnxRsc+!S7{I$;4r?tah(F}Y5gwJ;`M2oZ9&W%d29_S0 zmhx;_EoIEZ-?SWZd!L%>JwtYFEmC{=u=WoWr)w0T%6RGQ@_e&USPd2i$M_li>VStU zDkXaMVOR3mUn1kfIq9VZGp6W+4`%GOhDL&w`@Wv_k`+^-aX;Mbz;U>+T~)noP;X07 z3rDhZc@gSv$&H!|OLUYCQdT4hT`J)E1~&2KZe!gebg53!k#8+f}cfom+iFm=1qr4f0ZJ#i~w-ZMq&i ztGysk!4SU5H{3sd$U@ML<-9pkT!;7diTISdTe#1MgY8i(wD6qqTm}c-d$=g19b4Fb zPhLz8iUlo_vrrT(`t_q5VtDxq-oEHY^X)n@dP1dpob zEp_*BjlS`RK1Fsu{VHj>pY{}IexekoDKNN}oY1!DkDQkfj&IEyO!Bjo(@4HlOb+uF7sd2JHe?JhBteW{~B4uh}W;*-jMNCk(f)-zt z$i6kjOv%ps5ZAUvmeUMe4}~>jBZnV$e)=_f3hT4oN`dnp;Ctk^`S$)hH*#Z#v>^j| z@?^8Ncti69q4lO@!e?i~@J(&mwY*xUgsfm{;nQuIh?b76hrixi?|r{JTuKP;XmGCi zN(0Ir|87<(z8pl+&~Uzi@9&ha&ujACAqUd_gaQ8%yoYHLjCQOb(SyRqgU{& ziR#_&TDm!EFY{!1<&G%eLja6PogARq8Vw!2KV9;{S)j7)dwY7|&@AgIl zw_68C&;bT}I2~n|@UO|P^V+17Z$4`ok8OGhf*8}n>|T&M6iF4&jajw26Tzyb+q<{= z+25z}&oMLbHj)n+8q{#ntxEygJ!mkHozXHYWW6pVa`{~&6=8t>05gRSVBYM5 z_C1TNXUt!{0XAO;3pI@x_61!XG2;jJWvJZ>ua0uzuSULQ4ZTKT#TGg9uJuOcMYBIj zADOpQZ({;Gd(oJ1JE-5pU}Rc`S690Wj(^@j=PPTN+Mh*t9HV-Jb0IOb~hetpIO_%ux`lmbACjf zY*9AmlH-4#14ACgtUf5elX;ZfquPY#roF-cqU*4+)r86 zm!ZJhFXUwjUFqd<*Cjs*4S6mww9}B2h#F!JkJl7DmN?@C->J`XWNatICwu_ zyJ~WI4P(5#D~IUq-v>re)~vq1I(ZvBd)-TF&+hGY>J{)#RKqsy;#$+~Xk-OgVyj?r zmGMVKay)v=yL<)g`W_vyyFZb!(<}Gq&8S!#Th(5-TRH+-ldmPfZR1uqXP(&gaHohS z*hTbkqIMv}xavKu=H)9&52`XHC`VQa5%?_4gYIy{9PLT(Wy8F>=M0S78^EX9^OxA- zCzqD>W7xdEvfbLe6J7vVv+0GKoLeCx`xS$n=$5x83-g@mu&1NvOX;HVG;)=1wdb?K zzEwH)8E_|{oc4sVt_FzNaE;x)H5Ai-N?u^pwE84;og8b-qS204i*X>C+Ibx3yC^F; zzqwsb;b*N+TC}7X;grU4BR5S%DXcYj!Ks1(3C~U`eC6$<__Q|?o}`^KhZ}5f-;91_ z+Ft28k(%85J}Cp zcqHV6E5+Mc>F=qd_9xvw(Ui68sN&G$+`tmU+Kf6ZH2MRS4WVj_e?`>*=jn+#f1-(y@PtOCKONw?f#nNp* z5&&=y^*`7o=6)nY#Q`>n?|#jVs|9yquWrd^(=1IzoHP9#Q*n1V(wrXw6G|qMjl^!L z@@}R+ms=(Me>9`Lv%MCO^nUj28DqxA>_A^151;Oah<;%S{9Y*9B#?zVIOBmk#Q1jnCxK@RkZ+th>lKF4~^;=WTF zHmZ&?g=&iLS+YLNr{TdOE}MU08;@@A>Cs~`_tO5rHRTQ6B~jMdyl2p6O;f08LeMKe zsK-g6qiA!d5zCeZk*GChY3p2{SYiBy>saraN%E%;q+rkGGCOsKp$86EbfDT7YRk!w zPC(xSFH5})0UXVC-1YhV<698EbvqvI`z@{NSdSQ}o^_A~fi=$>@tcYODsS^xaO7m)To&_YZ_$l&@_%Ep%2(v`8JzL~Q) z)^Y0OSt8NB5-vYctZStz7MN1ALzRH_Xdt0_;^Eit!jBT4=(&{6fk;;ycZ(Dqg`J1d z+;_ANl6!(OmuT`nEp^ndC|$ll1!`<>Bds{?3)17+41mymeLD5_XlNftkjyx80)XxS zh!!mq=Z}#%kh}7lnwqN=pj#Wr&%yL3XW;JHS9!wk?0hI+H|=%~C@|r)AD-M>G35gr zNVq?IpN{&Fqw(kjzo(t^M!3~&Dk42WmGV7uLwfK`USotW_a=$a%PU8lM(n~;i;u&I z!2)@4%X?4%1QN0AKuL7q1+FDGc$p;XPsJ*-&( zdm4O>3FuYZZ#q$~cRR}Z*+O^RdLKs?=z$k71EQ(7-(T-#(*TT*9>RzD-J}n8`s^mf zy@qaY6IWJNZqGwtRGOa$T$TSnfY|6rVrGXjtZG{cjtl)j-ma3AWrWz4?bb41pD)`& zPFvqtOVZKy713dftCa$Or*l~&Nl?#meQELHH=SPO+KKs@ISu{&?yKhli5r|t!W0)1 zDim+g^)>_==*y~eUm@^g9axNf2sqHr6vi6S7hsTDf3vC9WR#b**c9r41LtZc<3yO zwjg9HQN`O}&aRS(--#ECjvXQqs*?-!#5rvOBUvX7P0W1Eyq2@h5*o(606M4s1dAY4 zXMu&4@yeRjJXSX@M+0cK3YG)$%bLIkLZrP3Ku*0rC+?DMv-V2hf1k7gJp zK3n~GwK-r5nyyC0YFN@y@F6{~WeZ*ojTDLVKVi+js$&--PatP~Vn3wjQK-oBfweRj zjG0_~wC#^ymbc<|G+bd2na@Q6jQA?FGE7mhTxgKQ%;6^kfVzjWuohJ zzr*wi!3L}Sa=O(1sHKVe7cz8*JF@vFCYR1OqeEyng2P)k55cKq&QB4ckxqhQ#GBw$ zF$B64#DJ`T+$!O2jf;_1!><*b%-z;7)cpP@V}J(y%pZM-X0>I=dT&!{#CM*|wuvVD zc?6fjCC~&o9(bJsSG`(n3#bC$dT0X_VgMo}Y40a*34lTy(j0-_!FCu=U3=MTWq~qN zi4H{mC+7eGwim#e`^St6U>aYqtTu+Gc0zvtxj=~+vcQ{z+ ztHx}vEP6Zzh-~#V7bP)~lD1G2xz%iZEYU8*0OaUYfqt{)oJCiP;mgk6Te|IGA;&f` zmXV#WX}yL7r}ErDn0)J82Ja$GtE4!f?{_#)`zTEvfXjsSRNQyCO2=Hsqh8!XLAPN7 z{-u_XsU{aI=!+gNn`ba10{*9u%@-X&R|{QaEyEQ2gmP^%{mu7ya$7N5R-Xme^Q-T~ z(WhPmx}KU;`KO|SDJ&x8Ja2HurY+)_?hOWMOwMvE_kF;VTn99R;!FeCyYF z%0ZwMF<12b)OJv=Y|VBY9(kb}Kc1?7h%ybY-_`0Ep?G8}z2@QJLz5h`GK`WZj^u|= zdoTQx*mm_3JHpIZ4%I4xs2^c`5b2%f*b2hGAaDi)kgU$Q%1% zT;VKjkCS)oH|vUV^{|mEGfq22pVXFD>#?^wCUy9{umtU$b`kiM*a1#0=1j~z^pC$@ z;t33|Ydyu-UfF`(H}lb zN4xpqUVusb;$zo}-<(Z3397cVL|Y*E?F}&a#G*^wkz#k#UaOsQ$&dJqxiVd9^>Ai8 z$eZ?FtQERIEy(t{bf#9t!;&bQS$VOZqV2;AB6e98Z8>i;n~;0^TR3yLN9p`Kq2l{` z#=-KXo;R^NBdISc8iw{X$~FnF0Bf>29-Ztjw|;IhVfnTy#+M9m(6 z|H(yLjR+NUO7ewvYTCdL24)`>ri*U~MP)q8fzx4Q&nkF2A2>eRW@F} zslN0}~KM}zrVjzOezGN%IegYG|c%9~OSNzythl*Q-qB65Im*-qUFz!wpM>*%=@v*U+8jYPpD#US#iP{{OF=P?N#l=Uf zF)FZ|rqj!ctP*)P8C5 zzW&fO*bm2r-{n#qkwRHqv;*JBkRKcTybfe6O1H@kbiwz|4&p zG%Jwo%0*%lqryb9@FtxxGWNTuGB{67%7;;6&ty8-K{&}U3=7pN&Q1zl{)6RFEdEYt z>wfuydCGgP*dz8t^R9sM#*gKqhc_p~D4eb|G)k>9j<9n5uD0ax$cN;4)*X>L zvuN8?NNS4hi!Jwbtt{xmJRv&X+*+L5w`UgU^C|{rQD2tI4?IW8yX%aT)+lBo7UqUq zmvrLFE|&Q8b%dFA@G6(!Ez4gO79up6U7Af`1J=!yaTWn+4;f&L(y!0Wg($)8$l6`h zYxtKxWNg@;-rS90QSr&a4Dg6PsAq-T-c=4qByV`^MAX?;JAhIINAm*3u&VoB?0xIr z?HU+c3|63pyguUNnAohkl3#sgmzQa+FtF;nVF|7I!A8M43r?)8pG=Ag1K*!_(JlR4~B-=X+a%ZrO4;BUmkJv8)HOdQYE|R<-ia6FOS2ix~v3WeS zuL+BY8tQi!5}OYLk}&2*v*#}xNfp4Y?_LKJuVE!Vl_hlZ zC~2b0kEQ0MtPeh^P>3KRpeohB+>JDt7O?9*rqFo~&LQ;4(WCZAbGCHcJ;2EU0ww z{3Qp?|Y1w#q-JVT6dDD%n=e`!FgT{m?b|tJPp@z`Q4~*3sl=up;AWTGk zBf#GbMIsgT+Y4>nNR#`=fs@ThMSr-_qN;Zj{&67W`iFA`gMxf-{QFrvRtxS`$uB@3 za4NW6FrNQ9bkbIFmyuo|Ox1f)t|N`;#6313U2cnYg9kOO!1XG|k)RFs85U2zFuCa` zOpn4cH1+w8SNN1DpEv`Vbby8Bq)@Dw2Ja{dZAvPIk@hKiHV3-a+pHfYhtv6#Uit#t zR|BjQVfj;)@9K3M&#y|p9W3ulE8i?`kga) zBQsc7Y^yOcxDa`C44c9xj2&NU$=9$kAR4}FDNgB@k80iDT}SpA37&BxHGYB+rsk27 zuD8(vznKXVy4%)IKsyC{c;`e}%}bl?UM5dxqhT@-rkm^I&hJW|C`E;Hz~4 z>B~U5WggWz0_dsGF)@VL$0=QF+OZDR!ozqJ@2j2LVob6q#gn{N{>{D|W~b2(s!*j* zyAhl4k0egjMl5;n^b)7=6j8-6MCpf279Xx3$jLaHModRxHG6a|-3+L_N5jQ=C;V7{ zP$d+7;ChzcdtOIuT`^~|9P-M69G@EDm&>p0Sw>Y8vHg)t3bPBUzMV$6QayyVEuG<; z?O>-FE2B!<1N#A=lRiG0Ef19x{-u~QS6~vwB>;S{1ST=CZR$e7A^_Aj7-;a%25$lZ zGTTE%W##cgFKOJ*si_h3&7KpriCm@_<0abJtq(X@>LT_>5^Sa@kj4jq{G5 z8M*XK+5FGcNX@Czq{xOPBlVBd&X4M5Yr1wB;$s+(`4f9(HS2^N#ko z8qf7VYV@dWP;oz>K5Q+G=FinbkI`s$o-;M*aU>b{(9e!-;W0o5^GdRQI^ zW<+6)&VrQ2>Lw<-INVG#VBc26Hx~tdK5o((d91rLv*Kku%pNkb5c;9TZeluGw{Ujo z6XQxkwuN0lA+6+~Gs@l1l*xIY5fce+>zm9N4XZcZ0jhhe$qs;L~Y# z3yGPlk;cL-}_H#+d+P+6oRMEFFGwM|}P+)n+-#qLweD zO4m#yQsQ^T-G&|;R~J1D!mqRuVv%p=8`RMiqNDrxdDmPG*WB8+e{FpUsC}6LZ4Q&o zp0(`Cii&|b$8n#53S>*=3-TL!S~|KXuKRi++!^TK`DypT%Znf!xh)}}u>~OXM@k37 zn1OzfJTX@7W)GgKsw$`EtzJ6xQz^uj^c&#cS?>QPuy}r|QefI$%(1rei1;n;614E} z?t-c+eCIWRhY1xU`4MMdSvE0q^`?<_O!fv&I*~f2*lC0#Oje$0gz6_wYkvbHkRdY> zwk__-3tvRVvFl}~z{0^YHIjZE;J0Xa^ztmr@y}Dn5g|=bc+;{fljmi-b&Ihi+-1+6 zP1)!8cW13@hn^( zV{UuBba3Q~^vy=PkLapB?9_sup8oO;PV|Lq7zxMwH&2;ZSx3(D($V0nH1+^bP8Prn zv=H*xL>3q?o7d7Tcfg7$0cZ{A$|lTg1{OK0X(*10 z!&K&j4>*Tsg6AwouGVa*`RxYt8|-?inh zx&iIjio|dlQ`6EozB>}>`03cS=PNoIBknGH_qy_SU2Kb|%f58EL37O_wDE9N^f&*x z0R^G97&{20AF^jEqnM(fdw{$h+fts_K%B2U+PZ>gcoiSagIo@0;!Q3!XxcC|D>E@M z=_?c^U0MM6CqwibT`aT!az|8H%@XoY$paSLVV3F%MB;x_+X(pP1c*xLx8dCbNkz3l z+m+Jz&`>~U|E0+-{_gjf7nS?{Fsn2tYead1KzRKS-fa(Y7>xwJ8@SeWhHZA6pMD6nbx^dg{`j=T`z35&+#Y}=hf|4(suK17 z_Sj`JWC%XSwm!h8_CrCWpuGf+G_{NMg1>(jez$%^c$q?LnP`r@l5)o+ddw4mqq3|K zuPo(vA<_}gV9s0sC@s!NV45;eV#T3MeW}l?>Ll|rsA*sOM6JpM4g&{xIDo&6NO0JS zkPk~Xal%GChM9$_#>YRvNAvS#`-*aPaN7||AZbof_Z{FzdSPG?`78kCSqkgV2mZGU zmmQ&T4!d>+E10fn;6x%-rZZmP=bI>0GOX`V&Y3qW=yO=3O5&5&v>ZyFWBSl^~Q>1o;}C+YUJlI=l=-EqHC>sBPO zk1`=4;ie3Kap}t`Tl$FdpTe&)d;5=l8&pGF0pYYovISRKO|ZKOr^RCvRHXm$?)BF| zI><@b&xPnlj?~Z|=nBz-Mt03OYElnaXzGP3kNp^J5!rCxQ2yJg$jHatWR3*;r43-R zHy|BAbptRfxE>D~W>mgj2A@X*?ho#_dGrPZ^U>Dg|UueUk+H=@*8-s}A!|zG%lxJy!U5ta2H;xaL}I zhRRtYx5=3 z^sb~R+RFT_d(2-}DrD;J^H@WwK3I~-hZ*Zy3u8+mrbheb_lJ62h{sMa8r}I{$;!%Z zhWG9cS$&#-DiG`WM``+mByE#wWITX4m+pKV%tojkS|^~h#Cu6G_B`7&7$QB1XBH+C z&W&=?e|MXvAiuz?{}>hY_htP{Gi|ycO}{+cc)^SzVSf>(KtYb{}~R?ykwmq(1egD5eW&ZRnIXtJ$1PcA67&C zoB>>7js-q1!9Y|uSAR^v2YqvQi}Jo#?RS0ta{+$5pusYKsH#hhs3rTbOdtBB(?+qF z%)8@z)U=2UQ$qK@7}5NFQ~vOoQ!xErZ+S{D@&WYD00Tp6@1cG}Iq@Cyk%EFGl2YlG zZ^w}iOwsK++Hhmp)u!0!;0t5x1oRN?qGlrDaI=EvzkDPh#wlce%AiY3Q=$9)jnDbA zH#rD(-bw!c+~{#x{P-5U2xu>>-;WIeZCf2W-yHwj(*C|%=30pQYKNdeCYaU40)a9h z<$u?Wb4lVAr_BH)BS=`W=4o8%*1&Jt<=3R^pZCCH2oWUO;1cKePGHl0uf0{Tt!m1O$`(w(h@v9Lz*o zMVSZC?nwIW4bD3iuiN}H&Px6ek}}1NK8ichyGs*te!F`%wYrWldT6=mv^Ab=RH1~X z-jKl2&c3pbjHAj*VQnok;Z0oZ%cYs9$6Yl~5+5cd1}13kcCK*;8?9z&+? zN57*T2(@KOy&&$Q%YTfYrc>^s5txdP9ef{Ppz8`EF?iU+xiJb5scogebcFzRt$-En z&_GvZ@Y2z-trGZ7>T4q-^w909mQl=yc1b_R(5>l4Hzr*y`mpRfhp@q2>Gy$jS+@!O zxb&R8xh8kVm@Uuy(VIorSTzZ%J#`DJOvtv9;I^qiHA!%$D#rZ#8~o|v63lL7$C&+$v82bCL28G*t0XB(OgyV37`cnq-5mVMs+Qdxgz{}O9}Vqz zGe@2rtqghL=3$R%tpHxj7=5l zY=s%O$l+8~FEo$UY%c^6{;VHvHb3LX%0a#)(ogBvcI&ZnU~ALf-+uM*3H76iA7l~C zbj|zksjNjJeM)BoX8qOZJEgb4S_b@T=V&iN*Fyhy(+O8oJy-Y~gGR##P30OdH0JDt{e z{onjAodj|9GH@6%o8{bhe$xN0P=2kH)FAlr{$V41%*1vmbNX}qAn~X|RJE7+qA&BK zY$Xr;3|yf%%~Z5L2Q2BZ^M-;Vdn+SD8zW|7eNM#t-1tY?(6WxT>h~*OSQ)n(;O>@K zl$QqzxN9{lLkXha5=bK3YbpVE7M_E@Z{6Nh81Qm>MQ83{cuTU<=}03)^&px=Y%EJ0 z-W>k$v;RQxQM!kjP>ajjn;cLVjSMvDQhd?QYpX}2prL$g1@_e|t9=39trT4@ z(d%E=@$N@LT|1|krh}JBZR#TrO4qkeBv0Aby(|M1k3<^Pvdf^T0Ug1DQDXG`n1>nm!GQ6U*4iB{SILR;c#3-seFJw$1WcE*@J)~)W%(zgigk85(nSYY+ zBSXMjT_cKLnsW{&Efr)ICDrbcRy9`C)XDZxuW&JQ8HCK<)T8G;`qL!`WOUF0(TWnm z<(8~_2H8!IjTBTU-R$qW?Dp4@%^NwY7V-Rw!mjAqkxQs+ZFW{quC#aF z3%_md0$W?Qb8gf7*KX3@>w>c;>Q?BkkH7rlMo=MslkrWk31amuZcs15-iGhtA4TKs zap8by{A?t}1M38In{gQWA#577b2;Pj3@)NN0I!L^@J)aOp!J&m8KV6sTH3@0g8p*0 z4)E9KNP#BBCzX1A&)N)KFRhm-8wCB>=`LA0_&*%`n;^JTY2T{IHY`NSZ&?wqIZd8g z$V)tU&venea5sUd9yD+~(3<&J8D4$Fsc9|vA>GFsn`;DLRZk}<7wWEFtMDP}D@@bjSS< zzsDMXZRGVW*0Nv^|D>R#bfv>XOTW7`49HaW*;{yX)_l4h7!`D7uctfQP12> zvF;$owFXws5vUtc`@v0F4o$~P1{xD}_Lovm474E^Dd)qZI{g-l)v0Sgk8u3LeUv|+ zgZKq4Zu3_8^pr~2ZKoN+_akfe^Bn`EdNO=-8ARF+CAoWySjeN-xSn^|;%fG;)wr1p zz}U>G?lBHJy8D2t8^*!Aee&00|C!nU*DD#U1m@}t;{eU6Jzy^Y|Ez7x31){MJ(+p` z`Xi`OX8HZa*Evy1GfT=okG|Vq?kAWTO%*3s>_Ylv!^6HpPP$&d(v=y-w?$zh?Dc`F%M008;cmwz0@Sfe z)JZxDvH`p!1%~CMk&GDG}3t*AS~Zg9F0q+ot{-|XeoSmliK@2O*06I0jZ|= zDb!GplNiDhQQmP{nOJ1_*1NeB9ks(=a@czvl85`H3Y}NX zy5hWLvOg!NOuwQ0OG!15Ab2hrgv_htA6c)JN=MXTMYr1qc?0(ZsL3B{E}2aK%l#?&w6zobbX{Ur>j>oU-8$6{Z~0z+)W6oD?CwcvB(w0_|y#! zfGnyY`SJ+JEcFOTr~zI=YKnL=#@(9(+H)@da)A2ENYle6nHtYbOzzrB>12kHAV{E~ z?)oY?N(6&057;@z6ZSmLN}E1q3{nzY^FuO07K zY+X4nD+N(*wMrMON=pn`FQhk1)(-&nxmV)_mfTR*Cx z|K<%nFcB$OE`|~E#(h^3aV}Ck0q+Kxjw(U$6()iZZJccdPvx&!CTcIlgP# z&L+tn+Agr#K?*ef)P4_C=xZBrm5LzDIoK@O^FNm3pEu?lh>WJ?XxASWEob zlz7dgEkINKs?s=!7!~^=r+B*9?deF}Mw;j8Lx9kx4Ir`M^t!Yw(QhOMKvk3|*yIIW z)|MhAbbe{#848$pSp?S^2bT(-Ur#zjKK(}q#A`u|%+p!OKFiynENJ(VuZX)t?E)X4 zEF%3P12sDs7{T1#-~Zgez(DmeAq-i%9pg{^^Y;MpU+YGbZLPbM%dNXa#y<^RF`ONB z|L6qOeD=B(fi37~vi==!GV#7#W!>T4TqDWOM0po5p*xsCA$}1+9ei83JLdzs&{vLo zIVPH=I}(zTijck4D(sddgaNwUpHbPDcT@gAFsA45ouR=Res^1GImQA+X5M{N^n)Yl zPJ(TQK=L3i>B78wAWUwB_3xP={dC`u8>vGOO{5Q7XiApg=?4^iV>+GT=02F4C4#o@ zLJk`Lt~D=~a>9g>k1_>I(GDkP-+P)znU38;`oWV-)S`?MQ7f7Usp-DHb7@jUqiR-s|tq&f=z6r+0{F)@251VoP}D zeOv}s<$D2plqq6A-gjtTim(?bcm6C4i7A`K{mBI|!QyuGXnxOj8Y#Hl@5c|t+e~?C zMr-|XjUt1cS;8xAi^E^V^dFW?N4Yi5lm4}t*+Pl$S|1TH5s?MWe2j|d*2pOkP{DL& zucew?f!wTOs^H78`?(S+2mm}}X`vi|hD<~}e3AtgzIyBl3>7+?5T@}u`63znjc4hMnJX>n z^;rUKG&z+x^2P{$oryM2S=xSUgd_Q@FSDh{A8>qLGH)VwthYlh#}wF`z)&@<_jm%| zoG+ITitQ#gQeSaZFR^`BFP^=;5ad%P9Jk1vVLM6r{N!uzmbeWY7-(a;O;npJ{LI%M zd7Z!?O}H^P@_~X<_%I3ciou|5*}0m$ZiOqK7-hVumdZzW|LX`^_m-fmd5- zP)t)%@A~$D#^@3-jN9mn_aHSOo6Gw02%;RWArtyVXC~4FGU--9ya0vGf}?7QqP~rf zsDB*F=Xi&myG~x7fK`B_WNBsfQ+0WFtpUmB0nM7eHvY@du=GGZKBDKVAnVnXUlr@$ zlP!RqS;FN9&N_czqn9pTM;uRO*m8DP6NFjPS7EH3qh}QBgwwin!1nU-)UYzW>z$r- z2PjJ1Xc}N9u5Fo))d$cIXQp?cPn55|)|{1Z@cb;)U@eqE?uU-9O2v*6(lQqnQM_Ft z+*8V^7)E!G{H1&}NQhv67)A~zlRDG_Pz~Ns_gKg03iWTZ-ut|yx|R0J)7KJVWSVG# zU#!WVs#qAfk?d2(*PTTXBV=us=q_ngO1|9=jAp1DFeyHKXZ7W7gQLNY9!ebLErNmmq*Y9_;Rw<-4YsCj zxS8cBwi|QuY_1#Zc^vEb)A?9fJ$XwlC|JR%-r@9#GBa1%M>+q1!x!&3w1Pv!K7IFF z2&^-bBCMpOMD%5MV4`bifK_1_J2U7+ojU zl=VtFiwg<^&}QDBIcL@2HyrSBsC&PhqGZq^o7YNNp?$(XSKLDo%x6C}<1!i$ef#c} zQ`-G<@OJ0Ifd;!Z_-I}eXS|q4GO& zvrA=c%lomWf0eD?_5+0nb!r0JsTx~8P|m&!wr}ift)Ma|+8RtkmAkG|by6*jneAe$ zSem5;Q9EW(qimlX%X? z<{tAfi)$QwMT=@+a4^2(CQb28Zjc{_^}S+iA+&b%gxw#Sw~d-7z1Xf#c>^V*gY0C4 zb3}TQz()g|uPvQD763hfGb%j6lK&Oja?lxIh`w9Jv}3{YN1+0l;9AbGu(!Lr6__rQ zq_k(%;Wa!Eas_ZY7}a{h4NA_2^Xk!7m$lT?hV}Ty{|C3}4}p1wbiOx3qIumv?FKOC zr#f5cX$j$@-LUDAv57zCQvqsB6VEbyG&1q;UaDVCJTIBCdW8r314x5{{Rr8lc-r8^ zk@8Qw?$`fJeE9T(m7#(J?0fcUsrK0%1#_t@!Lv~OUGEGjA5Y~`7F7Oxm)7fEPxkO0 zr=5ch5CCxNIoZ2B4vKCl4Y`!k09m*~?-EGa@Cl>S>sD^B^!aSW3?dR*2(a*q z_Fk^s$qE39L&`fr=?g2Li0!tPoB(T<1YWAQN<{5l?GrmzEny2o<}a5lt2fsw6N@|Y z1ulj19M=gKvzNC!1``bf7~6+&Vwxrm@)pMpRw2NYoCGJvUOIswW%DAyPRWknS)t7E{+Ex`D z4@AI$-%k*=U&%dqzC`w+_@}e5cS(}{)Oz984C}nOIb79WOzu1DzMngbQh6XyC3A;s zlpm_7U8ZT2y_bv&86XXaRaH^DuMn~V!1d?P^CCi6zF}3?!_>{1tWjR+Jt8on!!3TA zP*qk?z3yTS`Lfg#t@=4MJ8Pu4kXsjRYqJdEIdaK6GX1uCYZNUvH#b6uk)FPl={(@_$^rf8L0{Mg$uUAlr;4<#L4!UB=vC}OVZtmHkleD3Ha2hm2xYnwyUM5H(PWgFkin!FLsO>e9y=5 zYvx!T+ZE4Sd}Z{jAj#fZ>rV#^vq8EVasdkIhLC|=D5om<-Hqh%oxE(%!uW^aSji;* zM!9za%R|OO0`O~$T9=#a@6HCOkb3z7*Nv62$#iv0Jj@RtZKfz*eCFzyajkQhZd{AD z+=KD*&*?JuJ0++b6;*07Z8S=Pb`EEf=^)~q(gNGof*PfBXS7~CW?aoKm`xthsSGy)(bh|7Qhp{qB3)vtHAoE@ z92(DtSW<^4as%UNE2^KzI^4zJ4&@3wWss*hCX+6{2Ty0hy;A|ir>OQPfB*VTz1Jt{0$S5sSb zX@odt;2paQ&o3qPRj{$G2p@3X*5B z6FSEH5tREcOXY`N)3~S-PxG}Rk}w$gdE0QAA~o}OLzlthxo)vMeoEjMe4!lw?bCp{ zv~umNQK}LhUW~WpK7xiL3!}k;d0QmAO#YAQ&SQ8Jzw@%S#(1i9m>vXk4@}n-3gWql z+$oheC=Q>>8v^fWS%!fmngZlU`S|tan@s1qe>&f}XAy%EoXlY-1VxE1>-=EV0B(Il zhW(;~^YQM6w-LwAgE2d={h>$kY>fsZgs>%Y`gGlw^4b&FSzsm$1bmRC0p*0oes7rCKz7iW7jTKTte*--Jp z{K^Gn!}MF378g5)-2~GWcZpx%DO~CY|adC&zaV#n<4z z?*llppA%L|7&)Qqs~f2FKNOBJ2|gP-9-rLDUuU=qLjO@NaCL=%e)8$&E7JNz6Xfa& zYd`@XP2RWAE+ETDnuLCk#vjVw9jfqaM$}vy5oj;q3d%u^H)pF%4>z5iU!5i8F@xB= zFq>N}adu$exAB8@GT|9Qik}(1l`_hMay`Qq@bA;l<(k()w&2Qu7W4_qy{+O4Dyua!Yl`9`8|q=2fTJ6 zUkQwKDs=+tDaSz)n2#40w%bNCd1V{kgc3+YE-!S%)z;ZRFA^c7v6c)re)&rU8) z*+a>ls==+27ubFTY8f$`yIRijGk9WvDmx(y<;Ij&=+WhC(x~>eBJIVqqO{*GwaxQdeT2KJ0!e0}QtDc~Lz9q>MfW^Ms?R z_DCT;e4JYj!TFgX{Z9b&`%OkJlFsqeTZIi{v7hGETm^s!K|t31(!W$2d_Oq5qU2Kd zgBjOst@2K=cr!z~q;?@%=*x=o2KEjyvCZk~%pTXQZHZ`&^!hep3CG`5pk>_&hlWfS$w5>tekm*SrtA1PJ7u~64 z3+$$rOj4-NTo7x2waKlY&f^7_@lTwsHQHNv4XL}*DHrT73q4InVGDD+ZPh*ADpI~r zq74#Sv(%_na_5|x)ms2Z@#PH>6HT`LE+(f}cGinTUbZAF4ZI9-skjS+EmjG_qvhO~ zy;oc#*YT^EBcmr3vk^w}IUtE%(A|pjgOuW7l(0J0PPa`gk`^Bbff7ejO-xv9iwyXB*OJ z&T(r|EIpxO)qfcG$d4Wpi8|&;yOWrqM%Q~FrCYZ5#=dkuJLjE^+?&pIV=HBL*cnye zrg?6~16*KuUw3bByZc5eNyd0>cinMf_NY8*Adr2&dO8ab?zRvcW#FO1p7MJxaUiA$ zI>icm)FgfQkL{aAkB6WGt3J~=r z=-m0Im1(G?k{xfLO*HsEFZ_k^3cfeha@d(48DyNRoo8Fo4S~J~nTa~Ae6RKwV1`PD z-r6K?+~&jk94Ri(#fmC7C+2VUgnBb6;FRvYK?;oT_e*&7>*tzJLv?d`<7>WfDM(I+ zGZ;y}Xys-F_90TLzK5Xc^hr5cYRD#K6OURLJm=(K>?$hu@OWL!Z3o06y3p7oboB87 z8Q4Le9(-hsH9xsYB>lnnFzL~}h@pGS{cFeV8aMny4036HrYz~u_3Z=g)xey4Ej#G8 zg3G5JXgBBU-LTWI*7aWkKs%hwtfw2&w%x~cJVj_R9=4tF5#rC&TPg%dQ%G_Xe}bcI zf%Y|^u?=$i;8p|4!N>Y%nSnD3XIzy4pOTmo|>B=Q=l<|-^>*n1tv0i-?hAjeOthx3c4^H z$xsF0oetjV4gsv?Wh2aQORZ&CUQ9Y(JZFBAgfBBTMq_|}tN1{(%!ABlf-@l&UXJe% z^aX9|%peIRh%URiZoN5h3sxR4g4`?j79-{9*;Q8S`oLuSx=1VMZEAZ;*v#w%iD2a^ zKFA@gInvuZ1_&TiEgbJS$uw_-QNFD?Z67A`7 zSiO2W*2v)=saT}{NU|=3|4>&eL@2}cT{5zX;~DK8VRZftcAc<+&0ZyM;=vh~jj&x9 z2kXvkW{Qg9G_pNR=*1ApzRuY!P!MuSzP`^-j=i@#p;l?gbdt=wjA8DK66-*B$SpIX z8QFQOvKQq!aSr2!{IiI6pk6J<||wS8C+OWf^aB=YCWUW;m&34X^uX0i!s^u_kQ&E zkCz3Ew?$A7hQK?n1`LJGtq1-eKu()wKbtVi1|DDhVjxn(eRKAC0DP`8+i`W?(VlE& zy0(^?U_YtpL}8Gj&Q9kDRl^f%9*MBq_!K4enMdOu5C@f6hdSae%xz94wz|PG?h*)V z+0ttpiaT9&QBV1YsI9;>GCE#f-h%6NJh=8Ze~}=(3%UP&dkAliTz^%E8FOeM1uA-X z#%4E_^J6NEBnTNVaVKpsw^s@DMaQt+oyKwVTYqASgY3=pt+ezea1u_*E7Q-efN@~} z7PB}*MGE|U(`-6vXLeREWF_6gcH5o)R|EQA@BQ{=0if{yWr>5zUm2~z@90kN30qRh z@e*VZ>0i@O8;iO>j7}GjCy+yajKj>m_gLTkpN*}*D2IQ2)Z7R0V6;1IO5qUwnc9qu z0;II*X&dC4eCtk|Y8oB^JQI*&Coo*WWBR<_@Zaf*&3dHWWns(<;6*=W zg^W35A1g8KfNazYAcsOzrB-AVR$xWKzZSF*qaZWI^B%qHScxC%oZlM?O1~;h@znRX5a(B86BI?-ctgM?! zfybkj5^Elbc+@~XZ2a|j|M8&y{a=H*zvFWCVN+X(VI*yDb>3mA8Dmr&9UA21nhkE1 zV+z~q(f+%Tp2F&vgcr6bTz@}p;Mi~8-l+a2b!T=LKs^mgATIB_J|38H-{oN=&pC0n zQoh`9s9$svbZ%Jauk|Pk`M>+Re~RW;I$V!C$YCeeq|Wf=hiXI5dKj`E66Q>xuW-J$ zJ%iv&$7IFUXaCVKf<%5rg@(b^aC#|C4FsXcd(ye{r!A?Lae5EXKl(CKOF+MJw~kAS zTQCT3t@vT?Z@bt@UDi5n4L|?d0@$F5eAu2#^7{MVJ?}ri&3|6^Aop`|zGP)$8M5$d z&m(hVQSUs)#JtJj zDCGDO;r$M)X)rC~Xa(>zsOb@J88hE4(aAn2w4ZoK_~U3GXm4%66~Yusd4!-zqH`!ML(Li1A>w zjU<`H*)v;eTarclvyXj_$@GIkXp^bpov*})FImi>)62{3HJ9-mV`y-o=L^;Tiu>78 zI!)XEip><)qW=TedQZCZytDO@p_G#Zin7m_`?>DdagBxov?ehhKMSCEck263#v<^y z+y$w=HzE7wECFo>)P>Imo`{%N;!`sK;PYvDAcd4k58dxOn01*r^N4!HjRN$(o5zl8 z1^NIr#!aAMKKp5_zHNfulRx1ezqoflvz-6A{tshs9Tw%*_6=`RKq)De1|=0lq`ON% zx?4cHOJGL2qy$7t6bb3>7&@h6=%H)qW`=?9;(qSf`+oNOzTa`oAHxhf!*#87t}}ii zu1Y_$jR{WCD3#Ro6O1YLCCFjEfQk{W^9Qb2q{Y8__XMGGNrh0>4^A(3nu4AL|7p#B zKOyFK6(pQHiOK3-b*!qBZ^R&Zh0R##CHqs5{2#qkJK{rc;SVec-8ulR%hlDDju2PF zX~+BjM_?QRN(|ha&)CY6hW+B{)7Po7)5CZw>Igv#l6XOT^2k_6$@OhRJD$H(jDolU z(DULR?l~Qv`c!Mpy=3O!T{7E@srEgJ|EL)8(U}HI72tN=uc5h%i6_8V_Wu+N{`GoB zw77IeK{U8GLjY2*_ps~3cH*W~7Xf|9FjkHwnh1p^o+*9)tx=&Q-CXsW>8 z?mOD3FrX2ecE;3@JC{(Gd=s|kbXETDxlu!v(dO+^5aCw$Xi2BQ=(cbjMWUimqP|iP==HMZ6X6sbcTwGifTLB zaS8U91er0OY>R_L`P*CQAZ77a?sQ_bRAwe|nVc1|#}`QQ*KXB~hnP$cs21O_J9$V; zV`lyQnRb2PVJA!rkdou-*I-!1T;Dw0sD>38uicLCXQou&yW$y%BgD*5VJ@-( z6GWT|M%0(|coU^xJg4*!Z1NWZjF2yH?Y5*q_|NrSWkD}~OpSzHKhdpPE6O{v!)4rd z1GvfuuN-oqE5YYLlK*)ku?ixd8SYPR`Jt?+&s`BH(yyfG#p;2SOO;lU&AcM-zrhXyDJpFZ}w!$h?B)jKjenNqya4=yTt z?vLsuQQhJL9b-EmF16j^C(hE^M10Se05@DIWo3N8+RYgtg2VYv$;ilndrfhg=9e}Y z3XIt^>%H#~9wNA3U$-z7m(JwW^Pc6V%l#>`{a2z8P@=j7pvr^aAsz#gAfSszn8y|V z0$^MAfe?n6s(tCU@!Jy?yCp^AyUSH%+}toa&mh^f8YA=)bbTr7p-dLOxF#oth<7}` zfZS5MxVU&|}94+j!n=f@|Nbup-6sCQKjn^dGnSr}G%qn>;{F97kDXBbi z=t-EH%Blg_+obWN?}-=95ER;TqImk*4NvjR!v-LVT2ZX_3}~;+(%#(XyIs+`-iA@W zT|Hi+b#mzNg%hkKP|q|J^KT`w9Kkv`i=cbidlsekl3L0g6l-v=^`#*gUev>Zy5SLyY@05iMnelgKqqH@@{Qm9LFqj6=?H=)9ARtYaxXZ1F8BE76H#RmHn3?lHC$fipA5OOrufF}? zZvq|N<4;eY!qt3xDu+c2W&B?qDDy1@vzOFmfp9;2Z0Cug@>^~?Xm37>0iSs0Axsan zO$F}a3A8N_+Vnqg)NJDcY8JlZcU{xaM`U z1?rXG&f%tr?Nik7cs6~jM@-XVO%DKePqiVwtIuEHy+*cN9Y;JW?F@QY$xI;aD3OxC z691pupu=7-ju(C}kOdstP~)=y%}^ghq2f z2VmB)wLyc6Ev^S}UOcll1~lqAv~-L@0HF&zZu^-EEL#85coljoGO~~#Qen0oK{qHQ zwAS}(J^2j3_he&mT#r-?fQ-tg8glUv5oa`Ue&${I%nXa}y)#Bbd#oziazVt1$;BJ@ z<`V!3gTiSAT(et1fP%r9V3&{TIk)Y^FGT(NJK(^-90uR~gtEY5!_5Ny@)#ad=L`dU zW53z7C_w4_PDl@-KIKS;RQNG3j=DP_N}JD9$+0450*g$h5I4vJi-iV{xFXedJ@0Vh z;N6tFQ2+XFX(i-XIf3wltmZ!!&D3UX9b%{V%@L}42&9)Q^j|rB^1Lm~XX%a@Eahvi zRCz1p|3)kWRNLg5r80*+>)Kpy1RKWm+fwiz40I_cM~5wt|1i!Lxm-`6rH9lR;$E!; zl{786hm^pRXGg5oT0=SOb6ypD+56wV&!ax3efFohtve4o7Z=x=S5V)ql9JLHrLw}X zog~#CT>%46jze{%!GLLJ9iSoT!Di}n!kz`Gg@Ftpk5!eFI->a&e>L_&k^sN+7&Hv* zEjt$kH-jWG=_}yw0^m!=U2aJ+sSd-m4;qUZu?+5dC!?;?ljL+=o>ZRR`b|a$LV(Dj z4vQReB0Kb=woPB|Ug3K)fgU^hy2^!KPGJxSf0+eLyvQIS_%X%rusULHL0U8)6!QI9 z*suIz39SCN2GCb+Zkuy@7e=EgGWsF%*hkh6HU^hrP6jR;b$>}- zN4^1!DIMZ<1;Fi-0KzR+vEyRX zXXmG%6)V6<2-=maV2B_N#MyoNPFQbPr{$RJ>w%%P{N?q@F#N+6J*#() z2_VQw{-pmyAnuLl{=6PcHP}C3CDpE^O@_iKyKwD<@XB$60&*F$m|Wdlr2I zKHXmYojLX48xV(I6K%N%LUy>X_^+2?aa~vdR<;lA-X{820!mWY=0<5%;g1{@t1+yejNs z_)XqmZFBZy65mJ|0ri-ddTuU87DwUWF*B1jz5p`;7-vCKUrl@9*%q1%-tk2-r8&bJq*t zR)>BhK7afpla=qTbOERxet%ruG&(H@t|dJpf_q3iz(qF5CrzazFZ`VhhP#dwzFXkh zx0fH^=pF^!AGaQo1@g2Wj<8B3Q5+PqPWxO=!JXbvO-t0HX{!lSaVL_9cCv7gLO13i zztN~SGNbmT_gnI@@n$`p_LQ$G0m~!i27k%h-ix8HNHS+}yR7&E$=?z1y=^Vf`|#Xv zt~RAaDPEh45m!byt1LgZ-8^4GQzUE7n*&&HQHZnq(}q)ypD4210OL@27idME zr37?*vjvzWj>H6-FNwFAh$lXO8t?(V1y(dg;k6rKAb`l2J{DBj_oL-fK$&{Ub{OTT zj~56rS6accD3V2O31W&wXUp$9Se?tSmjT`{CYQsGhTw9jtNY5KsP}S^k?t#)ufJ^0 zep0XeK2~xgd0{QJj*YjHTCw5n(@wN9UEFItB{r@)RfdO2TL;@0o=b&MOssOPc-MQ; zFY1mZOJ5m!z2BrY4wIxvSFvtQSr?NvZ|?s$4th%ulj+@qZf-MspEruRs&>RDeUzd; z-0Z;65pYZL@lV6?NDk6nRZV$?<GQ3}X#lcx0%sx%xn;jOpprZM(MK7Z2=hp-R>=Id3?;@Ts+EuI4;%YCF_Ui4h zv=;@S8D!!ciF%+zqX00sACV?UUp;0&>a!Bkm~yXRHcCfTO%E%Sn=t#@3J$s&#;}q8 z{NtR2044f#K4fxY!W1AC3x*_Rub4+3IOA4`{43%8M`BrpAJ7#=0lh!;w7C@L=IK-a z;!gI`rmWb{CFcluDRlGm`8g%*65H5&84HyW#J{8P#2^9?i?HPr^Zx<5-nAARC-5DU z#SDNNd1d5}u{v`$pQ`)&1A-d1ZJCC@GlVDrcYvw&=)uGPk;2CH+&)UapWVh*VOF1G;LS?gR15eOPZgwJYb+Te}54lY1%iG2@%Y&`N))2gvF-< zUt|KtW%q4M$R@~z2jo0pf4$tL>H;q{mV1-fPbOwVw4p+ijqE4%F|!}uf)-+j5$<=y znK4pE+^j{F0p19vmxs%H^-upZCm+GZd3QF{deJAk}5pAoTG8~)tzTHtc^)hl4PZqUIlFK z!0DBCl#3-5dRODIqq*Sml(K4%W>#&-w2Reu=!{)ryPZcpaiIhxI+j^y1A*@H#LtSn zHxd(vrMzs(*yY?ezXsOlXXQ#BKOND)4c~I|-L~1o7H?DCynGP{6;oJMvW5&D`MGas zg>MZPi{4XKP#85)seV_?v6OM2E1&p4V6B{i~RkEuI>=1CRCcb8sneC)zqX{I&*P~0oSvEVZy zl1e6xO>p9YXi;D*y;SHH(`Pb;_TQXvVwdl@DN>l;Sy%7b5a(yMCW=Z*LA)eA;t33T z=TCFekaV;dH^k!at z?n=d)r46P8F;<6^&5&S=(=cTv-d`Ga%nW+Ce#*Q#8c&c>+Eg?aaycyz5Wu=M#PsY_ zE#6x_q`8{PVJZG4VPB;o^hc^9Tv*-85L4OTfJ*LJlDQLCnWF=}aP{JCU5d||lIs=W zk6Uol8nbM*N)bx6(Ao3;lAS+lTuS7 z?h?&d^Ab0{WqUiNpxt5V?ukz3VTlll_Io__IS%BOWY7a}!!MtVJp2gIPyU<@6~Ad^ z^Sl4Ls%}Ri{7PIyO>5ob6X6<&IZF(ei@r?uC3j$NZ!f}X`H=+Hz|?ze?!Y$jJ;{_F zgsA*0J_S#v+vz$N#;1%4!P%r=Tp$Q>SpKZB-mh;r_*$t2eiKQjS} zjYCdsYSeXeVcDN1zF z;Ez0)ctx%!r4Cip#d4cMoC_xN^fz4W&iowA|J1809SsC_JI}`e%w%HdqwCMAZ0?(7 zLh$sjSOv=G2N8&i10dTxiq+p`rUIX&!QS7K**-lTSLHLGegE>VRs0@(QF_|wL1^7| ziaae3pr6D875)#e=09x*pi{w>Ie-0BPC?ELpYhtD#y&*_X;%#I-<-Vn?NqNtVVFHj zZ1t2G-J%vOVi8=r z*w-!y($`P*L{xn_`Y%cd(Ca3OPwPY;Kuj_Vv@xAjMb1bGs0Fi)keysk{iIG`qGCl6 zI4dA)^Q+@^78aI~d6$Iu)gi_9(zXG?!M?fT52Cy5!l@`0m`l7R>NhAw~!*Igh? zY$lrjI$}$;6ZFtkxB~G@bd&H;QSV<7aEk@Ky9=00KHPXeWzh-FUDz7^sjQVO6lq!t zAdzQBhuIDjqUG^`A+&X|U4d#cMl06;v^?Bx(A}7fsm2gG4geu{Pkmg2%lz~(ZgzjB zo`PMwq&4S0=a~(sBgM7(z&+eML7@LU0ASGN3I!xwt5Dm zbR_F5dR|9OEdaQbv{GRNGRn%)o~Q(Di|$Vna`$i6PVRJrEP&PIeb?ub;xtAP zjb_axu-3C(%GlfedLZ#?52$rLrS?FB&^ z?FDn3q>=VAgp&R+m8-<9()kiEZcRV(3=52|I(GS_&BSoWbnlp1Qv6RvV}&?^Ow55Ft~!1IEOw;y_V5r0M!tZoVM=(Z6<5Kn=s;33w5v zEyX9azvc3?>_gWRlvA+ywtpJ+NBsX>qkmklp_Gq<8)-!2*%e6vDEKvVRBUWd5TR)J zJsNNEyyhhLx`zyL$Q>O>BtU30F_Dvz0k+d6293`e@rz$17h)uLVpGk3sPzB7-grNo z^3y|k%1y&5CU=M`DB5~V_$RVhuQGR$ zUJdUz$ldazoyHKL4M&P@qe@w zRPdiXwATkyhV^;my{rX=oAde>I+`6}7cOVM38f%T05FVf1KABy4Dn-4_VND%IwIuC z&i#Et3{l;_>`ceaP2zeX^b>U_LnkmFAD+JxB6!xYg{u&>TE)(XqJbGyD{>5IlM$bVs6-CV&h+HvkS53LwYS%^a)UXeBvY5w)ZBJ${#g zfS%g)9TmW|d3JbTzCedH{f>z0nJYh&f3fdpnBN>2Tm>MM-ao&I_DZ+(k~Zrnf?ZSt zC??%gJ10~jELIl$4DZ3~(l=aoiPW+4xtd@JKnAt`2zp^uw~u~r-(a2xOCXI9x}w8b ze~3VBa&!}qF5I`9uk-kZal}Q;!d5tLf9s<|+D&liPZLPzP;nU@O(Tr>q7=)HK9II? z4L%>jXo+NVSmji}Y4$>s$Yu%us9Q$Q64_kRursR-T{J@K>!RkXFE|>`jms!H7bVI* z{+fRKAz|_J;oxnsTgrUB!{ zkDk8>HrnxUJ4>c`QJdd}bOH_5*JMuxR{0mj+=oPG+FL9ly3Ymtp`Eu|pB>YoVJ!|K zUenXOyW?C&No*!JmSs~}mNGSGpd80Xg>LN_A9NfQVRdfn;5Bv*j+nVOXENfL(tmms zJPHu>*m;EBWFK(f7-+auXc@3WX}y=w_&6X5({95e3kT0l{LdykZ--aFr77?=`ON`l z1MeRubu{}CexwX^=qb2GYHcPbxzYCf6?#+I+NTu9DS7#YU~KeCa_H;*a>>7Z-rZ-@ zaiiTTRmenI^nhk%y9^zDOho`A7-Z!4xQx_Ce?x{IwdcmZmeqW+&C70P4|a~@@! zve+fw0plj{Y`n$MSVme}9Hd|3RZE32o0qtWSTdtI7pD8OHW>NJ1|J(ycE;_;ExQ?1cyz$xAdQA@^i0&SBQcGh&_`W&JOS(s;ljB8Q&w)K&O_VwIr* zTL=9ecp1McvYyNO8QDvH)3u_Yc{`49@2_m$TlTk>rX?#wOTDzF% zz7Tdn$C5plbE#dZ^$Ex(lkeLJfVvvk=G6H`_A7Y+S?b?-ety+EJXJRiE9$E()|+Dj zggv7+UU*8@Tfr@FX*JnC+E(*rh`Qu@EZPT6iV|S#j@a$t-Awf|@Py-pfBehi9ldyH z0H7K;1I$VtrpwIsNgOLK7JUtpIgHw65F9|3iiLA`A7hn~)0?z|)v_T8?1Ss2crPbN z(b4OWsHU>`v%T6Ka4+#AVj{G^J_3GY0zv>gV<`3e%QWa>>9=F`w^xhplC5QLiL6Db zf|?%1A#Q|Le!P)D5X|P0AVIj&vsYdSW@CDd-_ z*F;YAX_JW1T76X$-@PG6qeq>gAcDy@}venPi_VGL|R@!S7e_0FN$niHin|Dply8L3H z6k>03t8bpTEIj>M{@L%ki&&NlliXxXRtJDvW`tK{Fei-kLEtrBj#_$N{Rr`dvk$!J z#k0K?X)1cOzb7s&_hHq)<~hpaA%iU9gT`JDclb^FokulUG@cVd{d77u+yv*bc{Zif8--igE~}xl)<#G30%p;#3+vR2xsCh~AbtV-~RGRy&Y9 zUH6e^I|Aw+*PU$53O^wiP7qF8SJ+ESm;9AwS2ToLN8H#^&sSbmZj{taw47KC)wgIg!Y1$({eW#Hz(36wG7wL_?f{tU09|&hV zqX%PQkhI;B!EeW5llYp=3kZ)I0ue=M`&pmZn`+vgYx7E`K^JJF6LeBuX+GP-f@5wC zS7WbH6M!v6adHv|PH6&>?8u7mty_iS-Ns~oRhi><^^$FRv$Nv0`)tgK!3+AuYg*@y;H!qS7 zo$z6Y{WJtWXoo=IsHuahc$Zi*Af*1+W1aCM3+MCSC+OlI2AI&ZhpKGG`Lo}U?Q#@d z6Vr4g4`+(OQhDq)RL5yff+l`;u?M~mu55WZcD6EGdm4tE7l>|OPv=B|Sng3oi3)V( zpr1SV`B>5-Jq9b&On8wV-FSARWttDZI(*vW~hQ$L#bN>JPlV}0hi-4?>T z(_?Ab@Rck(Q|2i}%vl<=Ok4-^eCgj>012;*aXN!>MtJQrtc5Q6Ypq2&6mf0>cawNU zAHlD~lCjX6QhE7_S{AN8#2a0-yGqr0-G;BL?0OBggba~6ZyhoSaT4Ktj;V8L7Vo6M zIRYXxW&^(=9x={m4hs6G=JhfI+Wh4(xz(t>^m|`s;se+j_QQt#_21prS>%g&89NwI zO_&i_-#X=!%NJF9&0idT$wXWt z`<{g!#+==-6LB)sAP*`BFs!?tOgS_^!9J0*BAscaL%Bl5J9SC79;ZlsS8}xzxEZqK zwegG~xmw4nJvxU*?oLN2?d5}~YV3cu zbFKH-)ErG2IrtpL`B8^sz+eB`qdM78$+Qbchx6d=zSik3QmAye8UrqUk2fO?qE+8v zq&?!CXtfzREmvZ-AREAArM}e3XW9Omc?90D9?I)`OqF)nHC(f7MO`d0jyPYXfJ|>K zo6KQ1PZ5ez+pE(_Uth0}PUUJSu|GJry%jw7@>--P!abj<&!eZiemBj+hquzM08=fG z&7|GlSoDZek+ofo{YGhnOefFg-3a;q-`fg}_?ITS$cNLHqIkqa0b=(8MoLAYzk_QR ztqkl&E0Us7wpISaCY{G~TRdbZ&NmNLG2)xCvuXCOCW+gG)gi3$3!S1sOkb*sAy&?|FD;YdM#vaYU@;qK7B$Bv*Trs5Kkf1GAVXWrrC zIK3G_hPvQ1xQ~J-L}| zsBIY9)f}T)DIJ$FzVBN&f#%eoPBtY>^lOh4XO$?Q{<)uzX1NlH@OQayMpwUGnZKm* za}!-)nTrL3Ot6MPLA-;6nBcB``An}CwYBt9=Viv4`07#1IrR zPIB|}7F!7DTG%0^+D5(K+;OR;2ch~votc*Vm;2CZEqpy{ulyovH{D;UXKPV(_=Zz{ zJWA9$S^P504mM(H)G<`LH}+EO;c5A;Hr5oIvvoR`(m>?u4W7@c;2(uV)KSu@iG$~Dx-Y5 z729Cx;_r2aJ^9~JvKywjQL53k3#hLRrSJ|%+!D=QedYEjxgu?aVWRkK#;0o*z)G7q z;UuuKG~>$DYP^T2D^DtG)tioJ_yQX7F^V6NEdEE`G%kV&=|IYla2NwyK#Po^yhAC@ z{i@@|4#`uzh`~~PdRQ)o(rr)nIc2dm=lpSl8^?2&-(D)A3pG2tow4pCRvp^=g6*BT zNr^Sy;s+V?^A#un252x-PzN9Q@}d&!KKYtvvf>0M&W+PzlTQRM|80q`8iK297UnA%V-@bp*@pT z)7qr4U@c&~J1QmvTc1!|OW>PL&yt2|MG57}B+`#$D2faoP2Qte737#^j<1y!Ee*qE2=hFUx4e7M%&cnXwxFW@M#M z&yVrN<}JPoQ4+Co;6$m5IaD-<)l#86>izyzE80O5N;|@$-JiO_KVYv>OOK){RH9)? z^Jw<#m}V19+1N}>nbUPec&C}aqBp1Y%t1Z^{!^Lmqg0a|ow(l%qILRQI7|dqvn$EA zm^!5F40rr(R--$NL^x_8cv3{0moy!dmRNEHP1+9?!VHw64JY<`ARSS6dL{1uXg?MnPD{LO8A+R0 z;=CfudH&NeR$N$K5Qf`U9rHrTAkSh0Nkdt5)h@ov$L##BX){}&oZRWyf2duHK?)`- zN31)JNzSQju7N>6UvtlXyAuTRQ=elfD%60~ppFNfR7Nhgqf9Ob_Mb2t1y!|-gEMUS zZ+*&X*Uz3n@plq$(muW|kwI2)lvD=V8S%nKzHsPUje}Cm3=V2TfTXxaHu}ksa#@+@ zDYb4>({#?vf@`ek5Oo|P>MiR%wNf>aH1eX5tp-bLueEz6emDk*MK^h{8w{uQAF1Dab5EuR zBC2gCD*(6^(~cW~uOuY%jcEibhwb`8KUcvHl(O{>!UURmY*|46e|@e!d1YxLQPurR zEr(!rl%0(js0{)NTH+Oo$=Xcbk+c2p7!SPi>t(>5F#;JzsF3RV;RWgfCRF>w zx!E2DKX05oPIK5$M}}qqDitE#IfxhEL}nwcqE)hyIS_Y;ifFP;L~VkijA31O7w%ZU zr>$0pF@8F#p^BAk9v^4y5Ja1OrW|91Z;R=n6S45Q6zTRU^&7$11w*K>$0?hf_)sR| zSFZ{V)v@11LCS{~oD2CzAqM${C<_=Q(~vy-y4WoCo8ExHzK2bM^-mC6c?7qjeI@=e zzE`7f7^l~Yc=vWW=o`s3mrC<&0ETJ!KubWQaSwT6x6Ia8jxU%D&7YGHb>auBSypl1 z_^67^Z0HzHi612;;eu&OG;-Vf6U3nw)f$JtNQ#)}d8xS@9+PLQwOr?0sswvGF7bye zne&fKtc6X6FGp!@39;7ARoRgE%1#PkIk7z=)8lO4s(yUmiqpM=`Th)1Pqi*2g&yZA z(H~PQKa3y4y`12N=NrSU9!YjnHTjUWnERX0s}RbHSntC(8yw5cRs{VyzCk)ut85>I z!xej+9`fTNS}pfuTgl1{;!5}gHU`<0e?Fu+h^4c1mM~3<>^+3KKnyyp@cY9Fx1B&` zL+6y$)jpNvb?|CQ$Dn6j&(3>JeQH1#o*e#M78Q%m?zq9xeU{5`7YL!xQhS}UrpaH6 z|L>_p^3T5IGbxR~0vZ8R#OM#Niy8U!2T1>`q6C)54W^=ER(q9Zp{#f!6#&F9GnD4+ zl2LjAku4WcGod?Y#A~EVAUdc2V=aBj7c|akKU$MiYe=NW|78mgG%>U}toSS3sG6EmT(wq!? z_k(1Kz^Z|4HWiAxgFynrt4G7JGW{@x0Hir`Nx$Z!kU50= zqQEBXOcez$Rgi$0-D|V=*WNe_Y%*uZ{gz|j#=X$u?+XX8F*OD8@N8Usp)eV?&gZ{| zQ2qecO`!Sq3(!;|o2fN!cccrNin@fo2y?+?fb}_KX9VSn6&OG(e5(h zE~`wtntSe*agMKTd-LVFp)Di^wUE=<^_bAb}4p$O>u_{?eF_ve>r`_XxsedKXY zHgV}{i)zZt7tS{Zw$T_8rml3qPgX?14(Ewt>5O!n{1fppUwu~R<;utrc8e|f%6Khq z)WqMtD$_3ao^CEdvppEoXmQXZl<&E7Dw|OGWr|qFxN)7bh8tm_{x*yd1$ZR37QnVj ze*RHq|JSy}Ki5&ET-KC3h5Yrd)Db=V=bGxGiHc6cAk`hJSpFZD8JYgi66 zUg0rTeRSp~aPz9UQ#A9fdH9lin{Vf!Qbudc>zeh54Bz#+(|Y!FBBx<-VV%)O=RWaD zgiQ)d6%+(x<14ur^LgyW$L$meEwKb+C&ovouaNZ4Ptt3>LzM4t$W`fX>((xG`^2D` z14#xo&WR$Dqhc?Jv{jVg!Pwa%$|~Ls?_KmTNd29TSna&4hvfV(hi~!wU*C^shdR`{ zv@Be%xbpF$7EZ@prQX+pAzJhDu&7^g@B=>$`&(b3Iynr*QeT&4iU1*cXh*r!Qc-yP zOjqm+H~*U_;Y^&kEgCfzbgsY239+)2(+T-tFNa(1t3N=h>b~n;#BHRsf>*vOtt}Sn z5>e92tX)c3n|ZEEN?{E%a6uIRqXUrkqzPC&?RARR*va^(?+?j1vd0Xm)EEK&YRUTAo0 zC~+8clveGqqPpNRl`Sw;q->)%(3(UPzsz^w5AXC1M~Q+h-z+Wa?8r}7DO-4DTvgHp zM=%D#F`uWF>>`2Ygn(DaHe{%bF!O4@IANkSi45bz!Ml1tHap=n#{Vw6|ECI1k};ih zGG#B6`}nZhkKB%8%%$2-U|uoszBjsEoLsGn8K7>E-)I5L8zP zG6)9S^N*h4cbW%7le71^W|KH^e-|0*&#Yp|HLtk{z`O?hm|HvQIW^K-td$#=mMuMd z&kBQOdmgaK^J9D75B64uLtg@)9Qqq%bg~;V9OW=DRM_cq&q>FWd$Y96jrM`-3AO~v z?V`|zvZ}~z6~xJ2r^J(4+^|;vy7TMDNxajIKB3`6YP1gs7C>b85DlB1`kpf+1AE`?lw^Ko8?>xm z>Q9xaEZtBPF=~9mmHy0+N#nW7W;Frxjk-2n3=n5~Ka83w^O*7fmOtFzG}Sa^4_~;v zPbo51qy^{wqC@nYpA@*Xt?R%N)hsebpIHRoUFkFvw-U0=IF}%fyPilm3 z4Et`_?rR|c4Ik;;k#hMaeT3panMMOWoiT1y}QdRM;Ys-ZT)k>7q zE`HDPm@B9xp=J<%s_X(+dEo$b#M(X_7Xdk3O&5*-1GE)FMsQX{F*K*zp~b-IqPYSD zba?a98$JM)g}|i7v%igZ#JU=o+9)Ou<>+57f9~}E`+31rw6V|?cODz{IQ{Zpy-X_U zk8}n6AM+!Wy=?q^UuUd!g5J=W!LE}r$`$AktG@h1w`7A)_9EM%uc~othtH6`c8VIR z+EpM|F}|DTqShRp9^v~?T=4K~-mL039ty?qaX1r{a-JE6eZgu(8{?mi*}dST@O_ez z+REaKdemPQf)kKO+!$0ipDjhKB zpSHI{dq{iP;bT2i2f`Zc_Dl+ z_)~0#)&M#72gql-GwUGnt<9enbm|YFIl{l6r-V6e#twtE?dPG+sg_^|WoloZ$9DWE zW&MfnNX27^{*@^!WrQvu!(H_Kdn+%@&n*HqH8F_Ot#EdeCcNpz&ZfIDcF9p%>0TX< zx_&t4VK6-F>0pt)QcT?>>|8PDI;=&I&yT_v^^`Lp4_}FEL`*=cVB3d#Mtlpk+fT9w zUyu#PyYf*rd(Cz>IL!^78E|huA@Dt;gnFP#aa`RJY%k7!I2kmWisrY+ZkDd!<4lI6 zHztdD$c+&?O*j60fty%e4ab5jsEb_8n^`auNw4YTfo3i!sNJ_lhXl~ugRYoL^M0GI z3qJ-rm+SU=0)x(jzlTkp^_Qd@Pe%P^DDcl2L2HBf_gyE@R0x?}^nbM;|K~>=+$HyQ z>MnrdV$V*lQltC?lu!fG9ib>mEJ+tkDG5Q2TvT8>*VsK$UDd4#O0vER$T!m6O|DRn zl*A0`**7H0UN>^|#ZvJ%h6H)CBux){1<-LptJ+$WFLj4)0<M+SE=W#B} zuF&=E!Yl`8#H!S%RI(y2A|xO`RGYO>;4gst6mrWnblXP`HGVs^xWXqznyh$DzTek) z95T=j(-1hmf`|OF*XaBWvzpOyimf!pXcUrI8aBZ)KcH(kgMZEfe73^Lxr>=Oy&qdP ze7hezZ>@1=JCrIq(BPoE6RCS-uScrZ{BXrjQgVmEGjr^ddl{t%Q^(`2a$OyGky#W(%1zrBO0 zjC5_VREy&HfA8}DJTc9nds_=Dj_}yv+p_>Vz|UMtIKhtS0ZhF&C$$xAHs&Nw+7O&@an^v;YFqsSi8NiOxpx_o6;h@BWY>e~qTK9aW0xztVbe}M0Yb7n zZp~$7wk<-830eVv`?d7%zLvfezykc!$nl@w>^p+^a32J+?AvTHl>28S(@nz+6?Qhu zAuwqytC=j+;_6e{^l+Kw@p0oBPJM^6v6O!M>!Ew zTynDYfOaQxQsStHv)yRAf;RMv05k&lcedzV+NL}~)+%Z|IEOa_g~Yo0Y|?c1(0zE0 z?VHc0Dgj-X^|wMENdW6>wmsy2F#xgQwH`{JNYeaA2j+io8ngg!NHxW)zYEX-9--oZ zh5X*!=d+-*n22gC^-J>Ca0{7AS%Zo{UTVt~JV%EU1=tMC%>ngsi4=RutkOD42f8yS znPyPUTri`Bi|%1JQOl&9n&`_Bj#~8Dq@Hu>d7lb%^(qMc-`@myW%3JfStie?Y|Z}W z?YCU$*;G^s(0P!-#MCS_Bhk$|{QBwXz~f}L$d9OovWyojj=Sm2!9Q(@mQXrhb>8zN zLu=M~k~O0hY{<1fiw|baUb@W|=~d1%4?P8FsL`)m?oQ;61y%aLy9;#aGdL`&^1PA_ zz|8S~O*-H&100YC_OwGZThd_oOY9d$nA((Rogl_s{3_!#hvwPtw>|5OBj85rqS4P* zDyKRvG!q34B;vc!cRp?gkOhSHPub|{%=UIk_)KLUH9)v|h}60m%sTt?deIa>huq#Y zJ_BF=Oy?m39DzK**Oj^522I}O$|Ibp(kBRv3}L^>|9o#vB-nR z3Mi*)B6^_92irT=Y?&gyHPMuO92!YHo(=%IED1!I{9Ml*_y!dK(_lb0mc{|_^-(Sg z+f1=;`t^%NO?#2^I-Yh|Mhj2iS}UjVNBw`zXzzX$Cu96LH^R}lZ${gq^B%^LYBPAu zq~B7!XaeHUubAH$E->hle=o@JwjMJQL$z#M20qvRnW<*=J9RN2(48do@k8NDv_*hd zHaoM3Trx7KaZh9vm)pnmetJ z1@8~DUW-U2Bqr}eZb80hlR694hWoz#Dr|4V|8Ux!E*J0mcK_mWS53 zsu*hG4*DiF-BUSGZZ(+d*@i_i&6H-p0)Xo`0T@?`$HAh%R)?!!sQ5I~FR+ zAL?lB2XFk{!qiIqBP*F8jMffvgD5=G`2k1*tf#VqUGy3~_lg|ck`U{&CR1oS+Hb-2 zpB0T%uhrcYbo9A7hd=N-q&lA!*n*#>J1)ZY1r8t`LR4zY7qsAb699On*pYX`7Fv;Y zeH^%1oBs_Kxqw+s{^w>#0GqgJ54Ben1_6KTAZGapq1d%4K$~hb^4+W6uN2I?1ZcMl z0Cu!dFpOoKFE9_d!Yyx7RDR>O6|g7sEqZsH&%3D#0fZ1}fAI}KAaek4>9}nsmMZAA zt?-h@p_*A+cA@29k|M{2hVubV$h48yg5@1kau*;4S7GBnnRe-+u9eNK>^HQiX?c1% zAS)03n_w-DNrlFIeZP})9UoIUY5QaLO}{U*;#`Eu?odh}WV|PY&8y2>*b{Q76gJiy{D+=y^ISX8_=67c6hU zwCRxUSlWXj;>is6F@*>i7zMy)RmA1>)w%%@c7OZ43{O`N7h{01zqbqgMef`3PIb%J zo9f+Nz{MM>|84|Eoeh=mE{D<900@WSOADp+0Tt1!cgd_D#jF~(bJGlItL$bfaxy;b zPJwU{O`(bFwibOX=|L_IgvS7&rt9=wdhx}?0vDhWuDb{A-1^g zJHEbxIhKC~XY-Z(hxgz50FJHDQBPgUK1C3)Kzbu^A&4Dz3$dkL&#(vZl7q0a61Ac6{j zaX;5`wL!^TkoCfYNQXYI!}0;w!+i^2_#u$&(4WYv@;lU<=!lqsffnEvI|qusvZN~j zHYd~`plExk*Z>pVVk5t!t`as5D;#Wvl>TcX%oWEkZ1ST*ZX0jBaM37Gcjf>!2QA21 zfZwsAUMhNfeG-xT4k6AGCPc*`(`kV7N5uAco=`jmYDqKP`Dl<2=Dw{}-(o-Wsut8~ zEc#1Hh+*zByp5=aexu#L)Md3>2T<%ceT>}Nk9{hWXVxlJpDak46Wg1ut_1kA4ZaE{;XB5lE6Z9j zVuTB={EvZ_IkPb82VBnrWu$-hl>=Ms3A-m7H5%c7C3?5qUbhvXPP`7$r&zq->S zTECHMmoERsV>vYfrxZA~R1SMm^%`Lbfa_l+Nnm@19nRYb`-><+{*O0DJ+#>O&&iRA z)*uI&w!2kW(>+!9zY~Z5$17#sxO7&Mr_xKLVWuT|l~xg?+5BVlU)q0sng;f9`t-fF zF@Owp5Ug=`awy#&@Q{`b&m`hmelDx1W;oHbWplnea}E$VXUPrhB|Io_!iYGQcc6Ky zw9s=v48U`hPPPM|kP9{>bg;YQwLR8#M}J|SmijGgV7TQh(1A;M!IwVxh}(e9SUOz( z6SdG3?nt{sNz-wEumQbec&y0zSCW8oYy`0M3m2Z)1d&j!_pMYqgZp6P(W+uNlS2ZV zRM6mwfjUA!(?Xy=s?);|-ZUrN&L!C{xdtey-v%=FzC(4pX>*~2}@T{wgEnB|R-t!TnUzcDvM=-!LWX z!2kvp$fEFTOJ}%^#T6ldy>g4l&E;wYs`~~397cN^z(7L7LUoC)u7}3A?uIBZw}JCc zJjJcQb1%N02;fG!_qbn(jGu&xb5h-W1H3{|D$?+fs-n$b;zbeid|D%f3_5|nkx@_M zw?XxIZG=>`F1Tyqy=1lG(&ffFbq|$SE=iO9BvhDZ;d?N-kwmI$4P!|F5a%{}mqakN^6e(JDolavg`G zsqv#=c>;-tfjsjqLTd_PXfMwA}tmDN*E}%5iE;gEg5VnS{L({(1ohK%s$@HZy!U&fu9NSkr=fq z|CNo%oZ+$qjqnEN##FJ<-VOhvXSOcWc(;dV42xv3@5Ms1Jo&ZdPSlOFITep>qR3$@ z#*hF(UejUSghEVl&1`?f5s{=TxDEzj=1mzKTwPI`o6aHk(_QL1EIFy>oFL628n) z5s;E@q`SMjL%O>=7O;r-UVFb|oPEyO&)&~-#yI2q#(2l@4_v@v{p!BwHRrtM1;6M& zbKFnOsthTMe8>h_pvd^b-j3Pl+MnXZADMGvP3_~`TEvU&idz(3ILH=Qpx?dt)VgBC ziT#NQspW1+(dORmiug@rQtCxy5(!hg-1RcnkXyiiv1<6bC{N4_;>FUiPN#xoUCT*>grZ=28x4Dll^~U%7ooS{AH=?S>zvR)3K z709*?ut9jil6S0|PDDmQy(Id%!A)B`<&KbR+05Sp_rvp4PNX;he`0g-4GPlTWT5a<>pLw^&N&Jt2*oeWr6!8$!ec|mL zFq>s+&!@=ncO`V^WaBn^%k7do<~+HulqN(!X^4%hqyy(4aqXY^8erdh#UB8`{;pW< z?{C4C zXj~i@15z(FTQ*rpHC9#8<(npya8lRP545*VS6i70h(xKP{AKlEw|RWD04AU-pKCU> z!cm%aEWY>B3kd*FIxGM`Y^EObyEz?+rpnigxLB(h0SN2^?$t=1jQfZ;RP)D6Fz80N z_{i|Q&8Q5!P8-Sw@8*NJsr7g7K9bE&fPM8s!M+ZJQq1z5Bed8+Q>D`upDRH8h^_o_ zseOH%(lh#>?uNjDq^9%U8o$4@9QW4q%Jrfh%?!6Xi*VQ@gR1@Njl=*NP6En`$F&?Z z%mp1RQ;C(UDUzMAaW(VmYU>bJhvv^EO}`;>_I);u7HE0jup=>)+f}~E{+n&@ztz{2 zMTDs2&yKTAkugb43L9^0q$&eZEC4R`^&;IemwY9q4v@_`c*wbm=Rl>g@9k*2{o7K9 zEq+~MiraMhO;p3#Pc^du&WX!kj{zhFN5n=;+4d{AX*eI$(RLdN_T1XzzENTA<;5^O0lsWgNav4YHOlaBVe4>TmrfE#m1Bp}^Elw9nKPCSwd5rQz1 zaTSKs5v6e0a@3m+lrb!WHA0I!u=DP&MM3P0mnE)dq>I;ns&QAy@n5DlkBC=PUpWzj ziozgDHoDy60LvnbH2PAn7JtdDsZ4;i_Bf&%*-O z?z7T_@Y`nv@HhwSyf%HD58DN``?2{(vJ==xOBeoGFGp)!3;>jcbdmvNVolpqzgyBf zTZ$~6D2x;<(&%>MG8P{kv+pWPlIQcz>Ou`|h%Nn}v0(oNoc`l~1;;4Ae!{p7(s^2%Q`OiX?2jM{Tr7IYR(06Q zANp$SsJBN7Sgf}4{ouFIJh235fpek(wA5Bn#&^jI+}O0D9)P&1GEghc!hs27E@0e( zy6?%>NRE>M|MW7aKf^+dLE=`;+e3I2%?afnx0|)>w5FCQM<y8RT4f zOxt&?!(3oM1V_$R1y26dmrVsAxaX`IO8fz^(O>zu&){m_3y#L{}_kJD_x?K@$;qyD(i2fNML^Rik6#;>%$Z~+nKO$ zsaQ3Rr{aC<^&Z<2Ys<@0%J_HI2R)RLI;(t86&P(`8Aa&c_v{4pS7n2u%qO0=5=j2t z&GGom>d`;dtZr6MQd3ir>{%X372t00j;gobkaw-PwX%+Z>PxhWtifR0cz?FKpr$c1 zz7^+4Cqv6+yJQ1P`Qw{+@7~2XMV?U>sLzD%IZ7pxF@7G1-*Q;A`xLstIC}Gr)ZR3y zcgfsz;eHUyKVkL$)hhL#8kOAh9qqYp%hY3^*X8}T&74t3l6YW7p0tuWoqjs!z>}Eq zM5BS2tJ8@`j~>xe^A#VkjH2ad%Wsu{H(=qR8vEyVh<|$w9_6xvo{i;hXm9@QkN&|Abiv!?T>r3#3xaOcv{!4#abfgNkBjzP@%WTcK0Ns5^|BUAN;g z10!P@2xe4rh;3*DvbqYeQCe@CZ~xAQQx3|NU_|0aum+3p^i=PsftVL~&El>~9Wt6J zSNTgSN)=2~&9mE^RK2?Lbq&`tN?Qw;P{q4BFdPPJJfg z*@(Bs+0%5tu_fZRF$yoDz^DR0%IerW}`o9?gw z>k`w-N4W(8fgZe~j#C4Vy*wUi2MJybQ#Ens>hV-DM-0(P>c> z>~yyMOFga7Py0y>BM4wU2+TRd7JmJP74%Y8czViLKY<=+Cb^ZMbIc9_5_oN&XEsOv z!ZDnLjfI7!#J4AwVM;|g@6*!jvX38=a&wbXQz@e&@n|$VBYDSnr%Lz0xnOdyP zSZ+ySJwL-e&@Ng8@JwygIJlr+0J-hA6A~vvhJp;@9#`d|q?T>irR;v$GGK4Hz`fmZliJmF24v0hn8fD83w5N<0lJr23X)w9y7y2qvUxwlU0!5dOpRj)pU;suoG0abcCs}_z4PD$sSHe?fAVK-m^F5bf)C$Y{4xI0*k1cbX?){anS3uVE7!N+12E&VS3$eN0K2;4K$fT`~ch zCAsVSJAj{0q7+E$b6|k+vzidNJ`}cp&S$~784@KhvE<3Q4RsNJQASbdMC-pAhYWI>UC~uMf5y$Wj4uzZsh@H;$?bZo{tvECPX;EzOrXv?X;;C@#RCz1;IQ0+Jhs z|FjzX+s$Ed@a?_k1+ds2l;Igtv>X8`qjpr!L!$~~Vc0qycZ7O^X^@K$^OSh=jV2fl z8KLpA6Oc~*u2@B2ake|}V;%f7`ISMxH5n@i^$Pn9yRxREe$AJ$0^*foc$ZcHpUNzt z%Ct$iZHhX{+-K($PNm{ZN+csS?T-oRU#px7wfbSo*%SlGga#=sphaLQ3anUM#S5Y0 zq+8MhFMV_ibv@Thhd~l(Q-BbLCR%G`c^1uAj(QJnqTbuvn59U2{m)R*6ff)pRb=V zi<9p<5$;p4go5O+DUfzx2(Q^}>tABxx4J^-K!vJ;8;5ZY($j40a$f{qif_Wf`&$8# zP?Vc!qK^gsLWA^g*(CL*r>7^saE;O?5y*dR@?9^fKy8u%rCbvb}Gehaq-^J)v+j5@QcEPC1^Cr5BKOy9AsD;w-*`Z>TAArRUT zWz#@pS{91SMWH$i@-2FQqbF%;t;r-~3G9JCYS(lhSx@}{(6sxfuMJgRR!`f_m{PU8 zEaNbA#0u4B_rWFcRY~Bn$G|*jNOP|S+;zOi(+9t)t!Zp6<(}hG>ymc~BbNdRgVPoB z45h@1(yr|~&{;TRAT5}iKC~cGI+~^K&~pVnvk`>J?rUn(ceu7NO zVDU@45?9Ld9WAK%g3~F8Z#Qt+IjzH0E?3|sErG!BgB0UwK%d8}kx!GBm{`dT(Y&IW z;>Vr{4GM4SL({gUtO)KUCNUv8Rl(|p?iGN`^kE{G0Wn(s{P@WBzH@t7inB9?OQ z8`0p4xkI{DzxjT{jCtSPu+3WF%az*Q!_Gg*uFAOHb0fskkw}$GFGMpA0xL!}4CFvk zaIviS4s$^U*)OV%Aue38O>y$$)}{Wyo4R{1{mgKbBsgG=O&DRKz6z~j1yDfO$o!VN zZIKG`iw?1$MC4~d_r#~gOsdpgYu3`eS`;$_`pbZZ`KSzsZF||^6BBZQrz}qd#y_f= zDrLkdzY9l>mFe@7kvY`5uwBmRtg+k$gjL8E#K!-g-qg+MNXpUo(yfg{ufwyDPBSc9_)xvUL?=?3)Bx2AUb94TlcjCAan>l$))37D!%n! zXXT^R5{~z!!`spscGNmveW2Mri4{wcKCK_65g+|1AH%cOj3Fg3vr7s zK2c8J2480kgO0PS6g9Kz_UeT*(7oCpZY5nQuiq+ydD?`C`3dxhKRzNy5Q#r|`GSf@ zF3|+#;3c9k1Cq5!5J-aytHrn*n!Lf;Ye}(zGS#qc~w7( z-r@3soVoz>ZYU+O5-SN zMYnpm$K)p^`d-Hg_!umI<5u{FUKBWLAH6&ja+t_gpxuy`xLXYuV|z@?ai3aoxWw16cY#LDNx?}?$u7Hh- zUEUqXzdR9OF7Kg1s23t}EJmBwGevC9s$mXQG~y!*p;pl#!NZ3xBiQ6lwEC;Xh%sQ_2<*QV!^~)HUe;x&83*fN}w8(^N@n` zxkaI_z%>y50${t$NCLoawch5&Ig+CAwya|sd(iPdjVE_ff4Fn6{rY#6SWI=~VMOda z+z;fgt?Wu*5sq1JCnYaurBwFL>Gt5KpGizc-x1stOEy2oa4OJR3sHw64cHQ%1|4!MEM@r>8Jb%6zd~U|`Nc_Ik55g}up)yu8HY+RFT^IgOZ!Y{VC(-yF z&ZkO|%zkV(R^25A6)MMcD!r>Bc0NlLke}TLlDS#w`sAArL4NqgioetA`W(JGN-p>L zEe;~Sd(*WPSZUdY5FT}}=)=}>m)~fD{Yh_1ZiJG8S)sG0+uh&W4r1BFS*D3t=5 zic6O@4_~=0Vs!<2-(e*ul@4(C=I58(wUT#4y#9E`QvW^Ds;-N03=&)L1SrgtBduH^*-K0J4OrS&U|-itZ zat2u1BdqCL#vXqlCB!Ttr5tLh#waFz_|XNbBf$Nfhsv|DsLRi4J5}yTN1z95SVJEfHdjjTkq*rTRYmLl0kp-eK-^^eII0`E4Am+$Ctbz`2y>_U zL|}|^PSg8GubyToan9WwwqnX^MajavK0mA!oZVma#qfR8X>p1@P!%A7?LmHWD)vzu zD)_9K&=tKy&40?}2M#_u#*zlXO}UM@w}nVFhqa(r1pTDIVdoioGZA6Rs@7d{>ygKg zaK6Q$_MvNUTl(MPhkmzy#R{Ss_2M_`>ybH-9;+$b*}|e^^aLEUAKjrlw@o7b$f>+6 z_s%GL58XUN+{Ikt4nrU3p`1F14TYwBph{p{9<+hJn!A`qJU4Q18G-sz4o7;_>Q z4EQr$=)SHa55p_4qzO>Pqaghzt=RQK+p*|<6plK^yM@Mk_XO`riU=u&5b+wW%8B#( zeR(R*=WT`5!kNUtXV%!j|4rv=bxlwUJLdXzQ!0)najNM0*RP@I!dmD7zo@_IDz=D| z*eb@jqd1^sfla-2U6%=ITlbD+i7fc5w!Of1+PemjlSw?f8nnhu*NHjus5K&JQ2d`+ zx&Fnr?rw*mXDkved^OAOdc|4%Z0i%MH@9BMW8{`sl<~Hq*6|G^0lO{_MZMp0)?F_0 z_{w(+y;JH-%^Iw0@u;F>6cjF!csJYQuRh)zKa!6tL`g`n9^!zRcz8l*8ouE_zYZ7q zD0@MS3r{Hd)(6YI6YPO^k_5}IKfxX+b@NJQ?iBj?s5CTkiWd$ZL3!2GMh=`hh16H8 zShR&G_ikogAc;U$?Vh-Cq#6E{QQyf~-Pb!vdl}uEDA6F^?Rs&d4i)E~FN5;BB>DLG z+#0X?TT`|Sf%jC2U6&R`^g+iXdJQ}{Hc9lN%PGWYsfSv%KjAaz%g=C zc|aq@yTc6kK8X&S`c@q}_0u?%4Xc2nnkeL_&Qed(vUspz6jf9l4i`e0(4Dc;YO}ZM zw@ul>TiUAWMp*RKg|TL&$TJgwToR;NA_i};A-oc*Fd;Z;vtME+*YNE?HABCfH= zB&$#k-Lv`c&47PYWWZnd$dSJ1`XE~qgcK=p$aotf=?JQC50zdBPQ0~XBIXRGs5@T& zpzaL9+V}jaf-RU`P(my)cz`1ZmrUL*;~m2{VPcP0qeCge;Qzg^2M?bW=uqEu>DR}+ zq3kmSg+Fs3^%edb=1qf<2cC?NE3i5!uG7#TW8Yn(WcpIKGyCdTwB`jiVGprVGcm^x zqog!n0y*D>W1lok_7X5$auNEl=>U` z9$qKyEx0flo>sUr(G)uZ9%4TUrYOf>J3LW*p#`Q^j4G5 zkL7D#Iw)g3R#b^P!obpv1W`%#?GEIw=hx+zTm@#o#-3<&uAWPBtrelqxKw>7sjN>L zSB1_kd+0KsC0RJk$UuCh<`eAaw@7WCBx?Jtfx^hZrKK6|t6U9vk~Jp=fO9J=Uigv@ z!4Xu!X(a5CChROdD}<@M@|PtT_Xd}cRsLnJ*HIp_pYvg z6waEGLhohBrOQy4v#1c&OW`BDe$Am%W3!p!SHl`g`O}i0E zTCOFc<=4dRFT)6V9g0RHe@tOpXT#Yhi_%(Pym7_f_isQ-AwQ9@%OZNI^>xQfIu@w7 z5;1m>mSLv#>3joEH2r|$b?17 zvd_i*qpCM$LYri%tgrzMNe=~Q_#{~=m87}KO&ZBf?=iJAtxh>eevIZINn_p{x*+#V zXDQ>_^px0$liiFlJpL@FH=t{p04EO-b?wMgz<6pDX|T=1ZmxQ9#k z{g)eH&4}I@zSr?Z@x%(Jn0-4bOg`Bfz|1w|8xIs=-}|^mro)Cm#>dc3UMjboc4s<> z7Ww*m^#v^n3i|YFIFR0Q1Dq=g*!VM%##>d#;Q5H2%Aius1sWGPj}SEYH;vLzr|W9~ zDjsDn$U@^#pR<^)y*}>UYe8d?j-bkUE4}f+J)O5xr=ExcClygxxN%A<1$Ee%wTwH*hTz|h4=G?b47iWDRADLSy763TLSZ^ zZ_+oO&oj7*3Nd2Mk`8XSsuee(GNWw`oIsY?`@mru<^Z-yV~Dlf3iMeL7g&#*=3K42gD1g`290FG!RHN{N1! zYPoKalwV&HN(}(Qo5$zX-QuCV-sn$`uI%6|0`a%;2p@#}lseY-Dqqi}(8!&IXgYQZ zzEO#xR6J9j=lL)#`zJFf{?`T8*%-WEYEt@JD4zr<`3`QQ%y@gU1JQ^P%2&zxUcP<9 zqAJy(sWh;X$Kg1TK2J@^_GL9VzLgmdlV0nKPb+Z?8wB|S6^2{7o+x7LnN43+Fif+A ziqaL#bg1r&bz_c*q^-jxHVcaJJgRE^-lq1u zXus07&&F}v+&9DcFk9QeOZlKA^@?$l+c4VnlVjXP4=DZ7F;u>S+Q|3v#b4uLwKOQP zIvHOmXdu1Y@-|iqFvwuji!&&xV!q_9b_H`)!UKEa(>%JLyY$+iQ)pEj^*;W&{yc7I zkVBVu7RlA3FVBj> zRIITA?hP`rZ|L?u0sB(94;p?(y`~Z~qh{S?2T0zQ`pKA0ub`@XqE+~qjKA*fO7q}> zm(2ph8^PF)(F_^Z^JJYfxSD^)I*#&3cjh0xzC-Q-7h-`J=gU@d9Hr^hJ-~a?SEj20 zEPCf)cS*0`XOT|gp92$Qg3BrAuYh8-*F_al25dc(0JCgno@Vm=j9P+oe!y97<}(fh zV3YP-=mG{>2BKaR4&5^%gn-F$9i)nRZU_&6djxWmW{C9HZ�UvBd-TyV`Qo8TOqE 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͝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 fTubIb=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", + "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", + "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.5.tgz", + "integrity": "sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.11" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@mapbox/node-pre-gyp": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz", + "integrity": "sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==", + "dev": true, + "optional": true, + "dependencies": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "optional": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/semver": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", + "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", + "dev": true, + "optional": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "optional": true + }, + "node_modules/@node-red/editor-api": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@node-red/editor-api/-/editor-api-3.0.2.tgz", + "integrity": "sha512-eyWObGLXVKhQDOHX9Fe+oOhC5nZAU8A92M5f4BwCXY1c9wx8QnWZVqOhPleVu3UJxZJEZ44OUdPb+HtsRNmD7Q==", + "dev": true, + "dependencies": { + "@node-red/editor-client": "3.0.2", + "@node-red/util": "3.0.2", + "bcryptjs": "2.4.3", + "body-parser": "1.20.0", + "clone": "2.1.2", + "cors": "2.8.5", + "express": "4.18.1", + "express-session": "1.17.3", + "memorystore": "1.6.7", + "mime": "3.0.0", + "multer": "1.4.5-lts.1", + "mustache": "4.2.0", + "oauth2orize": "1.11.1", + "passport": "0.6.0", + "passport-http-bearer": "1.0.1", + "passport-oauth2-client-password": "0.1.2", + "ws": "7.5.6" + }, + "optionalDependencies": { + "bcrypt": "5.0.1" + } + }, + "node_modules/@node-red/editor-client": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@node-red/editor-client/-/editor-client-3.0.2.tgz", + "integrity": "sha512-UlbsoEnIfpQO0yKf55Kd2qCwItDjfM9ut6FUfd2x10yKk9RxrA1rQPsW7PiB7gV/E1aW1JPmMxrmfHbb9Gdf8w==", + "dev": true + }, + "node_modules/@node-red/nodes": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@node-red/nodes/-/nodes-3.0.2.tgz", + "integrity": "sha512-H2rH2U5uEic4nwyabkiTIYNYGLTJL6TIccdPwz7AAykTmD5naKLs3nhuPHjzb54iPen/SU9jkJoU7iecslOk6g==", + "dev": true, + "dependencies": { + "acorn": "8.7.1", + "acorn-walk": "8.2.0", + "ajv": "8.11.0", + "body-parser": "1.20.0", + "cheerio": "1.0.0-rc.10", + "content-type": "1.0.4", + "cookie": "0.5.0", + "cookie-parser": "1.4.6", + "cors": "2.8.5", + "cronosjs": "1.7.1", + "denque": "2.1.0", + "form-data": "4.0.0", + "fs-extra": "10.1.0", + "got": "11.8.5", + "hash-sum": "2.0.0", + "hpagent": "1.0.0", + "https-proxy-agent": "5.0.1", + "iconv-lite": "0.6.3", + "is-utf8": "0.2.1", + "js-yaml": "4.1.0", + "media-typer": "1.1.0", + "mqtt": "4.3.7", + "multer": "1.4.5-lts.1", + "mustache": "4.2.0", + "node-watch": "0.7.3", + "on-headers": "1.0.2", + "raw-body": "2.5.1", + "tough-cookie": "4.0.0", + "uuid": "8.3.2", + "ws": "7.5.6", + "xml2js": "0.4.23" + } + }, + "node_modules/@node-red/nodes/node_modules/acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/@node-red/nodes/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@node-red/nodes/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/@node-red/nodes/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@node-red/nodes/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@node-red/nodes/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/@node-red/registry": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@node-red/registry/-/registry-3.0.2.tgz", + "integrity": "sha512-+vf9R4j+p2nM7awzicIzu6liJgXyoQfhHGv3OxmK9OfBsISn5eWIj9u2HiJtG3ChYfuediK2FEhc+Pb+mhfTJA==", + "dev": true, + "dependencies": { + "@node-red/util": "3.0.2", + "clone": "2.1.2", + "fs-extra": "10.1.0", + "semver": "7.3.7", + "tar": "6.1.11", + "uglify-js": "3.16.3" + } + }, + "node_modules/@node-red/registry/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@node-red/registry/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@node-red/registry/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@node-red/runtime": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@node-red/runtime/-/runtime-3.0.2.tgz", + "integrity": "sha512-lEx6riLeEHMshvW84BEN/oUESG1F2AirLCkH6xbws8Ta8fgE6YfsOvgKBMnfbwoUME2O+I/QCkIYZqlqUhqJXg==", + "dev": true, + "dependencies": { + "@node-red/registry": "3.0.2", + "@node-red/util": "3.0.2", + "async-mutex": "0.3.2", + "clone": "2.1.2", + "express": "4.18.1", + "fs-extra": "10.1.0", + "json-stringify-safe": "5.0.1" + } + }, + "node_modules/@node-red/util": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@node-red/util/-/util-3.0.2.tgz", + "integrity": "sha512-zhxmFk48QEC4coBN0G0JDHt727+BlZS2QZarWs9hLeNDBdhjlU58RY0lhDgqODu/Z3JvBmIdPhCtDcvHpe4zmw==", + "dev": true, + "dependencies": { + "fs-extra": "10.1.0", + "i18next": "21.8.16", + "json-stringify-safe": "5.0.1", + "jsonata": "1.8.6", + "lodash.clonedeep": "^4.5.0", + "moment": "2.29.4", + "moment-timezone": "0.5.34" + } + }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "dev": true, + "dependencies": { + "defer-to-connect": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@types/cacheable-request": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "dev": true, + "dependencies": { + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" + } + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", + "dev": true + }, + "node_modules/@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/node": { + "version": "20.3.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.3.1.tgz", + "integrity": "sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg==", + "dev": true + }, + "node_modules/@types/responselike": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", + "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==", + "dev": true + }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true, + "optional": true + }, + "node_modules/are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "dev": true, + "optional": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "node_modules/assert-plus": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz", + "integrity": "sha512-brU24g7ryhRwGCI2y+1dGQmQXiZF7TtIj583S96y0jjdajIe6wn8BuXyELYhvD22dtIxDQVFk04YTJwwdwOYJw==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/async-mutex": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.3.2.tgz", + "integrity": "sha512-HuTK7E7MT7jZEh1P9GtRW9+aTWiDWWi9InbZ5hjxrnRa39KS4BW04+xLBhYNS2aXhHUIKZSw3gj4Pn1pj+qGAA==", + "dev": true, + "dependencies": { + "tslib": "^2.3.1" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "node_modules/axios": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dev": true, + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/bcrypt": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.0.1.tgz", + "integrity": "sha512-9BTgmrhZM2t1bNuDtrtIMVSmmxZBrJ71n8Wg+YgdjHuIWYF7SjjmCPZFB+/5i/o/PIeRpwVJR3P+NrpIItUjqw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "dependencies": { + "@mapbox/node-pre-gyp": "^1.0.0", + "node-addon-api": "^3.1.0" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/bcryptjs": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", + "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==", + "dev": true + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/body-parser": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dev": true, + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "dev": true, + "engines": { + "node": ">=10.6.0" + } + }, + "node_modules/cacheable-request": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "dev": true, + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "node_modules/cheerio": { + "version": "1.0.0-rc.10", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz", + "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==", + "dev": true, + "dependencies": { + "cheerio-select": "^1.5.0", + "dom-serializer": "^1.3.2", + "domhandler": "^4.2.0", + "htmlparser2": "^6.1.0", + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.6.0.tgz", + "integrity": "sha512-eq0GdBvxVFbqWgmCm7M3XGs1I8oLy/nExUnh6oLqmBditPO9AqQJrkslDpMun/hZ0yyTs8L0m85OHp4ho6Qm9g==", + "dev": true, + "dependencies": { + "css-select": "^4.3.0", + "css-what": "^6.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.3.1", + "domutils": "^2.8.0" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cheerio-select/node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/cheerio-select/node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/cheerio-select/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/cheerio-select/node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/cheerio-select/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/cheerio/node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/cheerio/node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/cheerio/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/cheerio/node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/cheerio/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/cheerio/node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "dev": true, + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-table": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz", + "integrity": "sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==", + "dev": true, + "dependencies": { + "colors": "1.0.3" + }, + "engines": { + "node": ">= 0.2.0" + } + }, + "node_modules/cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "optional": true, + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commist": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/commist/-/commist-1.1.0.tgz", + "integrity": "sha512-rraC8NXWOEjhADbZe9QBNzLAN5Q3fsTPQtBV+fEVj6xKIgDgNiEVE6ZNfHpZOqfQ21YUzfVNUXLOEZquYvQPPg==", + "dev": true, + "dependencies": { + "leven": "^2.1.0", + "minimist": "^1.1.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "dev": true, + "engines": [ + "node >= 6.0" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true, + "optional": true + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-disposition/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-parser": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz", + "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==", + "dev": true, + "dependencies": { + "cookie": "0.4.1", + "cookie-signature": "1.0.6" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/cookie-parser/node_modules/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/cronosjs": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/cronosjs/-/cronosjs-1.7.1.tgz", + "integrity": "sha512-d6S6+ep7dJxsAG8OQQCdKuByI/S/AV64d9OF5mtmcykOyPu92cAkAnF3Tbc9s5oOaLQBYYQmTNvjqYRkPJ/u5Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-select/node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/css-select/node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/css-select/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/css-select/node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/css-select/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true, + "optional": true + }, + "node_modules/denque": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-libc": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", + "dev": true, + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "node_modules/dom-serializer/node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "node_modules/domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "dependencies": { + "domelementtype": "1" + } + }, + "node_modules/domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/duplexify": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", + "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.0" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "optional": true + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", + "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.9.1", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^4.0.3", + "eslint-utils": "^1.3.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^5.0.1", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.7.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^6.2.2", + "js-yaml": "^3.13.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.11", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^5.5.1", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^6.14.0 || ^8.10.0 || >=9.10.0" + } + }, + "node_modules/eslint-config-nodejs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-nodejs/-/eslint-config-nodejs-2.0.0.tgz", + "integrity": "sha512-SLnC96Yzm9QPGLEq7XzL5k6vFbpyb3mDtEHdH1vlkFqnIzYsNIwW2IXoJozDT3Jsu0S18uGfctkqXodfHwl14Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/eslint-config-prettier": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.2.0.tgz", + "integrity": "sha512-VLsgK/D+S/FEsda7Um1+N8FThec6LqE3vhcMyp8mlmto97y3fGf3DX7byJexGuOb1QY0Z/zz222U5t+xSfcZDQ==", + "dev": true, + "dependencies": { + "get-stdin": "^6.0.0" + }, + "bin": { + "eslint-config-prettier-check": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=3.14.1" + } + }, + "node_modules/eslint-plugin-html": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-html/-/eslint-plugin-html-5.0.5.tgz", + "integrity": "sha512-v/33i3OD0fuXcRXexVyXXBOe4mLBLBQoF1UO1Uy9D+XLq4MC8K45GcQKfqjC/FnHAHp3pYUjpHHktYNCtShGmg==", + "dev": true, + "dependencies": { + "htmlparser2": "^3.10.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.0.tgz", + "integrity": "sha512-XWX2yVuwVNLOUhQijAkXz+rMPPoCr7WFiAl8ig6I7Xn+pPVhDhzg4DxHpmbeb0iqjO9UronEA3Tb09ChnFVHHA==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "peerDependencies": { + "eslint": ">= 5.0.0", + "prettier": ">= 1.13.0" + } + }, + "node_modules/eslint-plugin-security": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-security/-/eslint-plugin-security-1.4.0.tgz", + "integrity": "sha512-xlS7P2PLMXeqfhyf3NpqbvbnW04kN8M9NtmhpR3XGyOvt/vNKS7XPXT5EDbwKW9vCjWH4PpfQvgD/+JgN0VJKA==", + "dev": true, + "dependencies": { + "safe-regex": "^1.1.0" + } + }, + "node_modules/eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/espree": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", + "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", + "dev": true, + "dependencies": { + "acorn": "^6.0.7", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.0", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.10.3", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express-session": { + "version": "1.17.3", + "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.3.tgz", + "integrity": "sha512-4+otWXlShYlG1Ma+2Jnn+xgKUZTMJ5QD3YvfilX3AcocOAbIkVylSWEklzALe/+Pu4qV6TYBj5GwOBFfdKqLBw==", + "dev": true, + "dependencies": { + "cookie": "0.4.2", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-headers": "~1.0.2", + "parseurl": "~1.3.3", + "safe-buffer": "5.2.1", + "uid-safe": "~2.1.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/express-session/node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express-session/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express-session/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/express-session/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/express/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "dependencies": { + "flat-cache": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "dependencies": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "node_modules/gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "dev": true, + "optional": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gauge/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/gauge/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/gauge/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "optional": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gauge/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "optional": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/got": { + "version": "11.8.5", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.5.tgz", + "integrity": "sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==", + "dev": true, + "dependencies": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=10.19.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true, + "optional": true + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash-base/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/hash-sum": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", + "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", + "dev": true + }, + "node_modules/help-me": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/help-me/-/help-me-3.0.0.tgz", + "integrity": "sha512-hx73jClhyk910sidBB7ERlnhMlFsJJIBqSVMFDwPN8o2v9nmp5KgLq1Xz1Bf1fCMMZ6mPrX159iG0VLy/fPMtQ==", + "dev": true, + "dependencies": { + "glob": "^7.1.6", + "readable-stream": "^3.6.0" + } + }, + "node_modules/hpagent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hpagent/-/hpagent-1.0.0.tgz", + "integrity": "sha512-SCleE2Uc1bM752ymxg8QXYGW0TWtAV4ZW3TqH1aOnyi6T6YW2xadCcclm5qeVjvMvfQ2RKNtZxO7uVb9CTPt1A==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "dependencies": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "dev": true, + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/i18next": { + "version": "21.8.16", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-21.8.16.tgz", + "integrity": "sha512-acJLCk38YMfEPjBR/1vS13SFY7rBQLs9E5m1tSRnWc9UW3f+SZszgH+NP1fZRA1+O+CdG2eLGGmuUMJW52EwzQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://locize.com" + }, + { + "type": "individual", + "url": "https://locize.com/i18next.html" + }, + { + "type": "individual", + "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" + } + ], + "dependencies": { + "@babel/runtime": "^7.17.2" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/inquirer": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", + "dev": true, + "dependencies": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.12", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/inquirer/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/inquirer/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", + "dev": true + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-sdsl": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", + "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true + }, + "node_modules/jsonata": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/jsonata/-/jsonata-1.8.6.tgz", + "integrity": "sha512-ZH2TPYdNP2JecOl/HvrH47Xc+9imibEMQ4YqKy/F/FrM+2a6vfbGxeCX23dB9Fr6uvGwv+ghf1KxWB3iZk09wA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/keyv": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", + "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "dev": true + }, + "node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "optional": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "optional": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/memorystore": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/memorystore/-/memorystore-1.6.7.tgz", + "integrity": "sha512-OZnmNY/NDrKohPQ+hxp0muBcBKrzKNtHr55DbqSx9hLsYVNnomSAMRAtI7R64t3gf3ID7tHQA7mG4oL3Hu9hdw==", + "dev": true, + "dependencies": { + "debug": "^4.3.0", + "lru-cache": "^4.0.3" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/moment-timezone": { + "version": "0.5.34", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.34.tgz", + "integrity": "sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==", + "dev": true, + "dependencies": { + "moment": ">= 2.9.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mqtt": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-4.3.7.tgz", + "integrity": "sha512-ew3qwG/TJRorTz47eW46vZ5oBw5MEYbQZVaEji44j5lAUSQSqIEoul7Kua/BatBW0H0kKQcC9kwUHa1qzaWHSw==", + "dev": true, + "dependencies": { + "commist": "^1.0.0", + "concat-stream": "^2.0.0", + "debug": "^4.1.1", + "duplexify": "^4.1.1", + "help-me": "^3.0.0", + "inherits": "^2.0.3", + "lru-cache": "^6.0.0", + "minimist": "^1.2.5", + "mqtt-packet": "^6.8.0", + "number-allocator": "^1.0.9", + "pump": "^3.0.0", + "readable-stream": "^3.6.0", + "reinterval": "^1.1.0", + "rfdc": "^1.3.0", + "split2": "^3.1.0", + "ws": "^7.5.5", + "xtend": "^4.0.2" + }, + "bin": { + "mqtt": "bin/mqtt.js", + "mqtt_pub": "bin/pub.js", + "mqtt_sub": "bin/sub.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/mqtt-packet": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/mqtt-packet/-/mqtt-packet-6.10.0.tgz", + "integrity": "sha512-ja8+mFKIHdB1Tpl6vac+sktqy3gA8t9Mduom1BA75cI+R9AHnZOiaBQwpGiWnaVJLDGRdNhQmFaAqd7tkKSMGA==", + "dev": true, + "dependencies": { + "bl": "^4.0.2", + "debug": "^4.1.1", + "process-nextick-args": "^2.0.1" + } + }, + "node_modules/mqtt/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mqtt/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/multer": { + "version": "1.4.5-lts.1", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz", + "integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==", + "dev": true, + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^1.0.0", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/multer/node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/multer/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/multer/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/mustache": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", + "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", + "dev": true, + "bin": { + "mustache": "bin/mustache" + } + }, + "node_modules/mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node_modules/node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true, + "optional": true + }, + "node_modules/node-fetch": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz", + "integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==", + "dev": true, + "optional": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-red": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/node-red/-/node-red-3.0.2.tgz", + "integrity": "sha512-B6q576kLw96eKOiqNpNJsUiwl5vRipc46T0w/LUI7O3fPAVxwu5zklIBhE6Iefj8FV1IdbLwXULESqMWlwjlGQ==", + "dev": true, + "dependencies": { + "@node-red/editor-api": "3.0.2", + "@node-red/nodes": "3.0.2", + "@node-red/runtime": "3.0.2", + "@node-red/util": "3.0.2", + "basic-auth": "2.0.1", + "bcryptjs": "2.4.3", + "express": "4.18.1", + "fs-extra": "10.1.0", + "node-red-admin": "^3.0.0", + "nopt": "5.0.0", + "semver": "7.3.7" + }, + "bin": { + "node-red": "red.js", + "node-red-pi": "bin/node-red-pi" + }, + "engines": { + "node": ">=14" + }, + "optionalDependencies": { + "bcrypt": "5.0.1" + } + }, + "node_modules/node-red-admin": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/node-red-admin/-/node-red-admin-3.0.0.tgz", + "integrity": "sha512-1J1tcV+zkCIy24n0rcJ/DSPSCziEgLGld+QBYk1rNESIo+gFyL5RMkCOcII2IrBTZF/kcDTElepMTCILXbMDfQ==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1", + "axios": "0.27.2", + "bcryptjs": "^2.4.3", + "cli-table": "^0.3.11", + "enquirer": "^2.3.6", + "minimist": "^1.2.6", + "mustache": "^4.2.0", + "read": "^1.0.7" + }, + "bin": { + "node-red-admin": "node-red-admin.js" + }, + "engines": { + "node": ">=14" + }, + "optionalDependencies": { + "bcrypt": "5.0.1" + } + }, + "node_modules/node-red/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-red/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-red/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/node-watch": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/node-watch/-/node-watch-0.7.3.tgz", + "integrity": "sha512-3l4E8uMPY1HdMMryPRUAl+oIHtXtyiTlIiESNSVSNxcPfzAFzeTbXFQkZfAwBbo0B1qMSG8nUABx+Gd+YrbKrQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "dev": true, + "optional": true, + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/number-allocator": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/number-allocator/-/number-allocator-1.0.14.tgz", + "integrity": "sha512-OrL44UTVAvkKdOdRQZIJpLkAdjXGTRda052sN4sO77bKEzYYqWKMBjQvrJFzqygI99gL6Z4u2xctPW1tB8ErvA==", + "dev": true, + "dependencies": { + "debug": "^4.3.1", + "js-sdsl": "4.3.0" + } + }, + "node_modules/oauth2orize": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/oauth2orize/-/oauth2orize-1.11.1.tgz", + "integrity": "sha512-9dSx/Gwm0J2Rvj4RH9+h7iXVnRXZ6biwWRgb2dCeQhCosODS0nYdM9I/G7BUGsjbgn0pHjGcn1zcCRtzj2SlRA==", + "dev": true, + "dependencies": { + "debug": "2.x.x", + "uid2": "0.0.x", + "utils-merge": "1.x.x" + }, + "engines": { + "node": ">= 0.4.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/jaredhanson" + } + }, + "node_modules/oauth2orize/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/oauth2orize/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/passport": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/passport/-/passport-0.6.0.tgz", + "integrity": "sha512-0fe+p3ZnrWRW74fe8+SvCyf4a3Pb2/h7gFkQ8yTJpAO50gDzlfjZUZTO1k5Eg9kUct22OxHLqDZoKUWRHOh9ug==", + "dev": true, + "dependencies": { + "passport-strategy": "1.x.x", + "pause": "0.0.1", + "utils-merge": "^1.0.1" + }, + "engines": { + "node": ">= 0.4.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/jaredhanson" + } + }, + "node_modules/passport-http-bearer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/passport-http-bearer/-/passport-http-bearer-1.0.1.tgz", + "integrity": "sha512-SELQM+dOTuMigr9yu8Wo4Fm3ciFfkMq5h/ZQ8ffi4ELgZrX1xh9PlglqZdcUZ1upzJD/whVyt+YWF62s3U6Ipw==", + "dev": true, + "dependencies": { + "passport-strategy": "1.x.x" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/passport-oauth2-client-password": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/passport-oauth2-client-password/-/passport-oauth2-client-password-0.1.2.tgz", + "integrity": "sha512-GHQH4UtaEZvCLulAxGKHYoSsPRoPRmGsdmaZtMh5nmz80yMLQbdMA9Bg2sp4/UW3PIxJH/143hVjPTiXaNngTQ==", + "dev": true, + "dependencies": { + "passport-strategy": "1.x.x" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/passport-strategy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", + "integrity": "sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "dev": true + }, + "node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "node_modules/pause": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", + "integrity": "sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==", + "dev": true + }, + "node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.18.2.tgz", + "integrity": "sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/random-bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", + "integrity": "sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/read": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", + "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", + "dev": true, + "dependencies": { + "mute-stream": "~0.0.4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "dev": true + }, + "node_modules/regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true, + "engines": { + "node": ">=6.5.0" + } + }, + "node_modules/reinterval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reinterval/-/reinterval-1.1.0.tgz", + "integrity": "sha512-QIRet3SYrGp0HUHO88jVskiG6seqUGC5iAG7AwI/BV4ypGcuqk9Du6YQBUOUqm9c8pw1eyLoIaONifRua1lsEQ==", + "dev": true + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "dev": true, + "dependencies": { + "lowercase-keys": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "dev": true, + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, + "node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/rxjs/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dev": true, + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true, + "optional": true + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/sinch-request": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/sinch-request/-/sinch-request-0.0.8.tgz", + "integrity": "sha512-Io8G9btjA8O5PLgjSzPNc+e/Oaf7Nx5Mf6GRg+qxuYjvuy9vDqoPLPadVxN4lKwF5roH2n9QviefTWIMweYoMA==", + "dependencies": { + "assert-plus": "^0.1.5", + "create-hash": "^1.1.1", + "create-hmac": "^1.1.3" + } + }, + "node_modules/slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dev": true, + "dependencies": { + "readable-stream": "^3.0.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "dependencies": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/table/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/table/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "node_modules/table/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/table/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "dev": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true, + "optional": true + }, + "node_modules/tslib": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz", + "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true + }, + "node_modules/uglify-js": { + "version": "3.16.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.16.3.tgz", + "integrity": "sha512-uVbFqx9vvLhQg0iBaau9Z75AxWJ8tqM9AV890dIZCLApF4rTcyHwmAvLeEdYRs+BzYWu8Iw81F79ah0EfTXbaw==", + "dev": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/uid-safe": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", + "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", + "dev": true, + "dependencies": { + "random-bytes": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/uid2": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.4.tgz", + "integrity": "sha512-IevTus0SbGwQzYh3+fRsAMTVVPOoIVufzacXcHPmdlle1jUpq7BRL+mw3dgeLanvGZdwwbWhRV6XrcFNdBmjWA==", + "dev": true + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8n": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/v8n/-/v8n-1.5.1.tgz", + "integrity": "sha512-LdabyT4OffkyXFCe9UT+uMkxNBs5rcTVuZClvxQr08D5TUgo1OFKkoT65qYRCsiKBl/usHjpXvP4hHMzzDRj3A==" + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true, + "optional": true + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "optional": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "optional": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "dependencies": { + "mkdirp": "^0.5.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ws": { + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz", + "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "dev": true, + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + } + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", + "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", + "dev": true, + "requires": { + "@babel/highlight": "^7.22.5" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", + "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "dev": true + }, + "@babel/highlight": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", + "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.22.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/runtime": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.5.tgz", + "integrity": "sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.11" + } + }, + "@mapbox/node-pre-gyp": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz", + "integrity": "sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==", + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "optional": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "semver": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", + "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", + "dev": true, + "optional": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "optional": true + } + } + }, + "@node-red/editor-api": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@node-red/editor-api/-/editor-api-3.0.2.tgz", + "integrity": "sha512-eyWObGLXVKhQDOHX9Fe+oOhC5nZAU8A92M5f4BwCXY1c9wx8QnWZVqOhPleVu3UJxZJEZ44OUdPb+HtsRNmD7Q==", + "dev": true, + "requires": { + "@node-red/editor-client": "3.0.2", + "@node-red/util": "3.0.2", + "bcrypt": "5.0.1", + "bcryptjs": "2.4.3", + "body-parser": "1.20.0", + "clone": "2.1.2", + "cors": "2.8.5", + "express": "4.18.1", + "express-session": "1.17.3", + "memorystore": "1.6.7", + "mime": "3.0.0", + "multer": "1.4.5-lts.1", + "mustache": "4.2.0", + "oauth2orize": "1.11.1", + "passport": "0.6.0", + "passport-http-bearer": "1.0.1", + "passport-oauth2-client-password": "0.1.2", + "ws": "7.5.6" + } + }, + "@node-red/editor-client": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@node-red/editor-client/-/editor-client-3.0.2.tgz", + "integrity": "sha512-UlbsoEnIfpQO0yKf55Kd2qCwItDjfM9ut6FUfd2x10yKk9RxrA1rQPsW7PiB7gV/E1aW1JPmMxrmfHbb9Gdf8w==", + "dev": true + }, + "@node-red/nodes": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@node-red/nodes/-/nodes-3.0.2.tgz", + "integrity": "sha512-H2rH2U5uEic4nwyabkiTIYNYGLTJL6TIccdPwz7AAykTmD5naKLs3nhuPHjzb54iPen/SU9jkJoU7iecslOk6g==", + "dev": true, + "requires": { + "acorn": "8.7.1", + "acorn-walk": "8.2.0", + "ajv": "8.11.0", + "body-parser": "1.20.0", + "cheerio": "1.0.0-rc.10", + "content-type": "1.0.4", + "cookie": "0.5.0", + "cookie-parser": "1.4.6", + "cors": "2.8.5", + "cronosjs": "1.7.1", + "denque": "2.1.0", + "form-data": "4.0.0", + "fs-extra": "10.1.0", + "got": "11.8.5", + "hash-sum": "2.0.0", + "hpagent": "1.0.0", + "https-proxy-agent": "5.0.1", + "iconv-lite": "0.6.3", + "is-utf8": "0.2.1", + "js-yaml": "4.1.0", + "media-typer": "1.1.0", + "mqtt": "4.3.7", + "multer": "1.4.5-lts.1", + "mustache": "4.2.0", + "node-watch": "0.7.3", + "on-headers": "1.0.2", + "raw-body": "2.5.1", + "tough-cookie": "4.0.0", + "uuid": "8.3.2", + "ws": "7.5.6", + "xml2js": "0.4.23" + }, + "dependencies": { + "acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "dev": true + }, + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } + } + }, + "@node-red/registry": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@node-red/registry/-/registry-3.0.2.tgz", + "integrity": "sha512-+vf9R4j+p2nM7awzicIzu6liJgXyoQfhHGv3OxmK9OfBsISn5eWIj9u2HiJtG3ChYfuediK2FEhc+Pb+mhfTJA==", + "dev": true, + "requires": { + "@node-red/util": "3.0.2", + "clone": "2.1.2", + "fs-extra": "10.1.0", + "semver": "7.3.7", + "tar": "6.1.11", + "uglify-js": "3.16.3" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@node-red/runtime": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@node-red/runtime/-/runtime-3.0.2.tgz", + "integrity": "sha512-lEx6riLeEHMshvW84BEN/oUESG1F2AirLCkH6xbws8Ta8fgE6YfsOvgKBMnfbwoUME2O+I/QCkIYZqlqUhqJXg==", + "dev": true, + "requires": { + "@node-red/registry": "3.0.2", + "@node-red/util": "3.0.2", + "async-mutex": "0.3.2", + "clone": "2.1.2", + "express": "4.18.1", + "fs-extra": "10.1.0", + "json-stringify-safe": "5.0.1" + } + }, + "@node-red/util": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@node-red/util/-/util-3.0.2.tgz", + "integrity": "sha512-zhxmFk48QEC4coBN0G0JDHt727+BlZS2QZarWs9hLeNDBdhjlU58RY0lhDgqODu/Z3JvBmIdPhCtDcvHpe4zmw==", + "dev": true, + "requires": { + "fs-extra": "10.1.0", + "i18next": "21.8.16", + "json-stringify-safe": "5.0.1", + "jsonata": "1.8.6", + "lodash.clonedeep": "^4.5.0", + "moment": "2.29.4", + "moment-timezone": "0.5.34" + } + }, + "@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "dev": true + }, + "@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "dev": true, + "requires": { + "defer-to-connect": "^2.0.0" + } + }, + "@types/cacheable-request": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "dev": true, + "requires": { + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" + } + }, + "@types/http-cache-semantics": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", + "dev": true + }, + "@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/node": { + "version": "20.3.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.3.1.tgz", + "integrity": "sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg==", + "dev": true + }, + "@types/responselike": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", + "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true + }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==", + "dev": true + }, + "aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "assert-plus": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz", + "integrity": "sha512-brU24g7ryhRwGCI2y+1dGQmQXiZF7TtIj583S96y0jjdajIe6wn8BuXyELYhvD22dtIxDQVFk04YTJwwdwOYJw==" + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async-mutex": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.3.2.tgz", + "integrity": "sha512-HuTK7E7MT7jZEh1P9GtRW9+aTWiDWWi9InbZ5hjxrnRa39KS4BW04+xLBhYNS2aXhHUIKZSw3gj4Pn1pj+qGAA==", + "dev": true, + "requires": { + "tslib": "^2.3.1" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "axios": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "dev": true, + "requires": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "bcrypt": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.0.1.tgz", + "integrity": "sha512-9BTgmrhZM2t1bNuDtrtIMVSmmxZBrJ71n8Wg+YgdjHuIWYF7SjjmCPZFB+/5i/o/PIeRpwVJR3P+NrpIItUjqw==", + "dev": true, + "optional": true, + "requires": { + "@mapbox/node-pre-gyp": "^1.0.0", + "node-addon-api": "^3.1.0" + } + }, + "bcryptjs": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", + "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==", + "dev": true + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "body-parser": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dev": true, + "requires": { + "streamsearch": "^1.1.0" + } + }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + }, + "cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "dev": true + }, + "cacheable-request": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "dev": true, + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "cheerio": { + "version": "1.0.0-rc.10", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz", + "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==", + "dev": true, + "requires": { + "cheerio-select": "^1.5.0", + "dom-serializer": "^1.3.2", + "domhandler": "^4.2.0", + "htmlparser2": "^6.1.0", + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "tslib": "^2.2.0" + }, + "dependencies": { + "dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + } + } + }, + "cheerio-select": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.6.0.tgz", + "integrity": "sha512-eq0GdBvxVFbqWgmCm7M3XGs1I8oLy/nExUnh6oLqmBditPO9AqQJrkslDpMun/hZ0yyTs8L0m85OHp4ho6Qm9g==", + "dev": true, + "requires": { + "css-select": "^4.3.0", + "css-what": "^6.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.3.1", + "domutils": "^2.8.0" + }, + "dependencies": { + "dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + } + } + }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-table": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz", + "integrity": "sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==", + "dev": true, + "requires": { + "colors": "1.0.3" + } + }, + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true + }, + "clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "optional": true + }, + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commist": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/commist/-/commist-1.1.0.tgz", + "integrity": "sha512-rraC8NXWOEjhADbZe9QBNzLAN5Q3fsTPQtBV+fEVj6xKIgDgNiEVE6ZNfHpZOqfQ21YUzfVNUXLOEZquYvQPPg==", + "dev": true, + "requires": { + "leven": "^2.1.0", + "minimist": "^1.1.0" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true, + "optional": true + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "requires": { + "safe-buffer": "5.2.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true + }, + "cookie-parser": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz", + "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==", + "dev": true, + "requires": { + "cookie": "0.4.1", + "cookie-signature": "1.0.6" + }, + "dependencies": { + "cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "dev": true + } + } + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cronosjs": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/cronosjs/-/cronosjs-1.7.1.tgz", + "integrity": "sha512-d6S6+ep7dJxsAG8OQQCdKuByI/S/AV64d9OF5mtmcykOyPu92cAkAnF3Tbc9s5oOaLQBYYQmTNvjqYRkPJ/u5Q==", + "dev": true + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "dependencies": { + "dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + } + } + }, + "css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "requires": { + "mimic-response": "^3.1.0" + }, + "dependencies": { + "mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true + } + } + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true, + "optional": true + }, + "denque": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", + "dev": true + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true + }, + "detect-libc": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", + "dev": true, + "optional": true + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + } + } + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "duplexify": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", + "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", + "dev": true, + "requires": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "optional": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "eslint": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", + "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.9.1", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^4.0.3", + "eslint-utils": "^1.3.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^5.0.1", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.7.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^6.2.2", + "js-yaml": "^3.13.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.11", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^5.5.1", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0" + } + }, + "eslint-config-nodejs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-nodejs/-/eslint-config-nodejs-2.0.0.tgz", + "integrity": "sha512-SLnC96Yzm9QPGLEq7XzL5k6vFbpyb3mDtEHdH1vlkFqnIzYsNIwW2IXoJozDT3Jsu0S18uGfctkqXodfHwl14Q==", + "dev": true + }, + "eslint-config-prettier": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.2.0.tgz", + "integrity": "sha512-VLsgK/D+S/FEsda7Um1+N8FThec6LqE3vhcMyp8mlmto97y3fGf3DX7byJexGuOb1QY0Z/zz222U5t+xSfcZDQ==", + "dev": true, + "requires": { + "get-stdin": "^6.0.0" + } + }, + "eslint-plugin-html": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-html/-/eslint-plugin-html-5.0.5.tgz", + "integrity": "sha512-v/33i3OD0fuXcRXexVyXXBOe4mLBLBQoF1UO1Uy9D+XLq4MC8K45GcQKfqjC/FnHAHp3pYUjpHHktYNCtShGmg==", + "dev": true, + "requires": { + "htmlparser2": "^3.10.0" + } + }, + "eslint-plugin-prettier": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.0.tgz", + "integrity": "sha512-XWX2yVuwVNLOUhQijAkXz+rMPPoCr7WFiAl8ig6I7Xn+pPVhDhzg4DxHpmbeb0iqjO9UronEA3Tb09ChnFVHHA==", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0" + } + }, + "eslint-plugin-security": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-security/-/eslint-plugin-security-1.4.0.tgz", + "integrity": "sha512-xlS7P2PLMXeqfhyf3NpqbvbnW04kN8M9NtmhpR3XGyOvt/vNKS7XPXT5EDbwKW9vCjWH4PpfQvgD/+JgN0VJKA==", + "dev": true, + "requires": { + "safe-regex": "^1.1.0" + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + }, + "espree": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", + "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", + "dev": true, + "requires": { + "acorn": "^6.0.7", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true + }, + "express": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "dev": true, + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.0", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.10.3", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "express-session": { + "version": "1.17.3", + "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.3.tgz", + "integrity": "sha512-4+otWXlShYlG1Ma+2Jnn+xgKUZTMJ5QD3YvfilX3AcocOAbIkVylSWEklzALe/+Pu4qV6TYBj5GwOBFfdKqLBw==", + "dev": true, + "requires": { + "cookie": "0.4.2", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-headers": "~1.0.2", + "parseurl": "~1.3.3", + "safe-buffer": "5.2.1", + "uid-safe": "~2.1.5" + }, + "dependencies": { + "cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true + }, + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "optional": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "optional": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + } + }, + "get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "dev": true + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "got": { + "version": "11.8.5", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.5.tgz", + "integrity": "sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==", + "dev": true, + "requires": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + } + }, + "graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true, + "optional": true + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } + } + }, + "hash-sum": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", + "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", + "dev": true + }, + "help-me": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/help-me/-/help-me-3.0.0.tgz", + "integrity": "sha512-hx73jClhyk910sidBB7ERlnhMlFsJJIBqSVMFDwPN8o2v9nmp5KgLq1Xz1Bf1fCMMZ6mPrX159iG0VLy/fPMtQ==", + "dev": true, + "requires": { + "glob": "^7.1.6", + "readable-stream": "^3.6.0" + } + }, + "hpagent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hpagent/-/hpagent-1.0.0.tgz", + "integrity": "sha512-SCleE2Uc1bM752ymxg8QXYGW0TWtAV4ZW3TqH1aOnyi6T6YW2xadCcclm5qeVjvMvfQ2RKNtZxO7uVb9CTPt1A==", + "dev": true + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + }, + "http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "dev": true, + "requires": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "i18next": { + "version": "21.8.16", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-21.8.16.tgz", + "integrity": "sha512-acJLCk38YMfEPjBR/1vS13SFY7rBQLs9E5m1tSRnWc9UW3f+SZszgH+NP1fZRA1+O+CdG2eLGGmuUMJW52EwzQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.17.2" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "inquirer": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", + "dev": true, + "requires": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.12", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "js-sdsl": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", + "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true + }, + "jsonata": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/jsonata/-/jsonata-1.8.6.tgz", + "integrity": "sha512-ZH2TPYdNP2JecOl/HvrH47Xc+9imibEMQ4YqKy/F/FrM+2a6vfbGxeCX23dB9Fr6uvGwv+ghf1KxWB3iZk09wA==", + "dev": true + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "keyv": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", + "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", + "dev": true, + "requires": { + "json-buffer": "3.0.1" + } + }, + "leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "dev": true + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "optional": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "optional": true + } + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "dev": true + }, + "memorystore": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/memorystore/-/memorystore-1.6.7.tgz", + "integrity": "sha512-OZnmNY/NDrKohPQ+hxp0muBcBKrzKNtHr55DbqSx9hLsYVNnomSAMRAtI7R64t3gf3ID7tHQA7mG4oL3Hu9hdw==", + "dev": true, + "requires": { + "debug": "^4.3.0", + "lru-cache": "^4.0.3" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true + }, + "mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "dev": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true + }, + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + }, + "dependencies": { + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "dependencies": { + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "dev": true + }, + "moment-timezone": { + "version": "0.5.34", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.34.tgz", + "integrity": "sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==", + "dev": true, + "requires": { + "moment": ">= 2.9.0" + } + }, + "mqtt": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-4.3.7.tgz", + "integrity": "sha512-ew3qwG/TJRorTz47eW46vZ5oBw5MEYbQZVaEji44j5lAUSQSqIEoul7Kua/BatBW0H0kKQcC9kwUHa1qzaWHSw==", + "dev": true, + "requires": { + "commist": "^1.0.0", + "concat-stream": "^2.0.0", + "debug": "^4.1.1", + "duplexify": "^4.1.1", + "help-me": "^3.0.0", + "inherits": "^2.0.3", + "lru-cache": "^6.0.0", + "minimist": "^1.2.5", + "mqtt-packet": "^6.8.0", + "number-allocator": "^1.0.9", + "pump": "^3.0.0", + "readable-stream": "^3.6.0", + "reinterval": "^1.1.0", + "rfdc": "^1.3.0", + "split2": "^3.1.0", + "ws": "^7.5.5", + "xtend": "^4.0.2" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "mqtt-packet": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/mqtt-packet/-/mqtt-packet-6.10.0.tgz", + "integrity": "sha512-ja8+mFKIHdB1Tpl6vac+sktqy3gA8t9Mduom1BA75cI+R9AHnZOiaBQwpGiWnaVJLDGRdNhQmFaAqd7tkKSMGA==", + "dev": true, + "requires": { + "bl": "^4.0.2", + "debug": "^4.1.1", + "process-nextick-args": "^2.0.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "multer": { + "version": "1.4.5-lts.1", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz", + "integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==", + "dev": true, + "requires": { + "append-field": "^1.0.0", + "busboy": "^1.0.0", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, + "dependencies": { + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "mustache": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", + "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", + "dev": true + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true, + "optional": true + }, + "node-fetch": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz", + "integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==", + "dev": true, + "optional": true, + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "node-red": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/node-red/-/node-red-3.0.2.tgz", + "integrity": "sha512-B6q576kLw96eKOiqNpNJsUiwl5vRipc46T0w/LUI7O3fPAVxwu5zklIBhE6Iefj8FV1IdbLwXULESqMWlwjlGQ==", + "dev": true, + "requires": { + "@node-red/editor-api": "3.0.2", + "@node-red/nodes": "3.0.2", + "@node-red/runtime": "3.0.2", + "@node-red/util": "3.0.2", + "basic-auth": "2.0.1", + "bcrypt": "5.0.1", + "bcryptjs": "2.4.3", + "express": "4.18.1", + "fs-extra": "10.1.0", + "node-red-admin": "^3.0.0", + "nopt": "5.0.0", + "semver": "7.3.7" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "node-red-admin": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/node-red-admin/-/node-red-admin-3.0.0.tgz", + "integrity": "sha512-1J1tcV+zkCIy24n0rcJ/DSPSCziEgLGld+QBYk1rNESIo+gFyL5RMkCOcII2IrBTZF/kcDTElepMTCILXbMDfQ==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1", + "axios": "0.27.2", + "bcrypt": "5.0.1", + "bcryptjs": "^2.4.3", + "cli-table": "^0.3.11", + "enquirer": "^2.3.6", + "minimist": "^1.2.6", + "mustache": "^4.2.0", + "read": "^1.0.7" + } + }, + "node-watch": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/node-watch/-/node-watch-0.7.3.tgz", + "integrity": "sha512-3l4E8uMPY1HdMMryPRUAl+oIHtXtyiTlIiESNSVSNxcPfzAFzeTbXFQkZfAwBbo0B1qMSG8nUABx+Gd+YrbKrQ==", + "dev": true + }, + "nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true + }, + "npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, + "nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "number-allocator": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/number-allocator/-/number-allocator-1.0.14.tgz", + "integrity": "sha512-OrL44UTVAvkKdOdRQZIJpLkAdjXGTRda052sN4sO77bKEzYYqWKMBjQvrJFzqygI99gL6Z4u2xctPW1tB8ErvA==", + "dev": true, + "requires": { + "debug": "^4.3.1", + "js-sdsl": "4.3.0" + } + }, + "oauth2orize": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/oauth2orize/-/oauth2orize-1.11.1.tgz", + "integrity": "sha512-9dSx/Gwm0J2Rvj4RH9+h7iXVnRXZ6biwWRgb2dCeQhCosODS0nYdM9I/G7BUGsjbgn0pHjGcn1zcCRtzj2SlRA==", + "dev": true, + "requires": { + "debug": "2.x.x", + "uid2": "0.0.x", + "utils-merge": "1.x.x" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true + }, + "object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true + }, + "p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "dev": true + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, + "requires": { + "parse5": "^6.0.1" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "passport": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/passport/-/passport-0.6.0.tgz", + "integrity": "sha512-0fe+p3ZnrWRW74fe8+SvCyf4a3Pb2/h7gFkQ8yTJpAO50gDzlfjZUZTO1k5Eg9kUct22OxHLqDZoKUWRHOh9ug==", + "dev": true, + "requires": { + "passport-strategy": "1.x.x", + "pause": "0.0.1", + "utils-merge": "^1.0.1" + } + }, + "passport-http-bearer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/passport-http-bearer/-/passport-http-bearer-1.0.1.tgz", + "integrity": "sha512-SELQM+dOTuMigr9yu8Wo4Fm3ciFfkMq5h/ZQ8ffi4ELgZrX1xh9PlglqZdcUZ1upzJD/whVyt+YWF62s3U6Ipw==", + "dev": true, + "requires": { + "passport-strategy": "1.x.x" + } + }, + "passport-oauth2-client-password": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/passport-oauth2-client-password/-/passport-oauth2-client-password-0.1.2.tgz", + "integrity": "sha512-GHQH4UtaEZvCLulAxGKHYoSsPRoPRmGsdmaZtMh5nmz80yMLQbdMA9Bg2sp4/UW3PIxJH/143hVjPTiXaNngTQ==", + "dev": true, + "requires": { + "passport-strategy": "1.x.x" + } + }, + "passport-strategy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", + "integrity": "sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "pause": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", + "integrity": "sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true + }, + "prettier": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.18.2.tgz", + "integrity": "sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw==", + "dev": true + }, + "prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "requires": { + "fast-diff": "^1.1.2" + } + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + } + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true + }, + "psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true + }, + "qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true + }, + "random-bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", + "integrity": "sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==", + "dev": true + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "read": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", + "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", + "dev": true, + "requires": { + "mute-stream": "~0.0.4" + } + }, + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "dev": true + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true + }, + "reinterval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reinterval/-/reinterval-1.1.0.tgz", + "integrity": "sha512-QIRet3SYrGp0HUHO88jVskiG6seqUGC5iAG7AwI/BV4ypGcuqk9Du6YQBUOUqm9c8pw1eyLoIaONifRua1lsEQ==", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "dev": true, + "requires": { + "lowercase-keys": "^2.0.0" + } + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true, + "optional": true + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "sinch-request": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/sinch-request/-/sinch-request-0.0.8.tgz", + "integrity": "sha512-Io8G9btjA8O5PLgjSzPNc+e/Oaf7Nx5Mf6GRg+qxuYjvuy9vDqoPLPadVxN4lKwF5roH2n9QviefTWIMweYoMA==", + "requires": { + "assert-plus": "^0.1.5", + "create-hash": "^1.1.1", + "create-hmac": "^1.1.3" + } + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + } + }, + "split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dev": true, + "requires": { + "readable-stream": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true + }, + "tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "dev": true, + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + }, + "dependencies": { + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + } + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true, + "optional": true + }, + "tslib": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz", + "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "dependencies": { + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true + } + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true + }, + "uglify-js": { + "version": "3.16.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.16.3.tgz", + "integrity": "sha512-uVbFqx9vvLhQg0iBaau9Z75AxWJ8tqM9AV890dIZCLApF4rTcyHwmAvLeEdYRs+BzYWu8Iw81F79ah0EfTXbaw==", + "dev": true + }, + "uid-safe": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", + "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", + "dev": true, + "requires": { + "random-bytes": "~1.0.0" + } + }, + "uid2": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.4.tgz", + "integrity": "sha512-IevTus0SbGwQzYh3+fRsAMTVVPOoIVufzacXcHPmdlle1jUpq7BRL+mw3dgeLanvGZdwwbWhRV6XrcFNdBmjWA==", + "dev": true + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + }, + "v8n": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/v8n/-/v8n-1.5.1.tgz", + "integrity": "sha512-LdabyT4OffkyXFCe9UT+uMkxNBs5rcTVuZClvxQr08D5TUgo1OFKkoT65qYRCsiKBl/usHjpXvP4hHMzzDRj3A==" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true, + "optional": true + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "optional": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "ws": { + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz", + "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==", + "dev": true, + "requires": {} + }, + "xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "dev": true, + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + } + }, + "xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..36b649e --- /dev/null +++ b/package.json @@ -0,0 +1,40 @@ +{ + "name": "@sinch/node-red-voice-api", + "version": "1.0.0", + "author": "Sinch AB", + "description": "Package of Sinch Voice API nodes for Node-RED", + "homepage": "https://www.sinch.com/", + "license": "Apache-2.0", + "repository": { + "type": "git", + "url": "https://github.com/sinch/node-red-voice-api.git" + }, + "scripts": { + "lint": "./node_modules/.bin/eslint --ignore-path .gitignore --ext .js .", + "lint:fix": "npm run lint -- --fix" + }, + "node-red": { + "version": ">=3.0.0", + "nodes": { + "sinch-ace": "src/nodes/ace/ace.js", + "sinch-call": "src/nodes/call/call.js", + "sinch-dtmf": "src/nodes/dtmf/dtmf.js", + "sinch-incoming": "src/nodes/incoming/incoming.js", + "sinch-application": "src/configuration-nodes/application/application.js" + } + }, + "devDependencies": { + "eslint": "5.16.0", + "eslint-config-nodejs": "2.0.0", + "eslint-config-prettier": "6.2.0", + "eslint-plugin-html": "5.0.5", + "eslint-plugin-prettier": "3.1.0", + "eslint-plugin-security": "1.4.0", + "node-red": "3.0.2", + "prettier": "1.18.2" + }, + "dependencies": { + "sinch-request": "^0.0.8", + "v8n": "^1.5.1" + } +} diff --git a/src/api/index.html b/src/api/index.html new file mode 100644 index 0000000..e69de29 diff --git a/src/api/index.js b/src/api/index.js new file mode 100644 index 0000000..bae053e --- /dev/null +++ b/src/api/index.js @@ -0,0 +1,5 @@ +const { registerNumbers } = require('./voice-api'); + +module.exports = function(RED) { + registerNumbers(RED); +}; diff --git a/src/api/voice-api.js b/src/api/voice-api.js new file mode 100644 index 0000000..92ca798 --- /dev/null +++ b/src/api/voice-api.js @@ -0,0 +1,33 @@ +const restRequest = require("../utils/rest-client"); + +const { VOICE_API_BASE_URL } = require("../constants"); + +const registerNumbers = (RED) => { + RED.httpNode.post("/external/voice/numbers", async (req, res) => { + const { applicationKey, applicationSecret } = req.body; + + try { + const resp = await restRequest({ + method: "GET", + url: `${VOICE_API_BASE_URL}/configuration/numbers`, + key: applicationKey, + secret: applicationSecret, + debug: true, + })(); + if (resp && resp.numbers) { + res.send(resp.numbers); + } else { + res.send([]); + } + } catch (error) { + if (error.status) { + return res.sendStatus(error.status); + } + return res.sendStatus(500); + } + }); +}; + +module.exports = { + registerNumbers, +}; diff --git a/src/configuration-nodes/application/application.html b/src/configuration-nodes/application/application.html new file mode 100644 index 0000000..a3031cc --- /dev/null +++ b/src/configuration-nodes/application/application.html @@ -0,0 +1,55 @@ + + + + + diff --git a/src/configuration-nodes/application/application.js b/src/configuration-nodes/application/application.js new file mode 100644 index 0000000..1e1c2dc --- /dev/null +++ b/src/configuration-nodes/application/application.js @@ -0,0 +1,313 @@ +const { getNodesByType, findNodeByType } = require('../../utils/helpers'); +const isEmpty = require('../../utils/is-empty'); +const waitFor = require('../../utils/wait-for'); + +module.exports = function(RED) { + class ApplicationNode { + constructor(config) { + RED.nodes.createNode(this, config); + this.config = config; + } + + /** + * getCallNode + * Get the Voice Call node (sinch-voice-call) that originated the call based on the callId in the msg payload + * @param {Object} msg - The payload received by callback event + * @returns {Object} - A node instance + */ + async getCallNode(msg) { + let foundNode = null; + // collect all voice call nodes + const callNodes = getNodesByType('sinch-voice-call', RED); + + for (let idx = 0; idx < callNodes.length; idx++) { + if (foundNode == null) { + const callNode = RED.nodes.getNode(callNodes[idx].id); + if (callNode != null && (await callNode.hasCallId(msg.callid))) { + foundNode = callNode; + } + } + } + + return foundNode; + } + + async getCallorIncomingNode(msg) { + let foundNode = null; + // collect all voice call nodes + const nodes = getNodesByType( + ['sinch-voice-call', 'sinch-voice-incoming-call'], + RED + ); + + for (let idx = 0; idx < nodes.length; idx++) { + if (foundNode == null) { + const callNode = RED.nodes.getNode(nodes[idx].id); + if (callNode != null && (await callNode.hasCallId(msg.callid))) { + foundNode = callNode; + } + } + } + + return foundNode; + } + + /** + * cleanupACENodes + * Clean svaml and call flag for all ACE nodes given a callId + * @param {String} callId - The call id to clear + */ + async cleanupACENodes(callId) { + // collect all ace nodes + const nodes = getNodesByType('sinch-voice-answered-call-event', RED); + for (let idx = 0; idx < nodes.length; idx++) { + const node = RED.nodes.getNode(nodes[idx].id); + if (node != null && (await node.hasCallId(callId))) { + await node.clearCallId(callId); + } + } + } + + /** + * cleanupDTMFNodes + * Remove metadata from all DTMF nodes for a specific callId + * @param {String} callId - The call id to clear + */ + async cleanupDTMFNodes(callId) { + // collect all dtmf nodes + const dtmfNodes = getNodesByType('sinch-voice-dtmf', RED); + for (let idx = 0; idx < dtmfNodes.length; idx++) { + const dtmfNode = RED.nodes.getNode(dtmfNodes[idx].id); + if (dtmfNode != null && (await dtmfNode.hasCallId(callId))) { + await dtmfNode.clearCallId(callId); + } + } + } + + /** + * getDTMFNode + * Get the node instance of a DTMF node assigned to the same callId of the incoming message and the right action + * from the user + * @param {Object} msg - The payload received by callback event + * @return {Object} + */ + async getDTMFNode(msg) { + let foundNode = null; + // collect all dtmf nodes + const dtmfNodes = getNodesByType('sinch-voice-dtmf', RED); + + // find the one with the right callId and the right action (based on incoming message) + for (let idx = 0; idx < dtmfNodes.length; idx++) { + if (foundNode == null) { + const dtmfNode = RED.nodes.getNode(dtmfNodes[idx].id); + const action = msg.menuResult != null ? msg.menuResult.value : null; + //if ((await dtmfNode.getCallId()) === msg.callid) { + if (await dtmfNode.hasCallId(msg.callid)) { + // if action is the same + if (dtmfNode.config.action === action) { + foundNode = dtmfNode; + } + } + } + } + + return foundNode; + } + + /** + * getIncomingNode + * Search all incoming call node and find the one with the right number (based on incoming message) + * @param {Object} msg - The payload received by callback event + */ + getIncomingNode(msg) { + let foundNode = null; + // find all sinch-voice-incoming-call and proxy the event (the nodes will decide to pickup or not) + RED.nodes.eachNode((node) => { + let incomingCallNode; + if (node.type === 'sinch-voice-incoming-call') { + incomingCallNode = RED.nodes.getNode(node.id); + // check if destination endpoint is the right one (we may have different incoming call node + // with different numbers) + if ( + incomingCallNode != null && + incomingCallNode.config != null && + incomingCallNode.config.endpoint === msg.to.endpoint + ) { + foundNode = incomingCallNode; + } + } + }); + return foundNode; + } + + /** + * waitForACENode + * Wait for an ACE node to have a callId flag and a SVAML for it. If nothing after 3sec then fail + * @param {Object} msg + * @param {Object} msg.callid - The callId to wait for + * @returns {Object} + */ + async waitForACENode(msg) { + let idx = 0; + const delays = [100, 300, 500, 1000, 2000, 3000]; + + return new Promise(async (resolve, reject) => { + for (idx = 0; idx < delays.length - 1; idx++) { + const node = this.getACENode(msg); + if (node) { + const payload = await node.getSVAML(msg.callid); + if (!isEmpty(payload)) { + resolve(payload); + break; + } + } + await waitFor(delays[idx]); + } + reject(); + }); + } + + /** + * getACENode + * Get the first ACE node marked with the callId + * @param {*} msg + * @param {Object} msg + * @param {Object} msg.callid - The callId to wait for + * @returns {NodeREDNode} + */ + getACENode(msg) { + let foundNode = null; + // find all sinch-voice-answered-call-event + RED.nodes.eachNode((node) => { + let ACENode; + if (node.type === 'sinch-voice-answered-call-event') { + ACENode = RED.nodes.getNode(node.id); + // check if destination endpoint is the right one (we may have different incoming call node + // with different numbers) + if (ACENode != null && ACENode.hasCallId(msg.callid)) { + foundNode = ACENode; + } + } + }); + return foundNode; + } + } + + RED.nodes.registerType('sinch-application', ApplicationNode, { + credentials: { + applicationSecret: { + type: 'text', + }, + }, + }); + + // This endpoint handles all callback events for Voice API (Ace, Dice, Pie, Notify) + RED.httpNode.use('/sinch-voice-api/callback', async (req, res) => { + // get the first sinch-application type node, it will act as proxy node, redirecting + // the message to the correct node based on the callId (in order to that is necessary a NODE-RED nodes + // since they can access the context) + // Callids are now stored in global context, so any sinch-application node is ok, in case is stored in the + // flow context, the proper sinch-appllication node must be selected + const proxyNode = findNodeByType('sinch-application', RED); + if (proxyNode == null) { + console.log('No Voice Application configured, message was discarded'); + res.sendStatus(500); + return; + } + let payload; + + if (req.body.event === 'pie') { + // get all current nodes based on callId and proxy the event only on the one with the + // right action + const dtmfNode = await proxyNode.getDTMFNode(req.body); + if (dtmfNode) { + payload = await dtmfNode.getSVAML(req.body.callid); + await proxyNode.cleanupDTMFNodes(req.body.callid); + await dtmfNode.proxyEvent(req.body); + } else { + console.log( + `No DTMF node for this user answer (action: ${req.body.menuResult.value}), message was discarded` + ); + res.sendStatus(500); + return; + } + } else if (req.body.event === 'ice') { + // incoming call, ask the proxy node to find the right incoming call node and + // get the answer + const incomingNode = proxyNode.getIncomingNode(req.body); + if (incomingNode != null) { + // get the SVAML payload for this call and use as response callback + // there's no callId stored in incoming nodes + payload = await incomingNode.getSVAML(); + + // proxy the event (the node knows what to send through the outputs) + await incomingNode.proxyEvent(req.body); + // if payload is empty, means the Node-RED devs don't want to answer with a SVAML now + // but it will be provided by a node downstream (i.e. an ACE node). Any SVAML provided by + // these nodes will mark the callId flag and store the SVAML payload in the node context. + // Unfortunately the answer must be returned within this callback, so the proxyEvent continues + // the execution of the flow and waitForAceNode waits for the right callId + if (isEmpty(payload)) { + try { + payload = await proxyNode.waitForACENode(req.body); + } catch (e) { + console.log( + `No SVAML provided downstream by any ACE node for callId ${req.body.callid}` + ); + } + } + } else { + console.log( + `No incoming call node for number ${req.body.to.endpoint}, message was discarded` + ); + res.sendStatus(500); + return; + } + } else if (req.body.event === 'ace') { + // get ace and call nodes for this call id (ACE = Answered Call Event) + const ACENode = proxyNode.getACENode(req.body); + const callNode = await proxyNode.getCallNode(req.body); + // Note: when connecting to a SIP address an additional ACE is received from + // the system we're trying to connect to, in that case we must answer with the + // same SVAML of the ICE (Incoming Call Event) + if (callNode != null) { + // get the SVAML payload for this call and use as response callback + payload = await callNode.getSVAML(req.body.callid); + // proxy the event (the node knows what to send through the outputs) + await callNode.proxyEvent(req.body); + } else if (ACENode != null) { + payload = await ACENode.getSVAML(req.body.callid); + // proxy the event (the node knows what to send through the outputs) + await ACENode.proxyEvent(req.body); + await ACENode.clearCallId(req.body.callid); + } else { + console.log( + `No call node for callId ${req.body.callid}, message was discarded` + ); + res.sendStatus(500); + return; + } + } else if (req.body.event === 'dice') { + // clean ACE nodes + await proxyNode.cleanupACENodes(req.body.callid); + // get the right call node based on callId + const callNode = await proxyNode.getCallorIncomingNode(req.body); + if (callNode != null) { + // proxy the event (the node knows what to send through the outputs) + await callNode.proxyEvent(req.body); + } else { + console.log( + `No call node for callId ${req.body.callid}, message was discarded` + ); + res.sendStatus(500); + return; + } + } + + if (payload != null) { + res.send(payload); + } else { + res.sendStatus(200); + } + }); +}; diff --git a/src/configuration-nodes/application/locales/en-US/application.html b/src/configuration-nodes/application/locales/en-US/application.html new file mode 100644 index 0000000..c01975d --- /dev/null +++ b/src/configuration-nodes/application/locales/en-US/application.html @@ -0,0 +1,20 @@ + diff --git a/src/configuration-nodes/application/locales/en-US/application.json b/src/configuration-nodes/application/locales/en-US/application.json new file mode 100644 index 0000000..3799a23 --- /dev/null +++ b/src/configuration-nodes/application/locales/en-US/application.json @@ -0,0 +1,5 @@ +{ + "application-name": "Name", + "application-key": "Key", + "application-secret": "Secret" +} diff --git a/src/constants.js b/src/constants.js new file mode 100644 index 0000000..5701bc9 --- /dev/null +++ b/src/constants.js @@ -0,0 +1,3 @@ +module.exports = { + VOICE_API_BASE_URL: "https://calling.api.sinch.com/calling/v1", +}; diff --git a/src/nodes/ace/ace.html b/src/nodes/ace/ace.html new file mode 100755 index 0000000..4681651 --- /dev/null +++ b/src/nodes/ace/ace.html @@ -0,0 +1,45 @@ + + + diff --git a/src/nodes/ace/ace.js b/src/nodes/ace/ace.js new file mode 100755 index 0000000..e877bf8 --- /dev/null +++ b/src/nodes/ace/ace.js @@ -0,0 +1,47 @@ +const VoiceNode = require('../../utils/voice-node'); + +module.exports = function(RED) { + class AnsweredCallEvent extends VoiceNode { + constructor(config) { + super(config); + this.config = config; + RED.nodes.createNode(this, config); + + this.on('input', async (msg, _, done) => { + const { voiceCall } = msg || {}; + if (voiceCall != null) { + // set the SVAML for an ACE event, connect this to any inbound or outbound node + // to mark this node (and SVAML with the right callId) + await this.setSVAML( + voiceCall.callId, + msg.svaml ? msg.svaml : this.config.svaml + ); + await this.markCallId(voiceCall.callId); + } + done(); + }); + } + + async proxyEvent(msg) { + if (msg.event === 'ice') { + this.send({ + voiceCall: { + raw: msg, + callId: msg.callid, + from: msg.cli, + to: msg.to, + }, + payload: msg, + }); + // call received + this.status({ fill: 'green', shape: 'dot', text: 'ongoing' }); + await this.markCallId(msg.callid); + } else if (msg.event === 'dice') { + this.status({ fill: 'green', shape: 'dot', text: 'closed' }); + await this.clearCallId(msg.callid); + } + } + } + + RED.nodes.registerType('sinch-voice-answered-call-event', AnsweredCallEvent); +}; diff --git a/src/nodes/ace/locales/en-US/ace.html b/src/nodes/ace/locales/en-US/ace.html new file mode 100644 index 0000000..395af93 --- /dev/null +++ b/src/nodes/ace/locales/en-US/ace.html @@ -0,0 +1,44 @@ + diff --git a/src/nodes/ace/locales/en-US/ace.json b/src/nodes/ace/locales/en-US/ace.json new file mode 100755 index 0000000..3960b3a --- /dev/null +++ b/src/nodes/ace/locales/en-US/ace.json @@ -0,0 +1,6 @@ +{ + "node-label": "Answered Call Event", + "name": "Name", + "application": "Application", + "endpoint": "Endpoint" +} diff --git a/src/nodes/call/call.html b/src/nodes/call/call.html new file mode 100755 index 0000000..a16da78 --- /dev/null +++ b/src/nodes/call/call.html @@ -0,0 +1,175 @@ + + + diff --git a/src/nodes/call/call.js b/src/nodes/call/call.js new file mode 100755 index 0000000..23472ce --- /dev/null +++ b/src/nodes/call/call.js @@ -0,0 +1,254 @@ +const getParams = require('../../utils/get-params'); +const restRequest = require('../../utils/rest-client'); +const VoiceNode = require('../../utils/voice-node'); +const { isMessageType, isDestinationType } = require('../../utils/validators'); +const { VOICE_API_BASE_URL } = require('../../constants'); + +const isInteractiveMenu = (text) => text.toLowerCase().includes('runmenu'); + +module.exports = function(RED) { + class VoiceCall extends VoiceNode { + constructor(config) { + super(config); + const node = this; + this.config = config; + RED.nodes.createNode(this, config); + + const applicationNode = RED.nodes.getNode(config.application) || {}; + const { applicationKey, applicationSecret } = + applicationNode.config || {}; + if ( + applicationKey == null || + applicationSecret == null || + applicationKey === '' || + applicationSecret === '' + ) { + this.error('applicationKey or applicationSecret are empty'); + return; + } + + const callCallout = restRequest({ + method: 'POST', + url: `${VOICE_API_BASE_URL}/callouts`, + key: applicationKey, + secret: applicationSecret, + }); + + this.on('input', async (msg, _, done) => { + const { + destinationType, + destinationEndpoint, + svaml, + messageType, + text, + prompts, + dtmf, + locale, + debug, + errors, + stringErrors, + cli, + } = getParams( + { + schema: { + destinationType: { type: isDestinationType, required: true }, + destinationEndpoint: { type: 'phoneNumber', required: true }, + cli: { type: 'phoneNumber', required: false }, + messageType: { type: isMessageType, required: true }, + svaml: { + type: 'json', + required: ({ messageType }) => messageType === 'svaml', + }, + text: { + type: 'string', + required: ({ messageType }) => messageType === 'text', + }, + prompts: { + type: 'string', + required: ({ messageType }) => messageType === 'prompts', + }, + dtmf: { + type: 'string', + required: ({ messageType }) => messageType === 'dtmf', + }, + locale: 'string', + debug: 'boolean', + }, + useMessage: true, + usePayload: true, + }, + node, + msg + ); + + // exit if errors + if (errors != null) { + this.error('configuration errors', JSON.stringify(errors)); + done(stringErrors); + return; + } + + this.status({ fill: 'yellow', shape: 'dot', text: 'calling' }); + let resp, payload; + + if ( + messageType === 'svaml' && + svaml != null && + isInteractiveMenu(svaml) + ) { + // docs https://developers.sinch.com/docs/voice-rest-api-calling-api#custom-callout + // for interactive menu on callout, use custom callout (it's an edge case) + payload = { + method: 'customCallout', + customCallout: { + ice: JSON.stringify({ + action: { + name: 'connectPstn', + number: destinationEndpoint, + cli, + maxDuration: 14400, + amd: { enabled: false }, + locale, + }, + }), + }, + }; + } else { + // docs https://developers.sinch.com/docs/voice-rest-api-calling-api#text-to-speech-callout + payload = { + method: 'ttsCallout', + ttsCallout: { + cli, + destination: { + type: destinationType, + endpoint: destinationEndpoint, + }, + custom: node.id, + enableAce: true, + enableDice: true, + }, + }; + if (messageType === 'text') { + payload.ttsCallout.text = text; + payload.ttsCallout.locale = locale; + // disable ace callback for text or will not work + payload.ttsCallout.enableAce = false; + } else if (messageType === 'svaml') { + payload.ttsCallout.text = ' '; // must be provided, trick it + //await this.setSVAML(svaml); + } else if (messageType === 'prompts') { + payload.ttsCallout.prompts = prompts; + payload.ttsCallout.locale = locale; + // disable ace callback for prompts or will not work + payload.ttsCallout.enableAce = false; + } else if (messageType === 'dtmf') { + payload.ttsCallout.dtmf = dtmf; + // disable ace callback for prompts or will not work + payload.ttsCallout.enableAce = false; + } + } + + try { + if (debug) { + node.warn( + `VOICE CALL POST ${VOICE_API_BASE_URL}/callouts:`, + JSON.stringify(payload) + ); + } + resp = await callCallout(payload); + if (debug) { + node.warn('VOICE CALL RESPONSE ', JSON.stringify(resp.data)); + } + if (resp.data.errorCode) { + this.status({ fill: 'red', shape: 'dot', text: resp.data.message }); + done(resp.data.message); + return; + } + if (svaml != null && svaml !== '') { + await this.setSVAML(resp.data.callId, svaml); + } + await this.markCallId(resp.data.callId); + node.warn( + `Voice call ${resp.data.callId}`, + JSON.stringify(payload) + ); + done(); + } catch (error) { + done(error); + this.status({ fill: 'red', shape: 'dot', text: 'network error' }); + node.error('network error'); + } + }); + } + + async getSVAML(callId) { + // get svaml and consume it + const svaml = await this.get(`${callId}_svaml`); + await this.remove(`${callId}_svaml`); + return svaml; + } + + // handle messages received by callback for the call originated by this node + async proxyEvent(msg) { + if (msg.event === 'ace') { + // call started + this.status({ fill: 'green', shape: 'dot', text: 'ongoing' }); + // continue to the exit including the voice call detail, this is useful in case of + // interactive menus initiated by the servers + this.send({ + voiceCall: { + raw: null, + callId: msg.callid, + from: null, + to: null, + }, + }); + } else if (msg.event === 'dice') { + // communication was closed, check combinations to redirect to the success output + // or the fail one + // Some real cases: + // User answered the call but then hangup: ANSWERED/CALLEEHANGUP -> ANSWERED/CALLERHANGUP + // User doesn't answer: NOANSWER + // User rejects the call: BUSY/CANCEL + // User answer and conversation reach the end: ANSWERED/CALLERHANGUP + + // remove the call from the storage, the connection is closed + await this.clearCallId(msg.callid); + + const message = { + payload: msg, + }; + if (msg.result === 'NOANSWER') { + this.status({ fill: 'red', shape: 'dot', text: 'no answer' }); + this.send([null, message]); + } else if (msg.result === 'BUSY') { + this.status({ fill: 'red', shape: 'dot', text: 'busy' }); + this.send([null, message]); + } else if (msg.result === 'FAILED') { + this.status({ fill: 'red', shape: 'dot', text: 'failed' }); + this.send([null, message]); + } else if (msg.result === 'ANSWERED' && msg.reason === 'CALLEEHANGUP') { + // the callee closed the call, means not completed, means was not successful, this is tricky since + // API after a CALLEEHANGUP sends a CALLERHANGUP, that may be mistaked as signal of a succesfull call + // but since the call is removed from the calls storage, this callback never receives the second event + this.status({ fill: 'red', shape: 'dot', text: 'callee hang-up' }); + this.send([null, message]); + } else if (msg.result === 'ANSWERED' && msg.reason === 'CALLERHANGUP') { + // if the caller hangs-up, means the call was closed by the app, ended naturally + // so it successful + this.status({ fill: 'green', shape: 'dot', text: 'closed' }); + this.send([message, null]); + } else if ( + msg.result === 'ANSWERED' && + msg.reason === 'MANAGERHANGUP' + ) { + // closed by the call manager naturally + this.status({ fill: 'green', shape: 'dot', text: 'closed by mngr' }); + this.send([message, null]); + } + } + } + } + + RED.nodes.registerType('sinch-voice-call', VoiceCall); +}; diff --git a/src/nodes/call/icons/voice_call.svg b/src/nodes/call/icons/voice_call.svg new file mode 100644 index 0000000..4419905 --- /dev/null +++ b/src/nodes/call/icons/voice_call.svg @@ -0,0 +1,9 @@ + + + voice_call + + + + + + \ No newline at end of file diff --git a/src/nodes/call/locales/en-US/call.html b/src/nodes/call/locales/en-US/call.html new file mode 100644 index 0000000..0d87d90 --- /dev/null +++ b/src/nodes/call/locales/en-US/call.html @@ -0,0 +1,67 @@ + diff --git a/src/nodes/call/locales/en-US/call.json b/src/nodes/call/locales/en-US/call.json new file mode 100755 index 0000000..1c1b590 --- /dev/null +++ b/src/nodes/call/locales/en-US/call.json @@ -0,0 +1,19 @@ +{ + "node-label": "Voice Call", + "message-type-text": "Text", + "message-type-prompts": "Prompts", + "message-type-dtmf": "DTMF", + "message-type-svaml": "SVAML", + "debug": "Debug", + "output-0": "Call successful", + "output-1": "Call failed (hang-up, busy, etc)", + "locale": "Locale", + "text": "Text", + "prompts": "Prompts", + "type": "Type", + "endpoint": "Endpoint", + "application": "Application", + "name": "Name", + "number": "number", + "username": "username" +} diff --git a/src/nodes/dtmf/dtmf.html b/src/nodes/dtmf/dtmf.html new file mode 100755 index 0000000..29f2c4c --- /dev/null +++ b/src/nodes/dtmf/dtmf.html @@ -0,0 +1,51 @@ + + + + diff --git a/src/nodes/dtmf/dtmf.js b/src/nodes/dtmf/dtmf.js new file mode 100755 index 0000000..bd11ab6 --- /dev/null +++ b/src/nodes/dtmf/dtmf.js @@ -0,0 +1,38 @@ +const VoiceNode = require('../../utils/voice-node'); + +module.exports = function(RED) { + class Dtmf extends VoiceNode { + constructor(config) { + super(config); + this.config = config; + RED.nodes.createNode(this, config); + + this.on('input', async (msg, _, done) => { + const { voiceCall } = msg || {}; + if (voiceCall != null) { + // set this node as next node for current conversation, many dtmf nodes can be marked + // as current by placing the callId in the context, the route method in application.js + // will pick the right one based on config.action + // await this.setCallId(voiceCall.callId); + await this.markCallId(voiceCall.callId); + await this.setSVAML(voiceCall.callId, this.config.svaml); + } + done(); + }); + } + + async proxyEvent(msg) { + this.send({ + voiceCall: { + raw: msg, + callId: msg.callid, + from: msg.cli, + to: msg.to, + }, + payload: msg, + }); + } + } + + RED.nodes.registerType('sinch-voice-dtmf', Dtmf); +}; diff --git a/src/nodes/dtmf/icons/dtmf.svg b/src/nodes/dtmf/icons/dtmf.svg new file mode 100644 index 0000000..f3c313b --- /dev/null +++ b/src/nodes/dtmf/icons/dtmf.svg @@ -0,0 +1,9 @@ + + + Slice + + + + + + \ No newline at end of file diff --git a/src/nodes/dtmf/locales/en-US/dtmf.html b/src/nodes/dtmf/locales/en-US/dtmf.html new file mode 100644 index 0000000..8e67d71 --- /dev/null +++ b/src/nodes/dtmf/locales/en-US/dtmf.html @@ -0,0 +1,41 @@ + diff --git a/src/nodes/dtmf/locales/en-US/dtmf.json b/src/nodes/dtmf/locales/en-US/dtmf.json new file mode 100755 index 0000000..05839c1 --- /dev/null +++ b/src/nodes/dtmf/locales/en-US/dtmf.json @@ -0,0 +1,5 @@ +{ + "node-label": "DTMF Answer", + "name": "Name", + "action": "Action" +} diff --git a/src/nodes/incoming/icons/incoming.svg b/src/nodes/incoming/icons/incoming.svg new file mode 100644 index 0000000..f65966b --- /dev/null +++ b/src/nodes/incoming/icons/incoming.svg @@ -0,0 +1,9 @@ + + + Slice + + + + + + \ No newline at end of file diff --git a/src/nodes/incoming/images/example-incoming-call.png b/src/nodes/incoming/images/example-incoming-call.png new file mode 100644 index 0000000000000000000000000000000000000000..776dd0a9fd49b32f85aa52d12a0e1641a2cadb91 GIT binary patch literal 46993 zcmeFZc|4R~`v5EvrD#L4R^L{8LbjoeO1A8~h{-NvpBa-D%34umFqWdMF?Pm;>@p$y zGM2{J$1=m*mry%6BE;cTQ{%Y zWny9lF)=Y8XWs+7*?Z|O7ZcO2D~{K$>E60_O+?qz-NDhto{8z)D?1yT!#BmwHQu{t zW7GIe^!z?g-@DJBhu^h9)O@KHVf{M2-{M769c$#ST_Cm7`=yR^!z${(u%}ASJZ@b# zI{)xN{>!c~VW&2f7UE9j^G`yo9v|NGoZUU8s+JIAp=(g{tk=BaMG@8u>-WB0AAhjlb;ug$UUiqt*D zVXUvYn_2s`V9a}?m`4wY8;_e)Tgl;vSv73fKV0yeI6X6U?ik;(T{$ez)aK}~jho8IHKU%q5T9PEt8eG!Rk`r;9X70Ew$Xr8IwU98Tr zUj3k)&Y|7AXQCJk)s~A=pGmehRC6+eK`LV~7?!{)V9`ONYA2XFKUjtC>CtrtXc}s7 za?3$Wi|GRJ%+AEJ>o^lD@U#o~fOhfkJge_I$F%#`duAr45Jx7KKYg@;@2#Jgz-MdB z@9*8OgPGWXzYYT*zhvg^-mIYH-P_O1$ALDcEBe=N-2%S#?L6)6-5?L#y`l@>#R4z( zdfYUHFfs9*-umpib@!hI0Dh07fr*!i)*VGVcUOsf_uXynCH!1Hw%{-+`zZpCuJ&H{ zMEqP`+#rg6Dkp#SPz0X0UQ3=7`PIeCS>>dOmafP(cTal}S&2&$QYS(CL_|cCJ?}dx z-o38=XE^Ye%E<>_ULJ~)lD@va623AL?w(*tX$1uZNvVsH7cYtfJ;WjYZeI8N#N8mL zegoNtbKM?d=jrI-<>>AvvIX~^t-H6E%E^;k6Yc!`#?#)<@$XD-kUz@;7AU#ZA}K8) zCAk9|7^=MWR#Df{&)&u4x}z&VGhhyow9KW8%D)EuzncC|`Fp4##NP9oyDKo#3-p)j ze+K`%@&69|HK*y{Ib~%o|9i@Rwfq^WEV;Gxf05!hoqxRr2o2h&EV;up(7wC&`qBU& z1st#I7y#dZlx_X&Isp7S_xpS6S?9#}a{+(}P-D7v{fdF#uGyizgCFdM*cMv$+lf8N z57v8OB!2Xrf6G96YQ$T|=-a6=_cP_MBkx|2{U_xq&l~j*=eS>=eEK@|*%dw|nPU$2 z6Bq_%95fF}g0w-BHvQ+9F(A}CNE^l)Kl3)qx~HJIIs2byOuLv_*bj=RJ^J?p_hFM8 z3#KXE2HgLpk;QXYbp~(Hzx)4z5Y)Vv9VFWG{=)VDfcCrf(MYG#f6nszy&8dq1@*@H zF89g*(yF#FCHQ}E`!y=rlld{OS@zSuL;s~!gi7Z8zbo1rrK_;38cc{cc=rEVFVK1r z7Qpu3-hWJZG=lcj%Dnm;+y7iOI|#G;zr8omR$DMFJ7aj_zmbmxHT>Ub&T`?b2sPUx zI`iOvYkjOk`p>EVEbz^dgD|7qTZYg7TWfWO?|)$g)Bo7?N7DYsrr+}UKW+M-HvNaC z`k&GJZPowhoBp`h|M{lhPWgW!#P1mCe<8&GLWuu}mjC}5LWGBZS&3a4JPQg_Jp}># zo&cB@lrQpmCGvb7>Rg4u_vI;f=Gt>2Q~`C1*fW2(A0vl?tl_dBsA<2#f}pD+H9ET< zq>Mt20Xvo2N7JwWhWzE0HlsDqR9NIKUUif;WE@3tOX#1``sgud5CH__wdW41sGZsn z3wX>qo?}r?1BMUvOgP=y3CeAHS(ip+m~qS6$5x>c&-mFv4Od0|_As;57d;wAjhC<0 zPuFsQ8k}1EB>wv6aTA+SYss5aUop_GkGyDcUXc&$Tv*@!K zS{b>jLc(~NBO+=xUs=u!BjE8KjKQO*BWRqJJ)@JnG5gH6)&{`oNjpU1UwaNMRvw|1 zdaK%jSohV}g|OvBq>yTo{60_vWX9iznMGaGrpO8gZk;bs1`cKZyFXA-)E(0X&A7I&60N<;U(mxi6yimgE9lca7wryguRu5omPAFg^49#W&P41oGDb>@r(%7 zCEb?)Ukl%TgxW83-V$M&(?EQkT>{R?DseC9L7EMt4XJ(e39Lkm?^(RytmMMdhiFJB zJO{*z%DL}yR_&1*m^r_h_R|?lpRDFl2>4M`as}9gv(*vr|CJb)X_kUDm9(SRhIr=| z*2;%+0?FJr>!rx-r&~T4;=YZ=r6^{UT4m`}gGKoU_8t`ZUiQT-Ht-{TBrPwGF~=LU ziyeUYXyWL!4kGQ1BIMc*BGJAev%E-vYJjG0uTVz9B-L)ocs|rX!03 zj{}W|HhB-iR`IQTe>IQ2@bEF41-@8k-rL3d{-HtJ)M`4648@B%KpcBfK(}M1k47LP zK5Z@l1Q%C3u7A;bll$29g}w_hF7g|dT?#pmJ3eY>omiS{b8G;*X4nY>T@?X_`%L`& zNC#+1BN86`YvuiW_n)MSN$^+ye6Iza7=MD0&_eb2xgW{ z5g;3IRWuT#2p9z`q~FQED2yAcEhq#Iv_)@e_E7+8+H>nsa}JQ`U}>iMj#k)w1zMh* z#FB$&I-1{zBCYHqy3Tyi>OscK#a}$FWnzD|)6RB$h)e8F&(K5jmQDCvoYcLm{SRAm zI>+o=It=CU21?5F*f~34YuZp#Y>QhZD90o})n^idp3!d2wT?jy`e>H>wm+%EMS|qx z3$*(K#v8o6T+mP4N@pUy8a63}iu5~Hr&Qp};_-qG1MKVx3l)$~YdTcFe}!)#eW+yM z9?N_$*8C`m*q^1Njf-3DjnoEhE@^hSGZra@wQtQo_>#zDk!=rkqk!ZQQc3_2p;29L zt-q8Qx&YX2gBBch@Sb2ImJrOJA&6S|N^T=!L~<(X*w}HkQ$pWtud+!DN#kYUVF8OyIv;dw@_X9GsS)_U8^V2Y`}YY1KPo_6PL)K zuMU%Rbo%di_JgeZ0mT`h^(sjL#`Vi!!i^oqCeN@=d_%@cl>K~t6qOhgVVoEvXX?E| z4sXhNf;Ra8&zTG05ejv#x4pq-<*hZ)!nK-Esu5E)-#L9E*fSER{RB5=dh+@pqfSyM zug`~OrqevSAH+4d#yzEl+eD46x~fJgkP^tXs+JbMtq<5x2qXnxNb;@HqudFpw51H@ zxupr$UieH-Avi|43n1Ofd;f`IFqQ1o4$9y*a zG&B*0UH4y~LNQ{BhsGACX50sqa_;sUD}8Li4wkz-EcYCJ>}9^%ck7*;t68Y3j6>_> zPmhL!9{~k)K3er}v++U=u^Z>m6TX0!W{P;z-7`Eth2gaJp(Q$2EAW#0h4{@9m%muk zhc7k?G%9Gh(;MqY_kpmBtMD1-Xtr2!E%_n1ak(^qCcJ47k)gypYz@tpcTrV=Q|~6y-+Lgx8@hTNyyyNsbE+S)ao;&pT20mq9|7Lx^1yt&f6bn3%dRR^@!bj7f7 z$+xIcZfdnXZ$@4cLOU>;PCh9#oG}ew(P3MG@7j(g?dbNkO|hPH*IS)!y=8%38mpqBJ54bCYkI-SEav2 zL1xV}5 zwN6MHZEio}zFE|hyV6T*tDxxU2z;$f5gZ&o5yh^Y@NI3qd_1!G2`yH6g>MR-=emj8 zG*Nd3=mHVm7$;?LFuYv@CJGxq9Kl!NOmdr_s|>v1AZCaPo4mxke`e6*6d(@6yS=^& z4M)`H0B&JWE|Cpzoqs4LwZx1DQ(7%~gTNbnH(!j%(7%4CB=!tTVXs>U-52m`IG@oo zl$!^MUpWeRId6H_CA&+HabwbvAX4lUS#?vI!H1E?F3(dk4AH}mIn8QMaHXpez7&=k z=^rY=l_jEw0@SH|g!~zI6Qn-m(i7a|6rTzxO<=vbC*8ZCOfSr%I9ic#R&IlvL+ysn z;7X5Kh1*9+?LBW*UPLM8?O)YaUMHa5?3!#~(8^=(fr?4FM9a5`cv`2CcaX_c}{ z;n-;8#O=*%av3uk=rYSRft7ld&gJ63rAPA$anU>yrU_&3(kKhZqt6_eybEVV5ze1g zTvO%PLq0e@``&%9dl?aMpbo2Q+Y5b)+80y>M1=6YeLCCZ0YVH3UGl0xE25AmCe}L8 zf0%}zTbwNsTYNbm$nr!+$0chl4f+QeNZ1`g>Y)EG66U z^hKSUY*l3LPnF-b0`IOG_ij>~TMC5A5x4TsY3q$u#=0)IlGll|Ci1Ne8SrK)50CKL zx=P0$Q_>I5GRP==>N{#f3V(ETO4_|I%XlH6*3vf}$0#^E2_KC{yi#w#f`m7svvYvDMSriG`ELW6t>5BPe(?5SyDn&O5uITNc=maY>QWcfnD5FI`VDb z=oTo@!fQ)URC#p##<_`a;pGgc?uG)&16#V4Ae5fBl;#`Iq2D=?xSEa*f_5y!_TTJx+Zr4WivLBUDvqz^Q|Wg>A$mv(Z*LY|boM zlItBA%X1a>kOiTHZ>I;oeVCk6h+)vb&!Ca`k8Lv&)Y-x2SAV0haxI3dr zcth=gc~ISFifC?WYWIvxO(Xm1fj9LdXh3xiM3F>oTz#}Fz@cz}x%Hc2&kV+B_woWP z0|+uGL2KmOY8KR?=Yoqjqnb`xGrGx-#qKy8X=68Ddy&hqjlP13&u(N`kt_7LKzZ2Z z)k5Me>lV}}<;rpwU+TQO%klI#wS-M8a)H;PH>3GUxr29<6bVV{l}DcPj_#kIDS%=r zO8D$&_lpD%SleFqI%I}8Z!SPQ+c$PuFJ7gmtj8)5^l&1|$(ZUUXMmUqPFcreXHyNH zz96iI9+bNJmD-usDT{jYD}s1Aa;^fU_fy%$Zo!ev00Nb zwy?4Jf*5-E%Dh{{YU_)#wSbunnPEx_47!#l58D)7v%Q%=SEmCHP#i0Ammp~a?&EUB z>e*#iLfHf3Y>Ricxovoh<(~3!e#BR}PGi4KZIQ4gEQj53yw{`)KKvNk(K-$dz{n>F zV{3Dic_%}(8QMbK>ZR*pyE)wyylfsoRfRg!VirF1?Ak_zk4QN zzg{OriN(y?U%Oj^-Y}Yy-y|tqM4`mHmp-_(zjYww;HgeR&u{cXy4g5y(@;K3 zAK6d@?unM#thADGS`{Uy@;I*T@zD5cZ-w!j=4x=h40G;K@xTe!;^80U9wZ|=^+0IH zv1V?eeANjaI6o6{0@TU)EHADH!Ba7PEVx zm;Ndit4NYH15G^XTWdce)9kLg^rHXed^CMwfSfa{6T|L=k6B3?ylCD!J^zfOGY{>t zU|oWbCxs~nI_GUVU9nN1hCh-EVDOwymw8@SkUBrtjCU_nm|LDZvV3if>I))0E2_1F z&PH7XV@)0Ve;jb4HCI1y2`7RmwIL2hN1PhIE?1uAh)bJY#!B8I1q9+4ukLa_8n5*8 zMJdeXJC1vIYi$MFigO)dPATMFl6|rm`vziHZr?GOI<7aG?h#nUNX=$*$^T-KeFuBH zSTy31riYlg7KX8fX z@poA5&x?FwSGt;2@QFDzWmq+UlwDZ29<|5q;T^jLzS?S4os%Wq>m8|n#9v{o|OG?9S z+JnSY12z1Pov@AZTzKc+NbhIVRlI*Upo7aeaIUzBraaf7`aW-SwP)=Ffk{y=#yCI~ zh~MrOdh4}Sth!H)gS&Byv^fkOl~mZ2UU$NutJ|Gkbv8y!(un)sgF_uj^rYRLcJh<& zj7u*s#+wsA_@V-?($Vet(p0gw7r3ekYPel<7)+KUV?567{9~M(<5a$}PBpRD`H0Tn zLvkAf79gTGt{{Drr;sZ{57e!WK|VrfkE(#ekQ!2^F@zF)SNnyTQ{LK(76e>7Cn&AK zrq!D7bWN>~=uIv;YNav~xA;gn;Wb{A=W^(cpk{j?xv!fVeY%u$s=bsaQ;Ym=F^UI3 zEj^Aa80mw~-WL9}tu2=F`%qVD`JdUbRRxtwb;^--gKwbrDhDaw0#3fwv|I464-~$Q z)Um|EZqhe5GvHZrh@V?qCQ6JLS45;xjP%orhr3cl(F*?{sEy2q4;dM*a^l!wFphp} zy{-$c_~0d zW6~_fmb1qL1Ys~*Lf*s@`@(O;jJ@O6e2P&L?31}(wTMDh??K5AdTaELBO4}4Tvq30 zL7Hz69H6Yha=Qw*$GH3M&<Z*mHTa<6lJO+>AR`-G7DjfIxr9ZGm)vHw3NVw_?)hAHQI=q4dqIyh4pORNa9 z^hQa89ookifKA5BnzPMF?aSrGx_ab-!I?G5J4$YAUzH8AE7WSEmZph>HJO$x^Na3K z-+mJGECHOfo=f>KX?Xnf#A^77VZA_=neQ&FG}$GRG|usde0B>&Z$e2E@n&XerDQI# z7&`mbTLsiIXRero%VT3uX;U=_OQf*z(^^7wC^5_xt2)`aR->_qkqRGOlokL5C@|cM z**kcLKWogk@e20auM(F?PzR1v7)fMU(Ybc0-0l5gl8;Ai@w+u+-;==ChIGoPzH8|z zoFGzTx=in;vkD}3bp_|Jc*k(_D9otHz9A69g0jO#D4*C#(F8@Zh8{!A;R^1e4 z+XtEnQdgpeTLrZ%N!`v47UWncyzt}zXuSN;JU7R9!s}{kw4i*I5vZdV_(hDtT~&VhsaESKK0U$Hw)6)dnqDmfs!<1T%gf9dI7cX__Iq)HUe zAm9@c+e*heHU>>BH`g=*PvYs-*=+Mj;i({VmS;+!(HB#b^4L>&>-oN8{Hd`IvhHRZ z3DLOl;^yS@=KfWKY<%Rl$$BZY-?f zq4V1Aii?v1CxXixUQ*5x?o~_AD)I!pxENmz78^SP+B_e@A^+wHu4JCN0b5ye=n)O^ zA&kgGMwID9HBGctPER1?6XQc(wreh~;QI325dK0ZKvsx6KdYngqjDh))y&%#Ks>eFsGc`A2{+rHLNXPZPA>O1AX$=agl@+2CSRE6 zMLpD(ZkW*p0+G-DGZDhkfXQ$Z2duH{T6xnp!{y zCNLzp&PIJ=w_2#vAq=Dqt-|lOr^2owvBiiDqcx|W0CR$A8eH}Cw@Zb)2`8w8nWG%? z+_h6_zQn0MfsfKCV5j2`4)uZe8Amqq23|;K@~e|Z;c8pt??VCuFC%H_bM4Nn@IC`3 zX)d>zkG^6|tK@GbH<5WIfyLk3_n0c>A;mqs?+4NW5_80gH6;~gG!W6kCH9JLQJ64| znQ|bt+#|ad_v!Npr1jD>wylGh-`f7&Jb5q+@-ZZvQe_S{4+f}g*x%FdhJ+QZ`o(J- znMtD1v#Uy-1q1VUer2)9Qa?6<7^w=7$n+5TtOhxC|?7e zo~%RQIBgmGt#57BWxnkk9@YT8%aVdEo5<7REx&NJ?wA8&9m>^;nNlf3 zsL#z8p6ml5)`_Ygjxh_1mI+tU_?<sp1(dgeJK)IZ)NXTMYzBjr1h*1T zh6PeZ7R?mb;{E{t#muov3YJQka_#iJ5SZ?nZ0eGL#%C*k77J`38Zt1Siub{u!Za`s zaV`?wO@wRHj~kK{WVqUPk9hW)aGsdao*!?>0}kL&f%j7~bSftfIQC??56pyfiyC(a zC&l`{HTIXpv6=}SsS3eNd)MJM(8taQtDf`=oa#(6EkUf+auGQ^>n<$ng^sS&T_N~8 zORkyVUar_$uc1D~LA^RMv$m9kXh|y}FUmmaI>;qhR?+VA$*>W0*l}pMq2Yo;{qe8k zI~Lq4_KR*v;*FQ4oR`B~pS+0>LM>Kq z71&QLWozNurV+#%+OlTdW6eb&b-vJ%<+f*(4?~fgcLOoU%7trxAm2sR+7yI30Y#w5`Ar+R}*Pd3qG<>53)Z_X*`g!oL*}5h!WdI~-L-65zGD{8onUBzh zmgDbEZ6qjqJN4fS5i}F*ZeJ~f5Yws4;Z6EWs?s{dt#jGcLHZul!~A;4n9#$#ofM@9 zE2?f~06t$e#OcW3CB0^on2Qu$Jzx(gU$*rd@dpOk&xd-=b4!Ug*-)ZrT`|CVrBL+N z(Fbur8qF?%;fTK=q>>03X}Fu+YAH5&>80V2WX0mT*9ez(jwQM)HqLjs6o{_34wv$- zjlCP|3%xtPd29eU7;7tRkjI+MYLon{+olq6(0g;fYb}@nQb4 zD@DYlu!F`G>oUm^was?cdd({Ob^~-%t{#=!Di(I;YnGAt2z{2X#WWttW}>S2F>i6$VtGert6@rXcX&`%b8#XaFnnq583lK9N)#UUv5FH<{P_G7-@H4+^z%@^7^1t zmdgj?EKcqAp@90bx{V|tvHXp>sj7{yQI`Uo;Tkri><5M2Fp3|N2}rwf6Wvvh{HfA# z@_`s--PuQbyx7y^hp~v?3{a~ugQXKT4(9}DC6Pn$>F)N3RDstk1~9E|yZrnZ<0ZHK z8O_%U*%V>ri-C-)@nUkMyI`z)q)2957J9MN0n1-IcnzJ>iNmiqIrgMMCq`y3QC$Qa zgiee*##+S$GDrw=xoe?w>70UHMj_qInbI%J-<)D+M{4L5zDH{NAoLOsr_k3b4%6b_ z#7T?}^bN*hE7v8b-a?5zf`@Ad@XL>5(~XtwD$3U`w&0}VibE-!e5N)2^uK z)s}Pz>OdtDJ=}7Zx1wXwy~QX8$Mf0=IMR@*7f8i!44|Ax5eig`()$mq)?pTfU8<@@ z{60;wsXav9OmHu!%R-levv8?B;MpjK zU&OFdA}2IzbnZ}qgvn1Or4UMRH=T|^UT9syECv-}L^{Bs86 z(r{g|fV=9A)Hv@R%`EM>%T8~gHdC*?XmCn;ob#om(=|P*u|yAL1OMqq+B`pxXM&$6 zHAx#@kBKNytIP+xUf!Us4s_Vb_kQlF3R14^GiE3VK3vsV(%13tp>^mBq5IS%^glsD ztx$TOs_C?A?zr2Sjt?2;pG7J$+D)*te&|@p#*2w60N+H$(*aW%L;9#bJF}PW(TTcQjf`%E&j*_I&!;=T?2vXR|s^c@S#WrkdFT=(xO~xNrhOp7TAZ zjV};5hh5;W*u9OFTI|04_f2Si>rv(GYH5*+8POdV7F?7|*kxkzfyPx?(T3f2?Wtqb z%bz+SW4)L2qQ}R39d7&%#&TG5x3kz>m+#@=9q3{|i5|rOeR>hnYT@m(T zb4x5)s<9Vc!rf3Jw?>!{(s^Mn0HZK{RT;NuyP6(s^^s1#9=B0>+bS z;T6pmh#XB-1MArT&(e=Mmh~e6K++##z;oV-vhk$TQSi^<_G4; z=>{NXNX7scJTOt1-9X6)XX`i9o$!sti8)ci)}ZX(oNQ1>tR6e))Ph*v9=sbjwIiCd z&$ycSQm-7it6?byl&Fl=3)g3IfI<%Sd;scae(!EFB@d>6$z&Jf)L8J-BuhQ@%hd3$ z!L8$JEl1L20y%vkBp_`B^6`dc6jPAfQNZEZWpN=ASy8p_vz$9vaP!2eKz#=K4SghV zMnyu^BQgO2+CwWha+3ZLUacBQ;4qsP&J=u%OL^@j$jnl13WWRLa#Ug7yf98wjwnze z@_VOcV3C~HHBccz4qpXepe@~Telc+*{RO_m`v6+iR{^J@vnB0*u&dQXKNnftPKlb- zH1ky)j}}lEv&&9qi>igcOQGEVZ_+v0ne}OsYkVNf6I@krdDM@S8o}iy{=&1stsb=y zAVJNUBG4@fRK8$K1$Ka|iG1)`4)7r?tS)IT7OC7Vrx$G1e!*s5XUs+$-SNM=_WZ=A z5Co>q)SqoK`0-t+D?pZGQ05~fEJ&+rbtVeb+pUyd$Z(9JuSR@f0{qtQr;y{@yjSzx zS2#1*w~_*`Jd9m;qGzy!wkz5~R_q-UW@IK-x2ku3LSURgQlP9<2z4rDR)~e&z;wI9 zt*D@7*ZDf(XJ14B*iTrz6n9`#*b6ySuHEa-HXVA>o|$gyj*D4Y7ki8gK@TTsqODM; z^g@$RhhUNSfzSJ5=phl^8$nGyLa}FtRVnS6dqKiQ3$D5VS*|Q9yxTV4$w-#|0}oNa zVRbxE10nzLQl9g*1wOWj>v^~dE}4twtf*7tvl0M)`pL%bxQ`R^l8h7c2gKtK_*zq!(`Mw16gG~+x@C)m0Rm2%Bs)%iDgieHa?Y9q;!^VJ z)Q$mRFSPvLc#twI*;tb{9M^Hc_{ZEwC+c}>wzGpO(CPatwa)LIsp^7#3LhZ=Gl@o# zI~50$cXwe_X!r#VM!=QZXXl4zzQ!#>>SDw@YiGU^7jjmIXX4q18O&&{w2TW7?Eb z)^>3ZDB5>C4eh$=4Rn>NVGb^hlJfH%)L!TloXdW@qdmKiejk9?c=#{yWz>66*wy%h zFonWA(5eTdpnXyw0dhA4yPj$v{(&mGw zF4bvA5x;BTblE2fKvkE(8NequR$t4VDUQ(qoyy0nC%xRp!saQf87qoM z?)Yf1htl>kM7D}&zd$Z*lSFNW#Vlvi?Oxh+QPJ@~Hxs*ffD3vR@UERBhGY~okKFXx zxY}(;VP^m^Nu9smZs#szcqCwsy#|NgY~%O?KqrOATV-c;4}q#ifu3)~(QP2I0FfeU zc(*(3Vm|-voy^%fWmH66=zPSoRUkrf$k5urnd%Hx-qohg)wxke%vxMfh z&`5y*>o<-bQkMO*&}2QpY@8dD-&uFhzOM%<$EJr((zTFpZ9i536}!LNqyhmFjc4R2 zpWp8LMG9b52wyK@8}n0J_19NiN_MV)9vfgb@)91H8=u;i$IU}P^`}Nl{*JV~*&=GW zzu_OEPF@67A1hlry)F0bg+Pbm;{1?pG={g($f;A7+(F~>-mf+4(m1f)I}kh|UfNE5 z+yT3d5=;GOfJ*!2BQCCEB=-vk8%&f$-e?GFN`Wj|>7cw6d{j{}T%Doiumjwt|r zo>JNF4k*~(uc_+N4PbO?16YQ8V4GfcfLT{49%$&?fgJu)Eo(%EM>bRev~#65Xz?^a zdFwfXFqE>uua@O1CtkGebuQsMR|*KTrYM zq3yvf79aaT*v5yYJ_A_TzwK(_VSqoc^LKVG$yoq{EV~9T{1G}YfD&kq*3d6hQP8%beWKY<9*Xz)4%me8kp)+kcQ3 zxX&wqaGiLu13uW~OX&Qy{nMU*1_wz4MZN;NBSsGGP)dEPwzr%@Z}~THyUPxn>*B~k5S8d76BX&X1-J2 z?v{)PAO=P&>|mJu%YqlALf@E~TK*oo9ZqNc3R$<5M@<6oFVNY-&#z*i{=r15YRjxu zY$~hl&{kv%wcs)?=B`iM)RjI7u;|o*QRy9|)UA@cqmY)46j+<@E@@}swjk(~M4t!MR*P5-Iz^+E!oKVW8|C@rzKxs{K(MT#DyN-kzh6%_bjMx(Aw@Z3Be$*n^(g?S1mw&R zLjJ>*{!Qo$^}D>-&FsS%-X8ir*N-gI7vXs*Xy5cjmZX(YzW}+ zrow<@C}tcxD6JJ$aIYNPyvLEQ$UlKssvL|{bs39yj#>kgAN`uv<}#~XDI@nNB30Rc zxM(foy99W0IS+_j#;?~7(tbj=$!9YN+)QZD(l0`MKS@=dFCBMcvs#TI8eW(cyHGrv zq}2ITw)=LLd+DwGrnA4$nRE&|YhMjM6u9T>6d@eP5f#OVEvQ`C)46g@@) zyRoD^Tj{oZ*7zbheBv<7=;sH+16x+-m}d~9Y_+D6_d)BX0%W4~1U8Uc;$sPz+e}Yz zTS^jvSV#$Sd|4wAL0|KqP2j z3qee$mw*w40^6?l7-LI&@WK8EB9)gKH96NG}mi7!nY*T!L>pNCA-i17q!&% zgKSGHZbaU7;tkl7bYfo1`oxY!egouzjgtB7Cc8U6Xg1WPs^944o4qk&>h_p7ff2QY zOUJYREqnH6&Z{DaZ}`fyLE+Dm0={-*E(UHp&R-W;)uJOqM$qia$Y+U!Gt?0jBRbdY z^T*0hJ-*do$;14=v5^dN;{rWP!dUJ7{Q{6R%dP*+pcWk!GO}C~t6X$yie2T@hKn%^ zYR+r+cZ8tAJR|_yr?RQP?Jq?RZV|kaZCsWr7U1(18nh22x^OjcwqDhVZgT-8KrT%g5JLK5Lw_;JdLEG|O`Rl6ovCbtE{;6^h4 z6P(GyLqMZlkscGR@6PkU?`}&UOQz%&#{5wYBWUGVu-$^`a8I^B3+kJJ%Wr&Fn1_IR zu3jLiR&n?q5zzdnNpmm%tOWoL92%Mi?Gfav2JZ()Jwl%&oS2KCHDj)Xjkf?51qH#R zU(%6WrX~+mZTi)JU#$x8SD)llQTZEO%mZe_C>hfL>|k37tdadd*)jZEyvEh=YPNnle2W;KH@})fPS=o zyi^La`_~1d(a{PwO)mUH&EiY_7aTkEOTM+9;UpahS)As=!=YxYJ(``hB^zgRO5Fp^ z))s0V$JCMOFZkW#jo>x<9Zu#dt|s$Uw$(#ZDduj?d6@p_q*q4o3IphHLMmJ55 zgS;3$phQ&hY6a-^8Mo3~2uZ!B@vP%8pNrX;2j8bUGl;bVVR+Dv^C;Kc;_IrAWHor) zA_-t>PQVj6=cJU`#j=qjwCuNa7wF;%T_mSEmZ>y>uwYH+pe z2acT7dpAd-s$RX_7&Uek_A5H;7Tpc|mUO+|@ z?Um%E1FXhkrJ^d-X#LJ5gvA>pvC0x3ho|GwzWt{;N~~Xnv=s>wBu!~gDIKcT31gcV zZa@7NT}(q2PKe?=NQ@!#Rf=fGW<%gb?2j0+`xfv9Uhdc&nnjt{Ei?-x46QTvfi4+w18TtDGM)trk)h>|>rl=LLz8Zl<(yj6rs=P=Ucw-J5 zApgZRM9r&=NcDweU3}Qt0NkE<9$UiuWKky`}Y1#37++-pVW5cbnHE_va?o@D%tHCFv3Y7{fYKZs@nJbx% zJ>ZOR($T4Pp$0y6YRTP%n0c*IW|-5wRbfA0u51Y8j-X*fuO_QEz9VvVD1q}&WN|*# z#4-HFWfkgpv~xo)eUP`irnnBf>7OHSOWtEainexFV1W}l>ZYoNlU`D0MJ2lBsIC1n zj~fV#4d+0=!nNa)h-+rD97DFv!F5`Ip6QGa-K*d`OKD*T0-vY3t1!zAE}=I$&0x_Bd+WdavOPI#++}{Q3lVu)#!S9kFRK9|BywyE? z1J@OI*B0}nYH%iZw>MN|ID(_Cnc?e*sg0at9NmXWy6@sX=|0kzEoWC`{8Nn?_t9F+ z=AQ+Z?vCQ^0Hj=hi;X@28_~y#t%P!i_Y#y!20!Qeg3*v)&X0dz&@;U9MRCj+*V>0O zZUz2k#7DKuDQ#MLo8PZZ(Z^MzQyVN}l#eQrOL=?r;+#jl1OOp0N8#(ECnt6apuIp1)vi24oRglgW~wqWd^?CyfWX1mZbX0&3!#} zWw4yh0kdLD@71_Xo`p?L@ORXf;1k|j`RnDEt@cS!Emlif&}G7^Z-kMQX=SRY_p)kk zsc)d%(ajMvm3UVFB7WJm*OW)fV~++^=sJ(QRRavVmpwh_8riBKcg#E&-4)~aB>Qxn zvKHECI$z`g>5#)|>kmUsEJZ3|^Qs+i>y4Xpg`YHFSrcZtzE7K^!$JKS=h~I1^t`|V zp77lKWoPsVd8lqa9VH#E92_01DU-)Wgvp45NUa;6Z{Y@|wfZO{>uT~y9ZJf(`#dwQwWM1d`Wb*QTSAt)nvc}U(S=p~F?Yg?+h3N~| zOm(tpolm{Hb5;VJ18o?^xqc(`%Cq)jnH{LZqj#E_iw(QuJ5ZhRLgt*@%R+7%2?=Mi zG1{GWVG-?Nq$IAY6zaS5z}5G~5Z(HO;QYqh`xQ8eMx+K07E}v8z_gq(6GFt5x6x6z zqm%Nl&6S0WYqp~$Y6=ZYdM}7qtQWi;9Zp3dBvIBfNp^`8#6_)u2?$iBxJ+ zxmU9PMB9tumS}5g<_7s$224R5LoQjPc&{pnAsf8Z>6i`UGB&UMvDTC{>kFh@nowB0 z_~q=g#}YSEjft2GE1So`9JlHh2q(llCEYojmg@J9XQ3)L`MG~Q} zJDIPAa2m?W$~sw~Hj%TSV0Uy-e|e?WlVz2Sapjdp9mFLQQpp%qDDhkR6~y$|+{GNv z7mAcl>q=5PN6|7dbK>-e%+lrlcH~{Um4DZHCqlxziPA`UmE3sW$p>$Z4aE(@=F7Xq zVrL(|ywLCET=a7V+_l7jrxZ5l)RLfk+0OP=|}t-7g`lWAt-|-+7%EB zH&~QYirah(-zd&ZTo20J^b9q&ZdsAPdwTbtX}Ax$yXoq;4B<~7+%Y!Yw>HJgy<}V3 ziH0rCT^+vGMg@TcVJs5uR{4aC4J&^X^PFr%R0V!CqCBKNH9eCcv(eYl&FN#a3yp}pd}9@ z=~=Ov&dAMgkVIkZ{5C?hIif! zi54ZiLtgDExdvK+=dg>RKjD@`>{~>?fp_W8;<$Z)#^f_hNr;5@QM>{u%Ug*~RhHo%JuH3Z`L8V{F19i=cGWHyGFA4J< zoc<8jwXw`8i#K;G&7bz@({(o|U;T;Z%gHOEBlM4to*|m7*F&5ZIk=FWZy3ZA3%TcJ=$wxTkxM#8_(k zy~J^P=4`I7aBRfGwQ)`?2i2H%ZT$)oIP^e$;oT{n3vKoe`U{SdGH;j+m<{&cb-m@~ z63v3*xL{Csx*_iWVd}c$q5l7PNl7vyBpD@y5Q>naP&S!4j$~z>jB_}ns8sgOyvUxJ z$DNU6kINqCkj-(nJNx(P`~6klKRSrrjne%$E9=RI6$kmb_HFsv%FY{g@f?UE`&vc+RgC%b`Bc=3 zYJASpV;&!@(8(u3{`lO)3c-z~*wfS(Sn29}Nq4C&O%}eId^2KNSl|}QO>acWYvEdO z71P4nIddyAo)gm|1>j7stRtSxH+11w9H^CeFKOzJn%`2Y81+H1_B6Jv6lFQO$Gz+AKb-712R`wu{OdcUW6z}#8Y(&5dpu3?0)&T|f4VqJ4 z^9SwUa3Xpg_50r(iJl!d4*g>GSL_ExkN5Nri;g;Osw)U%h0q1b+rfGLhPu}yV&G3_ zmnXJFDdvC`br=N0(7UO&yC`J-8%0s67Bx>ZnJ*%gcZ8C;h;rx#*I8!%MDx4l3+Ot* z`Z?(QyF0-bT0G1i#ZIhECWdzRM!8^fcr7_4{O2=7cCFQB4N3yFNvXldm7nbq?bceF zk->}`IP>dm^}x6e)W+ilL1jQwFv9$z@Fmx}-2CN_Zu$g{W4pM`#g-lOaHABKF1=a= z$&f>K@bH@mem_4aM@KJ9L+oVwYh=O=$^L^C)I`n8z9I+5L(0@p<{8i5I`;`c&q14$ zUM(~rUi~ZmJRa&f&12pLgQ-2+sxPIT8W?$n?@lw@Z7)`mJ1Zyq%rNCP4z<&%=r_|c zXx@Q%`w^;QoMv8w|0H41f$_XjxqE-%F?eATI-AUv=h03zE}5%D!A5PP(NmbuGWMbf zEH<5uUfs*46zUaxVX%G8K-MXp^+zjR&#}eonTX1ObYbuObm9Gvlg~!JliYYO_jtusVhCah#ul zkl(<`5n9;Ego4{G(27Fn8(iCKo({emjtlRy7=4Psx6G+VS`yuO&wZ_-QTxJubtNE4 zWNnAhym}5WC1!mO=V5H*Pcq7K$oHTA&-U5yDP8@`k9J_c~?cCmx_1=F<_- zTiD*$Lq_9iiOkF`v>*rhJEMiO3xX zy`>8P;|uc~7kx+_W^i5VyVq4BuiX!K4-6%Kz$_FI^jGGYxjC9Tan~RpdCQ|2i<`3d;c3fN z4fgM$xpqNLx2R<0uWvabHh8_yzAsF!C}EAJ2F<1zzrY)3QLv>eycJv%g8KIQ)(;@1 zNH_y3l%>J89<1;NZW&Q-UxvLPMuKdV`aPN|&+?%E;1_iLN|E1^NSXSUBR(Ci8GJNqR3ZDh=uQ5?Mzbh6#;poJe~3=R z2)~-W#GcpgYB@IJDG)o94E0-odPJo4m7JPLL(94D+YUEm=i4gkP|G_-!aQmr@!kBd zY-Q}P1pcE9zg{NKG5DY_OQVxl8nVAMv!f)uYks6m?D7$#&+?FO)*qd8zNt={x`u8U z6?)kninImWPmVT;33p-a&z10mjdb=;nXJY*zc%y@j zKxm<7k#yy@{EngZqkfpIvrdB9h4ngQb_-$5k?;hQI}n_&-!vPjal*N1U^i27>tygl zGeU)H93sxe+Qey#6;E09r0`(nQ3bi_QH|keU8CLl)y-x$v%T(1737h9&DdUuDOhBW z+0N@`pg`-KVy87%6>!Lq@vc;8|Cv4~Lk2ASB4dGW|9ooPKMLGBU zyxkc&x4rZ()MF=YOfQ0DJ-fskJn&7nXrst@uzGr4vRQK}N*8v_Aji2zWh0%LCfs>p zl#f3)W1%d-qV za}9`yu7+&NRQlr#Oijxo5#)zLyWp2Uw*rAk^j-`hcF>gZqe^7Ss@1((1Db8}Csr=Y zLEfb$0n5YO*bdDb+`!kXyf27R0WAwg^B}u~W8t zCYSJ`N*X?1iML;4D`rln4d&H|Y_rLz626aT7;<#?D=0F~nnSvMF`njJU1oH9{NNI` zWrj+;B^#=|M;Q)}tNyulHkOv3u@`5*6+zkiVSq&{qTL-3J+h;EOclLcZRtBYpVWT| z**zm^lk>8}J=n^2Bg3;HTVv`v$ssryTb?T7=Ai%W+|%OjHi)8^Vr9+@yMt7;&`$N;irt%wc80X_H7Q@2w}|?Eoc?) zl9Y-0chOT@q88~bPb>Flmuz(!Y-KnlKb0eOABi_)vcKai^OqTF7W*9^00IA!t1JWH zV{qy=_qz4jtj2zLZu2pDwo8A;RP!&fh_>8@1!FxSR`|H++3jPOl`~Ooly_aVD_g6A zXq<~^Zs8feL*erH!DwPtEObqPDX>)o+tajCy3D#!1#!}&1>sWNOX&3AVW7fYsL6da zKn8bk~)lDmbbtLtZ=uIwpdP2A*X-b#>*-oN@Yw*02)dLN3f-&kzgR?f^0g0e)N z`A32Rt05^q`F&^Q+^SR8$64$KP_9Ic{egYcBHNeoB!z%t$^AmRT08i2!~RhRr{&7g zkW1l}e)E82Wv{ z-i;2eGJTgfzXxw$s&RPmysTK_RqVbx^9Wy4?c5W{j5QZ&;?gcBUw+{GJ^;%t zB7jDq?Jk-eKBEcwD|ax!5jWVxw$=PRDyTT-&L#6cxx3A!orY#G zXZ(3wZ|oEF#TFsr6K@aQXvedlLkgqn_$Ljv+c~l|ZRs+m-WdB4OQs22TTg;;_=q`ZTLq6WpAG!y{E$RaRny#MS99Ui2C}L4|#XXiFix5 zPD)%OU(O8_&AyYxenQz?uV&SQd|E0ZrsNrJ+3R^=V;-`q(OoExI5xZ8$eLqV*!f)s z8o#pO0{JZDy2>N-HFSKaR@K9@s0CCvfR3gd@uwO~$!scnox0J%Xp&)VM@TtydtqDz zhlfr9h;?m2tz4&%T7*cUMrI5LEKZPk2rnBe$k0^s?M3T>3kUtSb4NtvXI2X}p7qbGmDb^Mo_$hkFB>jdJN7=i?LC#LgddwFJJN$3VCraPxS1u?;Aq;c zd0V~m=CMs8`0nz#GDP}ddcM(3qfP9+ugiq6_=MnwY+Tpf$HCg{8ySo~OQ6N2@V-IH zM^KtUC2X@(=+c>y;B9h{I`FSjr30K0lidU+3?BAOR~m+1PP6B$vGkx8C!5|~R;xHj z!Y*~Y?e|>}CRv?)$ZE$$9M*ZGc!h|*7&Y^6G0eRALQR2E{;5z53j*KxG9Cn-}n15)t5*1 zA2r4wlFs_k+<(5-oP6@13Lbd5p>#3;d(U&pf(qH&t_QZy0{1S?iOjd|O!lRetMFZq zEFm0xaNjh|ZJ~_S^%Jd1)m@eRi|xXOVEwrB&xiALh;9P` zyXe`hR6zM+fZ5l2SqGoT#VZDwz9kA9y@UyRj^Ud>ATul9#W+N&HQTCyQcL&;(~|)h zeLUg0e}iV;>>e%umptz^7JS}Hebx?lpf+y6R7>BlQ87<>zM@Nd`cTCq1lxQDNnFMg z5tj+0*P8SCC0wK&^e#I{m37lr9t5b3^f)oEfCArr_#CkQB-)@Y;>;$tC`myhY{e6& zhvv1yyt5w@?Um8zn~u^=H*si3OdC0V6vfHnchl_z2uFvK(ew}>_0C440~rW*$uDe# z<OzdJlUsmJ#+%DnTogTaivYAh!e{Af2Q>6SkD9K1#ubFZrOS(-RFHhU6J~tOv)-aC_ndlYO*N8Ff2>$Dgfgu%4MVQ?hwW zKXJ7XnISk&`18JkQ>K8Q1I=z0U4a zl=m^a<<=o+Z|&Wx`h<5+h?xDiifODAE|Kuw(Q4V)&dJ1OWZg!beMDsXnWT{2rRV6z z3)eRtqiI2SD9*YiB^&Hq|LA)~NBpQAQ~x!&>Zq87wI2oj^1o2lp;}ophQ*a)TjO}c z3|%!3yml<7M;`v-dbR70^B(IZSfO;SKa~}|TLy&i&>mm57nvrY5S=A5w>ZeE( ztkf(x!lXW!hhNW1V{BkA{+6Gz-^r^Ib?O2m*5-Y^#&N-wV}s|*7{o^6v=x?*I9!hp zU5|xTIy6O;SlPst-qJ<(uFtg?Z0>M$xz-(=6(nD|`{L6hE8Ax%AuI7~0y}+0&Ux56 z-+jJ2cDi~H`uY3+f?q{@xHp38cp3YHf=rPE3#1wRLz}~LZw$AR)!ALUCUMP zY&4YQ2$eCTSdgTIM@OkS$qD{|d!)E;tp^>O$9d{;yapALSg^fLY)h^=dQ=L)1tAlq zzVV06+Av!WDSRa_Wq;v*P5LQ+>W@x@Cv58aZ<*g2MbUyF>`XP|WECYLCA&5OOXX4O z;DhEqcg3|q+10}KuzNh?v$+fAFNX)e5$~5`(=Qki48zPn4v61;dp_JE7-uhL$c=e6 zhqZ60fR%mi5F?7JvEW@QqTs^?B(}1CM~&$qSr7Yyw$QQn32Hl6a@6SWfu?Te=dt9x zL76UxIxJPTcD_zZ?yLmgIo3MQ&aqpkY^n+MqXwjOuL`<6sITwHuyiJ~w7W<XK#rtc3Lw zCPk<;ut9CB#*Af)U(E3>(fU2;K#e79+3`|h=AQhhwk{)`O5`n7uxrJ_5r2iZYDM1R zv#24oc4Y^piui>nVQDs>rC>OJSR_JVG#zDkpAXdGPi{{-XdTa{z8#f3faff;KQgUY z+v%t={5W?{Tyh?X`oSdVRFFs*DKuJO@$9HCNLnA`NYhkR)N}!uCAdjOdaEZ# zhekF@2N0q9IZla?0OOwrFR=5hVKSH`WmJB3K}3DNa?)`ZWwDUWVS3!cx|C6Og56GR zTsKEiHO`%0N@$DTD_-yzR(hCc^%iD#dZeJLB5K;2&zpT1-DqEh-shXB6E3=k)5_xAP~#XB@j8@V_4h|a zccNQ<<(WnMjMLd6T>{f*)H=Sp2WaQ&ew)r~d7EUIB&OB#H1@T-bqj6Sl_CX{PHa(6 z1ybAbOFiW35Wgi@Em+ZHbUEK-YsF2eIZ!)yqWeXPhLqz-y+EM0G_qXFG^a(qLio8g z#QlQA?mqWPm-MMKknJy#4Q)f~fZYeR@68s5 zgCl;Ft=Prq$Klz-n1rr+Z!^Ika$MLopuo|^)Ay}DuO6B7U=1JZJ5CC@FIcD>EdW4d zxu56y=wa|p_Gv?YMa^>AX>*xY;rC<3k7)xH^_`~b-m_8fqp_zkcblM_*#jF;cUC1Lzjzyvx<{m7@|*# zqBk#B9N@49-#y>$Oj^mqUQ|0C)6WZ=Ef##a+E&NtDu$+r2Cn&C5w z)oG-KQlwX0yBSq(fedLBoMzj5(?YBYaV19K>E0EMlJ=uYw3n_jF5Rb4S(Y>dK@Z$|`O!tK`E0 zhuOx)G;J!XhQDwN!QaS69*6Ucjj?>5-SdsvoV6?|{B?3h?u@of)7w;6M;ZKBpLF(w zSi;!{b|;szJG}om;vvv$PL zjT&|%KN}LD#0{>!u5JH!`$ts%A<=3K82bh;bUw^&;8_YZ&$z=-Y^S~6AV2=*pzmQ) z@uGKuNq~W=PXToRQx`*O`P)>8chjmwzZyrCnqA3`cNUF@1b#&>;aXajT|$0~LyVRm|3^PBaK+`N*JyzK(j5jUmwl#R#d* zpE#r|JWxD_^b7m*-n@;?x9)JaSKGbBHuo%+SXT!=M*JvsAiXPj7@ezu{-RETXHE!s zAu}>^Iq5e3WfQAu20GkT(Y#{N}+< z+X5v124G9PMkNm8?i~N4th5x$nD6K)Y!~?BJ<}mD^(TjOtl_G6u$KEz^3;v0%;3tPS;E%)jD+8a1sMi0GIQmjGykSf6{{;Yt9v!6dm)+*(~;m zogO1@t%IkU?^T^J9F2?by;jx8+(0|@({E!}=mTIC$xydXw$wbp*4lQ7aZR<>#mcj>zIrQD zPy#=>oN;%%da}7e4gEmf&i`kZ_qVhz9_Wi-J+t(mMqcIqyOM|5s4=nZ0*gAtKoWQknh2sd^9obH;FwkMxTelGcBYARnrV1OoF@J zteQk+nyji0fnzVf)Dqhj&W>G!=*x@gVg-*A)jXm;pGT%HF`U&@XucRrU7pdZq$v)y zON;mA2icze##t}%Za%{Pgc!E% zYB*kWmak^R9m@R--CYK@5uJ*r%8#$xtpOh#D7vg>C~432^4W{WS5aLYe#k~&xzWzl z^;%8bE>gox>Ha4MN|te-$kdA~4iW+%HRv8b7DNVW@B8RcD^SZ9UPk_r$j^U(t};3a zvim9R_+HTiN5=($d2X_M=BBe3P|n$~I4RctVYA z*F;wOojIRV1P}oFR5!iT$R4JPyP8_pqc16k&kJ-WoR!Pu4A6f3>EC$GVE!or_~hOLSGky| zaP9&9^V! zn3>eOZPWQN?O`}4o}t-Tu|u0GQ2DnTz2uL+p;;PIcS1E0?>rUp*-4LoK0 zr(AzEO!0=(2h2<@&r7*2BtD)UvakA|@Ksy5;jr2EUM}$r|NoW`4QfMO{0Gw|4KYNb=?-41v z{!QD)JG^{~{Ws4eM1l9c)~?SUM|jXU_Zw$t&pXWttWw5uLt_^xU^e4Oz&G2F-h^mh~5J2R(S!i^@1G4J;* zYBe_}!=@%E8f<;ID*v^YFaNq4`e>3;9nHE8B749#gL&f5V1f_BuN7tAIJFag`A&QJ zPK+UP*9=Jf52@Y!{}DzgGw`rU){vpuluyGGp~8RcKm_Rj%uVS9yL2hOJul{vgvKC3 z)Tw=#8*C@PC;uaB?x53vX`sGl$dzzqgoG1~7B-0djelYpHwjpP+iF5n&6IQfpVgkxY&0l4t50thD zotM{6iIlMI?%Wqyr9{$l$_xFwL>=+8$Pj`6@^$Ka^LL)pzP(ElC0vLQTvOzO3_M)K6wZo*1|>|pgm*}v}Q<%Jg*RL41V6~CX@^X-J;cXEGtX9{R?=QjTn z|3gV~OmQ@yrfxL9wxr4RgBabOqB1*b`?{Hia2BWbjY*NJ)Bi50mo*|TWh2||FuPw# zYNh|)w5Gd~XL2Ghg6EHOy8%!Xs?8hf;0olfW3=*pIU)pl0TGezJ%<^Jf5DLFYA4aQ z*+m@11N^DE2v^EKTIK|3*~pHPxR0E;U+l$Q|K(Zw)Bk7IhN1!(-i{>VF-h2is{E{a zntDTId8*T%Z3EkHh~3f(cle^!mptmEUBXc*T8sfykL50{g?dU#|J>bhq*E<(#A} zRe4Dy8gJdIy7>EN+`u6MNVb5C%fH_^@oJ3a69xg5moMV{P3=1tZgL3A&;Ow2_s{*n z*K%{oN`?NvmF0C45K{|%yvZNG#-L&b+^o%{!WJ#!QM{T8pEZW@6e&77Ws{-bCLwMiGudnie+{hTQVtVQCJyK3I@HG?eEX5sB;G@( zw!PhQHHP1T8niic-<2JpCh;Y^-$s3Y8t|xzdtwc?W*|f8xj&2Ij;3JZ)6ik!*9tM_ zg=}6feK$m2pEf|J*)9$y<);@p-(r&4Tp zS2y)nR$=pQd0O_7lM(`a9uEKlr_K$Ftd{SEbbN2V2;>@il$P+nQvY`G9S{!JK|B-h z-2s{3>Y!R?G)_1&JRFH{7d_CJzeH`=;q4UJ>vef~xd6xvZ$0^yzx7`H63ww*pKC|q z`a}Z|&BvPsf6_X@hw5@aj)#MD3f7|{JomO11qY1BhB)1a6V=k=4!&VMTlB*a#rK7@ z>Ob|TiVTW*BuxO74f6c2?$E25(~fYsx9)Z4=G6B9u}thGRR1xNhrgJ7r0CS8F7Cdd zW1y!O-J9|7J%#GxTamO3lLIhx)K?r9QixrRp6t_pyZuW??I}oIsZhG7$=Lp}VVpVe zXrhU?eE)U3BfG_VW6d5I)-wv-+{O(R{VGrX z(aumN;B=j2u18WAfxpkc{q?;kDSb{e!o2to^aWEUC4g>}7k3X(!CF3pg#(ib%`(j- z>zoO|i>SO?`9;_Ny`a&?FK_rCM+?Nxhuq^gSL1RbS`IY$$rn+cX&L6+2}@#&uQPWN z_Iw$A_S(Mua_=gdK>mD3bVuu#`~FWX2R?ev9ic%s&XMTLV)xm56Sa;;?sH7D#8fUkw(+Kcxv^w@+TKNmM=trpgL61KQGy zVAC%|j+XP!NR;6Y$Fva|E6dgPfX*>;^6aatZr>wHuZaInJ)b87SDQY#i%tXnDl!fJ zjR@QkvDyJxQ!iapAlO)8fUj4|r;TAiKsJQ1F%|nGeT6vc z>wOz~BGoz+Isw?5i2K!705#@*^egk4xj*~En$c(ON8^<4ewgC_*KAoCWP?QkNj7C;X&z*iUn*OdaQ8|G8pN z)qdiM?BQMKu*9=iO#6r@ZhHtf)F5N0F0Ke%F<}^aNnP0`^#1<0yW!_0we86!V5q;Rly~lnR;H7|dP;)yo((w zZt6OqZW@|Y?$CEz#qIQ(!IRuwT@_*_rk1Z(&0Q1h`lOg;{<1RYUDVz3LBRHNO zTr=F@)p?c3+%fQ>rK2KZP1Ggw)LYg@VjKHq6r?wRBN6N2S$4h;TV$rvax^tA5Zy zf_Xm30~$bQuD z-!vhCNu^>tJ6YQ3s8M9#t3+JhYh=&KoX&EyL5JWon4u$(kpbXd8@!Ew!Zo&S&G*hE zEM8&SoY@uvPVQZm-HCY@Vddf!y0;tdwZxA%Kz!R;?H|ii9=GP`#T27I9fRifzh$b& zl-~|EAaWeXC2nkn+w|qit`>Pa50^DS8MBUZJHTQlK5FWH{Mypl4Pre)amA)-J6F6v zg8}?Zcs&5Cer6e|&+1{9Qf)E61*SThA7C92LTbZARh>$^(Myp`-S3{X#6LZqx;Mjf zXDY>I?s{(dwJ^BB2vA~wIY%|-6d!slPC21pH6y>AVP!&KA^Ej;bQoY$<$#s|M^^>k-eaICASfg>u(jCNRfLI! zi3=;NxH! zK%3edwOr{JXenNijK&;Jk?d=-Tuc*p^KoXA za-Kmjxl63O%zrf8* zK8-XO1%o-^H-$A9j{v32&DbtK@U_RGE2LtS3W7t21|U1|Af(D1D^*E%Bt2o7oRUDE zpx>QPrj{2tdz}%$a;|^(_~TqoQi@-ntc-Kih_yJKwzJ2+$yK;h$FH602=*T}L;_id zw8+4u#Gu&hDUZkEd^zUtndA0W9EO6}eA>?w_rt2%%szbJH2;CqsgHoJRnN1S_%40e97ic#C|3~tRwNyi3V0}$Vp8r_R)RSe|t>b@=T;Sp+@7|_1V@HkK2V-T*$RLPVuK`Bjl9{M5BD}=FYG>%*hQN&ddeKUyH6W1#5Lb#AXR6`x^-k3U7z!Lk2qtPW~+CsDwkcX3R=12gtO$?M$vjN z7!M+HMVxTT%c8GlExE#_2yZ$3YQPoVvEE*z7w;@)FYaOKmzME6w?P-En#is{%fj=+ z{mABr2={8g@XKemCyqeswV#StIuh!=USafk8yT+@1(NW`rPhHjCul*L+ndoypB%G2 zN7wHW3`sDEcKCZt_UOY2%YtiIyAY7gGOL~(69##OM*_RL9$&aDxM|k9e|5Er!}~$N zkq0lY4U(N6)T?oZuVF<5b$~0tnTNL^aygAEe|&ISNoYGh{4`*jR;#>-2e#RJL$AE~ zkM)dFggTwPO!yAHGzx56P(Ysu?qsHx_=o{R2Rp!Tt zagbd}`>$wk;aqDkNh>?$x!oFcOe;q|upq83eWW7Z9-8qe_E;&BoBZ)kr(-;cT?ARD z?!VnbI+i&31yA%-i|{&j$zBlC9ojMUFUI+MJJ=Qn!r9L8h&cn*W_iHlpcNMwnY>zydm4pj26|sozAEyZAtCLQV zlRJiTH31i;k;xO46mhUNU_g9_FyV}T=pnTlZffN2r5cp0XvWS|D>H@B;Jj^GZvqWA zX7^EBdjd9He$#t_YS6#hzFx8a1jigk`GE^{3sbDbw$-yoLqV+w+WM0F3QL^F-x63o z?~`}2_iUQygolK+&E@8Ms|tNW!|xYYu!{T5E*+`HLkO5{ADEqZUlOzPoWn0G*&$(E9ENqZzI z^wz77l=q60ec#Iv-UmIP2jSV~@Wg@M(e;qW^oh6#7GIulnUV(K>V|CmjfTl1^!5ar zqkUk${_q)?dejL6t$c(2`L%Jy$Xd?oO^7g>WLT?TO}s2xNSV1`>-0v@%o4`U2blwG z_68QQbU`nOa)j|Yris?k`tZ&1*iiXp7)jcQOH^1avj*|gATJ}Q^``t<17_*|;iC_f z6+zpJ*+BQP;3y|g*V$*gdJhS85>O_tH{8!oVhP^B(}H+CV+QLhRfcawTesD=2=xYR z&OBPZgK0f#SzQZ%hi^HYuw4S!XAmwpeESg38K5@h0!i1l9z@`ckC(n+f>$F0;GB!iv^Y#hTl;g{iNO zR*H|Y<+`!HnLeJ269Vy65@Auh9h_3V>OTx34n)6+ZV5&yxuPho}iZb;Ok)&1SD?AFN~- zV$Wo5K)^m~ZCn0Tqre2+wR;cbOJ?xKry!#EJnHK5Vz_*S{+fVAV#xHRVilulKRKx| zlzO1k9hoXuOnE)XQ$cc}PG)HAH({NK+KD(9X%R zp-M18ZD)k=pb5f5i86R63D^nGRy-SY|WE7sLqGC5=*K>xwWG+{zi+Gflv zei5Ff&r&M}vNjIr!i0lVoj#pXF_|&u^0dWgsFil7XgHJ-i~PIw=#wC`92l#wM?1GR ztL?Y#C5(rH(3tv|Ux_a2<;poxi=2bDN=E%PyH&jaRg<`5kZ7*)VA9eh1cdl&3kOcw=v$*_*+VHwpj&k< zVN!+fv}=bBzUj~yKLBah%TCUhTpm;AW%ogElZDl}c^mWvXYtN;`bITRq&Vl&(6H%A zxt*}P2gKvL*-(hI3QFOgGD^uknBA;>Z(d8@ywGU82j6rPx%)kEsn6U`yrVeT?Y*6V z^k>()%bp~iGA*zU2;RI)+x#$PuOobEagRE0=D^<=Rdi=(+tOU8*l#^odN2hxUdu^s zk!g@!J{IGmZgRVr#sJUqnej=-r9xdRSAIKd!6w?H&JTNB6+(s|El&Csk{c=Ci6VVV z*t8{N$RTthc$tGZd|ckn;TPZtpLRKQmqsuK?}z@0kv;#C{fv3pgu*sf_{g4q9h4b- ze7IU~S*Ms9s3-;ewdK{?>wB+$=EYJ|Dh0m-Cre z-*|Q_>ufDOgR&w87n3Nbw^%!oLk3stD+sf}o zSh%$mhs^#OfNTyLBZZ+^qQv|5qqCEzQyx;3oorkJ3#b|W404yU6KDg**3QSV6x%5; z8Z6&bp;1a0=8K*3*!5Eg0w)bo1y|C+547zBo(F<3c-qUE`Fr@5WGg9UAN0?Js(0Zr zjYPINP5tYIH>p<0^c9eB`6L~&^ne^u;_^I{@JOmP)-W_X-23a5-BxPbk8S=l!67RG zmOg4;mTS!8RN8Gh)=!OhKpr7;ybC9I((^I2%% zMhnb@lXI8>Rx{ywUHkAC+@g+@VI*|1SJ=EAyfTWI_5t?Kk%NohkDMFe82w7yGg}+S zlBSz(TWMZsg7CZJ@D@Fn*`o&DQB&n7Cw~r-ygS)#(z*WrC^a!!#(|5mPTtoVc#@>)^ZD(ZlTwZSOfRRMWgPhF0fUg1xkX_J&o<8CVNPtamqJ z?{RU*an+`X_TAWjj_Z}_6_p>%nljat)P?P5aZt%y6JS%hWiDyaGb<}yT z*wwdv-LPe;tw6+!NG;(vL&xrvp0QtzEB)ciHFp#I$>hrT<;VWw=G}dYr&=jhplgdB zOxjs=m~bZ-!HJ3bnF%z^ng%2AETlVJ6eBWgjCEQQD8qF;$t_W(t`~=lWCr`E zM`^7sp24mciS<;w!DJh3i$K+5^}vJi#{A!oo&1lA)lmT1knD(<;!5`FD;G%ypNCVg zfx$pleBi^PgfFu@jbWj(yV`sK+SLf0t2PB@h{`;RMFf&(+f>)~RS8?kVF*yz5$^Ns zeZ4B2B!ZT$iqW719*Fm=Jk#?_EdmWmq-zf-UOd=pF~zj`m;tcI(pRU-?ZMxPX5#9G zqjf+=Z4kZKgcHq34;n#UK_^wk(2E?Ryb1ZDH3>a<;*9vkhHfcy%bnPk4|3 zJ>qOzUdC@(8R0u*bK&)ez3hRvQzpyoN5lt?chD?I@y-3#&stmEMrUa#k#E*w$~HNv zL1mlOFAV;ZN#4$VN&CRs#tSvPUD_=|1r%~OS2AlQrOGNgq@xq;@N!u@r0P769n%T` zOLDDpj%~8-#F*i+d>K`xUpjI`m0MORnJu2LIy7kLRU2!&_ zhe&h2tf;h8GvG|6@T8@;)N3Wd0|F{rK)LG1P{Ix|FO z(UGarn?2?9V!%;vxqyu(7f1V%?{rsZX)VgLP~Z^kGiq3_+hgD@o^x_L`hLO(f`3f` z)@$0qvJ(YNH=>$^Eq&0Xi^BE0b4hbwfnkGeqmz%ALjXvk;hsJ8B7ighK0ctC`aB0% zN*1OA2r$yRw(^}!h^A-lfJkGw_mT}jYU5r>= zROJ$YFKe;IyN2VSw^keM(EIzAT=mXzcrkgWS?G`#Jj)XZ%5?sSWbf&GySe<=$$0nR z7QjB>b^C9RjDKq7xa&`(^aJo>-!kiAV{On?DlR*lm+`*6v>?`@{v5nB zraSpz2vTYb7>M>_6Iur}E4 z$nz92{D-3j3}Nt|_mCoUC-s(KCaWWxSF&4@W7fKaEhv$j`S}ANo+b3_j*1#Y4^U(nL?Vo7 z2uNW{?{{>M(Fv_J7VFoUa_?c60jSd z<#bd|E{zHp=+2 zJdyl^JKYc zq_fislJ7l)S9navGs~UA5idk`5*L_#JvbG1Pm=<(J4q59ko*yKlzU2MK+o)HLX?@?hHE6GPTMb{Xvcz0Bc z=fd%hG_bFOzWv^_Fn@o)WT}>N_n0q_+mB30hVew$OH}>Ms)l4dH)Iq)zjDU8RJ(>a z4vqKof@=+0`a;V+j4BE$4K)X`?ge$n)ds3zyU>gI#^ZshF6DJziXJ6W36713Jc6 zd8#6_S}=#->WjW@Gm&et?>#|>v;43*CVKB75V58swzJuZAF5_+NYeJ(yPrbp=P^t1 zqY)?0wSLytPw5zy99Aw;E$WI}VC(TumNMdi9iPP*r=T~9OJt6tpT2O`xkVkl@j%fn zO7-;*A&LU{O(()H7vc(%O|>ZyQ^}7Lz60#Z71KT}(ta?32?Ght6|Aj4Fs~N_ArrPr zF7NC(_+?8F=zF8JYCoBHj9!bDZNu=+#_w)+%G#nvu&muR3IGx)6}C8{4a(rJ-0PuC z>(w1VkNR#Ny2a7SwJZTWrsMq{l(YFjv3b2u_Vm$Z0bm+iMS<>bTU+5%1f^p>0H<$j zVE6u==v|KF7`$U}{T#^hbkzGW)$Dvkfh8l}k}nX8ht`Uu-^oTm?WFnA!aBbQM^CE! zSg71{BW;^_1Y(t5P2R+hu1sQ}5(c{!i9VBo@PWX+@R$yF^`=Aj;HHJC?img_zf7F6 zES}me9ZSL|k1SPDJxUztP45XCV5>DRSnaVOG6O)G$JleGJ5Ps0ZAeyu*aheuqc})x zU2z+L-*4Y7yl3Ph`@i&}i3*dr)0Z}uksIV%iz(mS8u;_{qn&5ymY0{ZpdKsi6 zkV4a4HNdP81?g%4LzM{QDu&`rD1smwnzWTVAdw;+hB=QBcsqRdKL|hF4=xG}F}{SQ;FXSR69DZP77i$tjwKG z(CL^kEz@agP|y~sou@0d7RVQk)Ui&~-qHAJb^J^cn?%0*@!N%E4_l(^C|NzJ{p*b0 zI}P39Rc=Fak2d)uVD}Cb7vKkV2h|;DGe#xdJ+$!WG3it)l~q?Z`^0_H#%YoNHcX*c z?3zbJ@6UFAAi65fQ$miE4KgDPgrwvZq%aAhWD&)}x6EkI4pqgUz3R^u!2WTP<5P_~ zs|Wt_B20k}u{VcRB;Lf>UG(%y3|vXJW!uV>?BN}7<7Yp;lHreZh6-}RrGFgV2vLxtxP$~x?vrg)^}2l(l}d|N z;;ss-#Pp8D2DveSY`YzI>(3s9udiNoC3l>$l$@u~s#W-w`AN+M(($2vMvRwgHL3Z( zbrQF)rUejQt&%cmapVz&fCJjQ@uuVDb&meaaf$&8A`!3Y_O8;Z`q{d?P0oq!GItka&-|Jog0UrHFv7D6du338*(37&M&2|w<;TpD!f@!6y>^0Wp+-|g)ig$AT*Sn zZPkviJ5LR@uOTvWQkI;SUzd{_48!0|MZ@~Wy7f2=I$4Xrq03}emn3iOeyd{V$LXqL z!Ag<|d{H98L$=9N(}6)SaizQun{3$Gc#ysj9G}cQ8r5WQ%k*fK%%}C`*R{1cXLDc? z9;BLI*XR*4Se^`@8UL8xBg z)337*XE|!Ug0XHMd1-0Z=LT`HaN$obg0*sF^1!+Q`i0zXvB!wso2vfgWjA zT<=ol#SCOZdpG`xT!k~x4P*_wBdBEVKR|pXdl^&4kVLlx;ik`}Yvb+ttK9HvhMaXQ z5>y*0hjpg|eR6p&``*C63OUvjEq;Oka=@oXGD0U0GDf8_c*dxoFZ!^90cPdMn+HgN zlpQfu=$UrEHL~YN$|R1*J->QD_p!MZf=W5(ROWZmJU=d5BPbg(Id_Eq+s@)OpmRfA z$NQr;Sp;mYPo&^p>D7 zr(GoHz4d>14V9aPlOU!dz4Ckg{+)^_EeV@=1vBILpj+O2_iUq<-Cu?fKO=-)cAlHS*?LA{PWHk|D|eAObw z31V*=)$(P2tQeM>Z|HSoi>^%(&3#uR<4tVbvuOCO_ZW1RgheS?c8(^7j# z2*y`s@4FMRt76`k>VV)zQ{}wiWRF3d+gNKsirC+Lzb}@_o{a)zTCV*fRy}Zq&Uc$Ks|}TSUT5ueM~4+&p@#NVs|Q gpF?_VOy%l!1Ld~Gy@yX#Z-YNQ9i#JwTHi + RED.nodes.registerType("sinch-voice-incoming-call", { + category: "Sinch Voice", + color: "#FFBE3C", + + defaults: { + application: { value: "", type: "sinch-application" }, + endpoint: { value: "", required: true }, + svaml: { value: "pstn", required: false }, + }, + inputs: 0, + outputs: 1, + icon: "icons/incoming.svg", + paletteLabel: function() { + return this._("node-label") || "Incoming Voice Call"; + }, + label: function() { + var label = this.name || this._("node-label") || "Incoming Voice Call"; + return ( + label + + (this.endpoint != null && this.endpoint !== "" + ? " (" + this.endpoint + ")" + : "") + ); + }, + oneditprepare: function() { + $("#node-input-svaml") + .typedInput({ + types: ["json"], + default: "json", + }) + .typedInput("width", "100%"); + }, + oneditsave: function() {}, + }); + + + diff --git a/src/nodes/incoming/incoming.js b/src/nodes/incoming/incoming.js new file mode 100755 index 0000000..ce68858 --- /dev/null +++ b/src/nodes/incoming/incoming.js @@ -0,0 +1,37 @@ +const VoiceNode = require('../../utils/voice-node'); + +module.exports = function(RED) { + class IncomingCall extends VoiceNode { + constructor(config) { + super(config); + this.config = config; + RED.nodes.createNode(this, config); + } + + async proxyEvent(msg) { + if (msg.event === 'ice') { + this.send({ + voiceCall: { + raw: msg, + callId: msg.callid, + from: msg.cli, + to: msg.to, + }, + payload: msg, + }); + // call received + this.status({ fill: 'green', shape: 'dot', text: 'ongoing' }); + await this.markCallId(msg.callid); + } else if (msg.event === 'dice') { + this.status({ fill: 'green', shape: 'dot', text: 'closed' }); + await this.clearCallId(msg.callid); + } + } + + async getSVAML() { + return Promise.resolve(this.config.svaml); + } + } + + RED.nodes.registerType('sinch-voice-incoming-call', IncomingCall); +}; diff --git a/src/nodes/incoming/locales/en-US/incoming.html b/src/nodes/incoming/locales/en-US/incoming.html new file mode 100644 index 0000000..ff4dbbe --- /dev/null +++ b/src/nodes/incoming/locales/en-US/incoming.html @@ -0,0 +1,77 @@ + diff --git a/src/nodes/incoming/locales/en-US/incoming.json b/src/nodes/incoming/locales/en-US/incoming.json new file mode 100755 index 0000000..21aec0a --- /dev/null +++ b/src/nodes/incoming/locales/en-US/incoming.json @@ -0,0 +1,6 @@ +{ + "node-label": "Incoming Call", + "name": "Name", + "application": "Application", + "endpoint": "Endpoint" +} diff --git a/src/utils/get-params.js b/src/utils/get-params.js new file mode 100644 index 0000000..5c44934 --- /dev/null +++ b/src/utils/get-params.js @@ -0,0 +1,196 @@ +const validators = { + function: (value) => typeof value === "function", + boolean: (value) => value === true || value === false, + string: (value) => typeof value === "string" && value !== "", + object: (value) => typeof value === "object" && !Array.isArray(value), + array: (value) => Array.isArray(value), + phoneNumber: (value) => { + if (!validators.string(value)) { + return false; + } + if (value === "") { + throw "phone number cannot be an empty string"; + } + if (!value.startsWith("+")) { + throw "phone number must start with a +"; + } + return true; + }, + json: (value) => { + try { + JSON.parse(value); + return true; + } catch (e) { + return false; + } + }, +}; + +// get the first valid value, scanning the provided contexts (usually config, msg, msg.payload) +function extractParam(name, validator, contexts) { + const currentContext = contexts.find((context) => { + // only if a value is specified, otherwise skip + if (context != null && context[name] != null) { + try { + if (validator(context[name])) { + return true; + } + } catch (e) { + // do nothinh + } + } + return false; + }); + + return currentContext != null ? currentContext[name] : null; +} + +function getValidationError(name, validator, contexts) { + // get the first context with a non null value for the param name (it will be the wrong one) + const notEmptyContext = contexts.find( + (context) => context != null && context[name] != null + ); + // if there's not context with a non null value for this parameter, perhaps was mispelled + if (notEmptyContext == null) { + return `param doesn't exist (mispelled?)`; + } + // get the exception, if any, and convert to string, if no expection return null a default + // value will be provided + try { + validator(notEmptyContext[name]); + } catch (e) { + return e.toString(); + } + return null; +} + +/** + * getParams + * Example of use + * const { myString, myBoolean, myGenericValue, errors } = getParams({ + * schema: { + * myBoolean: 'boolean', + * myString: { type: 'string', required: true }, + * myGenericValue: { type: isMyType, required: true } + * }, + * useMessage: true + * }, node, msg); + * if (errors != null) { + * return; + * } + * The schema object contains all the keys that should be extracted from node.config (or Node-RED message and/or) + * payload if enabled. + * For each key of the schema object, the value could be + * - a string for basic value type: string, function, boolean, object, array, phoneNumber, json + * - nd object with type and required keys (by default a param is not required) + * The type could be a string for basic value types or a function that takes a value and returns true if the value + * is valid and - optionally - throws and exception to provide some feedback on invalid values + * For example: + * // this checks if a string looks like a number + * const isNumeric = value => { + * if (value == null || value === '') { + * // value is empty, just return false + * return false; + * } + * if (isNaN(parseInt(value, 10))) { + * throw 'Should contains only numbers'; + * } + * return true; + * } + * Extract params from the node config or the incoming messages based on the schema provided in the options + * + * @param {Object} options + * @param {Object} options.schema - The schema defition + * @param {Boolean} options.useMessage - Also use incoming message to get a valid value for the params, + * in case the configuration of the nodes is set in the upstream node + * @param {Boolean} options.usePayload - Also use incoming message payload to get a valid value for the params, + * in case the configuration of the nodes is set in the upstream node + * @param {Object} node - The Node-RED node + * @param {Object} msg - The message received by the node + * @return {Object} + * @return {Object} result.errors - An hash with validation error messages + */ +module.exports = (options, node, msg) => { + const { useMessage = false, usePayload = false, schema } = options || {}; + + const params = {}; + const errors = {}; + + const contexts = [node.config]; + if (useMessage) { + contexts.push(msg); + } + if (usePayload) { + contexts.push(msg.payload); + } + + Object.entries(schema).forEach(([name, definition]) => { + if (validators.string(definition)) { + if (validators[definition] == null) { + console.warn(`[Param: ${name}] Uknown validator: ${definition}`); + return; + } + // by default is not required, discard the error + const value = extractParam(name, validators[definition], contexts); + params[name] = value; + } else if (validators.object(definition)) { + let { required } = definition; + const { type, message } = definition; + if (validators.function(required)) { + required = required(params); + } else if (!validators.boolean(required)) { + required = false; + } + if (type == null || type === "") { + console.log("[Param: ${name}] Missing validator type"); + return; + } + if (validators.string(type) && validators[type] == null) { + console.error(`[Param: ${name}] Uknown validator: ${type}`); + return; + } else if (!validators.function(type) && !validators.string(type)) { + console.error( + `[Param: ${name}] Validator type must be either a string or a function` + ); + return; + } + + const value = extractParam( + name, + validators.function(type) ? type : validators[type], + contexts + ); + + if (value == null && required) { + if (message != null) { + errors[name] = message; + } else { + const exceptionError = getValidationError( + name, + validators.function(type) ? type : validators[type], + contexts + ); + if (exceptionError != null) { + errors[name] = `Param "${name}" is invalid: ${exceptionError}`; + } else { + errors[name] = `Param "${name}" is required`; + } + } + } + // store the value + params[name] = value; + } + }); + + const hasErrors = Object.keys(errors).length !== 0; + + return { + ...params, + errors: hasErrors ? errors : null, + stringErrors: hasErrors + ? Object.keys(errors) + .map((key) => `${key}: ${errors[key]}`) + .join(", ") + : null, + }; +}; diff --git a/src/utils/helpers.js b/src/utils/helpers.js new file mode 100644 index 0000000..2cada04 --- /dev/null +++ b/src/utils/helpers.js @@ -0,0 +1,27 @@ +const getNodesByType = (type, RED) => { + const nodes = []; + const types = Array.isArray(type) ? type : [type]; + RED.nodes.eachNode((node) => { + if (types.includes(node.type)) { + nodes.push(node); + } + }); + return nodes; +}; + +const findNode = (cb, RED) => { + let node; + + RED.nodes.eachNode((n) => { + if (node) return; + if (cb(n)) node = n; + }); + + return RED.nodes.getNode(node.id); + }; + +const findNodeByType = (nodeType, RED) => { + return findNode((node) => node.type === nodeType, RED); +}; + +module.exports = { getNodesByType, findNode, findNodeByType }; diff --git a/src/utils/is-empty.js b/src/utils/is-empty.js new file mode 100644 index 0000000..c9e4a23 --- /dev/null +++ b/src/utils/is-empty.js @@ -0,0 +1,7 @@ +const isEmpty = (obj) => + obj === null || + obj === undefined || + obj === '' || + (Array.isArray(obj) && obj.length === 0); + +module.exports = isEmpty; diff --git a/src/utils/rest-client.js b/src/utils/rest-client.js new file mode 100644 index 0000000..7e07702 --- /dev/null +++ b/src/utils/rest-client.js @@ -0,0 +1,50 @@ +const sinchRequest = require('sinch-request'); +const https = require('https'); +const url = require('url'); + +const Request = function(options, data) { + return new Promise((resolve, reject) => { + const parsedUrl = url.parse(options.url); + const port = options.url.includes('https') ? 443 : 80; + const requestOptions = { + method: 'POST', + host: parsedUrl.host, + port, + path: parsedUrl.path, + data: JSON.stringify(data), + withCredentials: false, + }; + // Add authentication header (application) + sinchRequest.applicationSigned(requestOptions, { + key: options.key, + secret: options.secret, + }); + // Perform the request + const req = https.request(requestOptions, (response) => { + let data = ''; + response.on('data', (chunk) => (data += chunk)); + response.on('end', () => { + if (options.debug) { + console.log('Response body: ' + data); + } + let parsed; + try { + parsed = JSON.parse(data); + } catch (e) { + reject(`Error parsing response: ${data}`); + } + resolve({ data: parsed, response }); + }); + }); + req.end(requestOptions.data); + }); +}; + +module.exports = function() { + const args = Array.from(arguments); + if (arguments.length === 2) { + return Request(...args); + } else { + return (data) => Request(args[0], data); + } +}; diff --git a/src/utils/validators.js b/src/utils/validators.js new file mode 100644 index 0000000..f0549c8 --- /dev/null +++ b/src/utils/validators.js @@ -0,0 +1,34 @@ +const v8n = require('v8n'); + +const isDestinationType = (value) => + v8n() + .string() + .oneOfThese(['number', 'username']) + .test(value); + +v8n.extend({ + json: function() { + return (value) => { + try { + JSON.parse(value); + return true; + } catch (e) { + return false; + } + }; + }, + oneOfThese: function(list = []) { + return (value) => list.includes(value); + }, +}); + +const isMessageType = (value) => + v8n() + .string() + .oneOfThese(['text', 'prompts', 'dtmf', 'svaml']) + .test(value); + +module.exports = { + isDestinationType, + isMessageType, +}; diff --git a/src/utils/voice-node.js b/src/utils/voice-node.js new file mode 100644 index 0000000..e790545 --- /dev/null +++ b/src/utils/voice-node.js @@ -0,0 +1,104 @@ +class VoiceNode { + /** + * get + * Get a key from the node context + * @async + * @param {string} key + * @returns {Promise<*>} + */ + async get(key) { + return new Promise((resolve, reject) => { + this.context().get(key, (err, value) => { + if (err) { + reject(err); + } else { + resolve(value); + } + }); + }); + } + + /** + * set + * Set a value in the node context + * @async + * @param {string} key + * @param {*} value + */ + async set(key, value) { + return new Promise((resolve, reject) => { + this.context().set(key, value, (err) => { + if (err) { + reject(err); + } else { + resolve(); + } + }); + }); + } + + /** + * remove + * @async + * @param {string} key + */ + async remove(key) { + await this.set(key, undefined); + } + + /** + * hasCallId + * Returns true if the Node-RED node is marked to belong to a voice call (callId) + * @async + * @param {string} callId + * @returns {boolean} + */ + async hasCallId(callId) { + return (await this.get(callId)) != null; + } + + /** + * markCallId + * Mark the current node to belong to a voice call (callId) + * @async + * @param {string} callId + */ + async markCallId(callId) { + await this.set(callId, true); + } + + /** + * clearCallId + * Release the node from a voice call (callId) + * @param {string} callId + */ + async clearCallId(callId) { + await this.remove(callId); + await this.remove(`${callId}_svaml`); + } + + /** + * setSVAML + * Set the Sinch Voice Markup language for the current node, it can be generate dinamically, must be stored + * in the node context with the callId that generated it (and not taken from config) + * @async + * @param {string} callId + * @param {string} svaml - The markup language + */ + async setSVAML(callId, svaml) { + await this.set(`${callId}_svaml`, svaml); + } + + /** + * getSVAML + * Get the current SVAML for this node related to a voice call (callId) + * @async + * @param {string} callId + * @returns {Promise} + */ + async getSVAML(callId) { + return await this.get(`${callId}_svaml`); + } +} + +module.exports = VoiceNode; diff --git a/src/utils/wait-for.js b/src/utils/wait-for.js new file mode 100644 index 0000000..3a60c83 --- /dev/null +++ b/src/utils/wait-for.js @@ -0,0 +1,7 @@ +const waitFor = (ms) => { + return new Promise((resolve) => { + setTimeout(() => resolve(), ms); + }); +}; + +module.exports = waitFor;