From a466e686c265d82962f7d9907299f259a3cc8f1e Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Wed, 22 Jun 2022 17:06:22 +0100 Subject: [PATCH 001/285] added checkbox and script to show/hide the AD vs B2C options depending on selection --- client/src/Features/Platform/PlatformPage.tsx | 50 +++++++++++++++---- 1 file changed, 39 insertions(+), 11 deletions(-) diff --git a/client/src/Features/Platform/PlatformPage.tsx b/client/src/Features/Platform/PlatformPage.tsx index 43b9d4b0..42661c45 100644 --- a/client/src/Features/Platform/PlatformPage.tsx +++ b/client/src/Features/Platform/PlatformPage.tsx @@ -74,24 +74,52 @@ const PlatformPageInner = ({ styles }: IStylesOnly): JSX.Ele labelPosition="bottom" /> ) : ( -
- - - setPlatformData(data)} - showErrors={showErrorMessages} + // should this div have the "className={classes.content}" too? +
+ + + + + +
+

Currently Empty will populate with b2c settings

+
+ + +
+ - + + setPlatformData(data)} + showErrors={showErrorMessages} + /> + +
+
)}
)); }; +function showAdOrB2C() { + var checkBox = document.getElementById("myCheck")! as HTMLInputElement; + var b2c_div = document.getElementById("b2c_tenant")!; + var ad_div = document.getElementById("ad_tenant")!; + + if (checkBox.checked == true){ + ad_div.style.display = "none"; + b2c_div.style.display = "block"; + } else { + ad_div.style.display = "block"; + b2c_div.style.display = "none"; + } +} + const platformPageStyle = ({ theme }: IThemeOnlyProps): PlatformPageStyles => ({ root: [ { From 8504af165eda313ecf3a2b663e7a42fa9dd9094d Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Thu, 23 Jun 2022 11:56:22 +0100 Subject: [PATCH 002/285] Fized compiler errors in the script --- client/src/Features/Platform/PlatformPage.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/client/src/Features/Platform/PlatformPage.tsx b/client/src/Features/Platform/PlatformPage.tsx index 42661c45..3939f0e5 100644 --- a/client/src/Features/Platform/PlatformPage.tsx +++ b/client/src/Features/Platform/PlatformPage.tsx @@ -77,8 +77,10 @@ const PlatformPageInner = ({ styles }: IStylesOnly): JSX.Ele // should this div have the "className={classes.content}" too?
- - + + { + showAdOrB2C(); + }} >
From 1a89e1a74072db1b79504fa8c4d0b5b37dfb5109 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Thu, 23 Jun 2022 16:17:22 +0100 Subject: [PATCH 003/285] Fixed compiler errors and better formatted --- client/.env.development | 6 +- client/package-lock.json | 21034 +++++++++++++++- client/package.json | 5 +- client/src/Features/Platform/PlatformPage.tsx | 42 +- 4 files changed, 21015 insertions(+), 72 deletions(-) diff --git a/client/.env.development b/client/.env.development index 816697c3..e841fcbf 100644 --- a/client/.env.development +++ b/client/.env.development @@ -1,7 +1,7 @@ -REACT_APP_EDNA_AAD_CLIENT_ID="902124e7-55c2-49bd-bcb9-8245c5d15e64" +REACT_APP_EDNA_AAD_CLIENT_ID="f47872b6-bdeb-4b69-a3c2-25528a9a9f5b" REACT_APP_EDNA_MAIN_URL="http://localhost:3000" -REACT_APP_EDNA_DEFAULT_SCOPE="api://902124e7-55c2-49bd-bcb9-8245c5d15e64/default" -REACT_APP_EDNA_TENANT_ID="72f988bf-86f1-41af-91ab-2d7cd011db47" +REACT_APP_EDNA_DEFAULT_SCOPE="api://f47872b6-bdeb-4b69-a3c2-25528a9a9f5b/default" +REACT_APP_EDNA_TENANT_ID="21510bb9-6414-46d0-9a07-1faf98f25937" REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL="http://localhost:7071/api" REACT_APP_EDNA_LINKS_SERVICE_URL="http://localhost:7073/api" REACT_APP_EDNA_LEARN_CONTENT="http://localhost:7074/api" diff --git a/client/package-lock.json b/client/package-lock.json index 082266bd..95fcbe35 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -1,8 +1,20916 @@ { "name": "edna-lite", "version": "1.0.0", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "name": "edna-lite", + "version": "1.0.0", + "dependencies": { + "@fluentui/react": "^7.110.3", + "@types/lodash": "^4.14.150", + "@types/node": "^12.12.37", + "@types/react": "^16.9.34", + "@types/react-dom": "^16.9.7", + "@types/react-router-dom": "^5.1.5", + "@types/react-virtualized-auto-sizer": "^1.0.0", + "@types/react-window": "^1.8.2", + "@types/uuid": "^7.0.3", + "@uifabric/fluent-theme": "^7.1.88", + "axios": "^0.21.2", + "mobx": "^5.15.4", + "mobx-react-lite": "^2.0.6", + "mobx-utils": "^5.5.7", + "moment": "^2.25.3", + "msal": "^1.3.0", + "react": "^17.0.1", + "react-aad-msal": "^2.3.5", + "react-dom": "^17.0.1", + "react-router-dom": "^5.1.2", + "react-virtualized-auto-sizer": "^1.0.2", + "react-window": "^1.8.5", + "rxjs": "^7.0.0", + "uuid": "^8.0.0", + "web-vitals": "^0.2.4" + }, + "devDependencies": { + "@testing-library/jest-dom": "^5.11.6", + "@testing-library/react": "^11.2.2", + "@testing-library/user-event": "^12.2.2", + "@types/jest": "^24.9.1", + "@typescript-eslint/eslint-plugin": "^4.33.0", + "@typescript-eslint/parser": "^4.33.0", + "eslint": "^7.32.0", + "eslint-config-prettier": "^6.11.0", + "eslint-config-react": "^1.1.7", + "eslint-plugin-prettier": "^3.1.3", + "eslint-plugin-react": "^7.29.4", + "prettier": "^2.7.1", + "react-scripts": "^5.0.0", + "typescript": "^4.1.2" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", + "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@apideck/better-ajv-errors": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.3.tgz", + "integrity": "sha512-9o+HO2MbJhJHjDYZaDxJmSDckvDpiuItEsrIShV0DXeCshXWRHhqYyU/PKHMkuClOmFnZhRd6wzv4vpDu/dRKg==", + "dev": true, + "dependencies": { + "json-schema": "^0.4.0", + "jsonpointer": "^5.0.0", + "leven": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "ajv": ">=8" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", + "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.9.tgz", + "integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.9", + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helpers": "^7.17.9", + "@babel/parser": "^7.17.9", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/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, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/eslint-parser": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.17.0.tgz", + "integrity": "sha512-PUEJ7ZBXbRkbq3qqM/jZ2nIuakUBqCYc7Qf52Lj7dlZ6zERnqisdHioL0l4wwQZnmskMeasqUNzLBFKs3nylXA==", + "dev": true, + "dependencies": { + "eslint-scope": "^5.1.1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || >=14.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.11.0", + "eslint": "^7.5.0 || ^8.0.0" + } + }, + "node_modules/@babel/eslint-parser/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, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", + "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", + "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", + "dev": true, + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", + "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.17.5", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets/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, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz", + "integrity": "sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-member-expression-to-functions": "^7.17.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz", + "integrity": "sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "regexpu-core": "^5.0.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", + "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@babel/helper-define-polyfill-provider/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, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", + "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.16.7", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", + "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", + "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", + "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-wrap-function": "^7.16.8", + "@babel/types": "^7.16.8" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", + "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", + "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", + "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.8", + "@babel/types": "^7.16.8" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", + "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", + "dev": true, + "dependencies": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", + "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/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/@babel/parser": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz", + "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz", + "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", + "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", + "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", + "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz", + "integrity": "sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.17.6", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.9.tgz", + "integrity": "sha512-EfH2LZ/vPa2wuPwJ26j+kYRkaubf89UlwxKXtxqEm57HrgSEYDB8t4swFP+p8LcI9yiP9ZRJJjo/58hS6BnaDA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.17.9", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/plugin-syntax-decorators": "^7.17.0", + "charcodes": "^0.2.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", + "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", + "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-json-strings": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", + "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", + "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", + "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", + "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz", + "integrity": "sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.17.0", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", + "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", + "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", + "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.10", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", + "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", + "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.17.0.tgz", + "integrity": "sha512-qWe85yCXsvDEluNP0OyeQjH63DlhAR3W7K9BxxU1MvbDb48tgBG+Ao6IJJ6smPDrrVzSQZrbF6donpkFBMcs3A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-flow": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.16.7.tgz", + "integrity": "sha512-UDo3YGQO0jH6ytzVwgSLv9i/CzMcUjbKenL67dTrAZPPv6GFAtDhe6jqnvmoKzC/7htNTohhos+onPtDMqJwaQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz", + "integrity": "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz", + "integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", + "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", + "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", + "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", + "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", + "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes/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/@babel/plugin-transform-computed-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", + "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz", + "integrity": "sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", + "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", + "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", + "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-flow-strip-types": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.16.7.tgz", + "integrity": "sha512-mzmCq3cNsDpZZu9FADYYyfZJIOrSONmHcop2XEKPdBNMa4PDC4eEvcOvzZaCNcjKu72v0XQlA5y1g58aLRXdYg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-flow": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", + "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", + "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", + "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", + "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", + "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz", + "integrity": "sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz", + "integrity": "sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", + "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz", + "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", + "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", + "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", + "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", + "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-constant-elements": { + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.17.6.tgz", + "integrity": "sha512-OBv9VkyyKtsHZiHLoSfCn+h6yU7YKX8nrs32xUmOa1SRSk+t03FosB6fBZ0Yz4BpD1WV7l73Nsad+2Tz7APpqw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz", + "integrity": "sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz", + "integrity": "sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-jsx": "^7.16.7", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz", + "integrity": "sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==", + "dev": true, + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz", + "integrity": "sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz", + "integrity": "sha512-Lc2TfbxR1HOyn/c6b4Y/b6NHoTb67n/IoWLxTu4kC7h4KQnWlhCq2S8Tx0t2SVvv5Uu87Hs+6JEJ5kt2tYGylQ==", + "dev": true, + "dependencies": { + "regenerator-transform": "^0.15.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", + "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.0.tgz", + "integrity": "sha512-fr7zPWnKXNc1xoHfrIU9mN/4XKX4VLZ45Q+oMhfsYIaHvg7mHgmhfOy/ckRWqDK7XF3QDigRpkh5DKq6+clE8A==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/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, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", + "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", + "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", + "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", + "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", + "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz", + "integrity": "sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-typescript": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", + "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", + "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz", + "integrity": "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.16.8", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-async-generator-functions": "^7.16.8", + "@babel/plugin-proposal-class-properties": "^7.16.7", + "@babel/plugin-proposal-class-static-block": "^7.16.7", + "@babel/plugin-proposal-dynamic-import": "^7.16.7", + "@babel/plugin-proposal-export-namespace-from": "^7.16.7", + "@babel/plugin-proposal-json-strings": "^7.16.7", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", + "@babel/plugin-proposal-numeric-separator": "^7.16.7", + "@babel/plugin-proposal-object-rest-spread": "^7.16.7", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", + "@babel/plugin-proposal-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-private-methods": "^7.16.11", + "@babel/plugin-proposal-private-property-in-object": "^7.16.7", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.7", + "@babel/plugin-transform-async-to-generator": "^7.16.8", + "@babel/plugin-transform-block-scoped-functions": "^7.16.7", + "@babel/plugin-transform-block-scoping": "^7.16.7", + "@babel/plugin-transform-classes": "^7.16.7", + "@babel/plugin-transform-computed-properties": "^7.16.7", + "@babel/plugin-transform-destructuring": "^7.16.7", + "@babel/plugin-transform-dotall-regex": "^7.16.7", + "@babel/plugin-transform-duplicate-keys": "^7.16.7", + "@babel/plugin-transform-exponentiation-operator": "^7.16.7", + "@babel/plugin-transform-for-of": "^7.16.7", + "@babel/plugin-transform-function-name": "^7.16.7", + "@babel/plugin-transform-literals": "^7.16.7", + "@babel/plugin-transform-member-expression-literals": "^7.16.7", + "@babel/plugin-transform-modules-amd": "^7.16.7", + "@babel/plugin-transform-modules-commonjs": "^7.16.8", + "@babel/plugin-transform-modules-systemjs": "^7.16.7", + "@babel/plugin-transform-modules-umd": "^7.16.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8", + "@babel/plugin-transform-new-target": "^7.16.7", + "@babel/plugin-transform-object-super": "^7.16.7", + "@babel/plugin-transform-parameters": "^7.16.7", + "@babel/plugin-transform-property-literals": "^7.16.7", + "@babel/plugin-transform-regenerator": "^7.16.7", + "@babel/plugin-transform-reserved-words": "^7.16.7", + "@babel/plugin-transform-shorthand-properties": "^7.16.7", + "@babel/plugin-transform-spread": "^7.16.7", + "@babel/plugin-transform-sticky-regex": "^7.16.7", + "@babel/plugin-transform-template-literals": "^7.16.7", + "@babel/plugin-transform-typeof-symbol": "^7.16.7", + "@babel/plugin-transform-unicode-escapes": "^7.16.7", + "@babel/plugin-transform-unicode-regex": "^7.16.7", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.8", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.20.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/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, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.7.tgz", + "integrity": "sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-transform-react-display-name": "^7.16.7", + "@babel/plugin-transform-react-jsx": "^7.16.7", + "@babel/plugin-transform-react-jsx-development": "^7.16.7", + "@babel/plugin-transform-react-pure-annotations": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz", + "integrity": "sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-transform-typescript": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz", + "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==", + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime-corejs3": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.17.9.tgz", + "integrity": "sha512-WxYHHUWF2uZ7Hp1K+D1xQgbgkGUfA+5UPOegEXGt2Y5SMog/rYCVaifLZDbw8UkNXozEqqrZTy6bglL7xTaCOw==", + "dev": true, + "dependencies": { + "core-js-pure": "^3.20.2", + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz", + "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.9", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.9", + "@babel/types": "^7.17.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/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/@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "node_modules/@csstools/normalize.css": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-12.0.0.tgz", + "integrity": "sha512-M0qqxAcwCsIVfpFQSlGN5XjXWu8l5JDZN+fPt1LeW5SZexQTgnaEvgXAY+CeygRw0EeppWHi12JxESWiWrB0Sg==", + "dev": true + }, + "node_modules/@csstools/postcss-color-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.0.tgz", + "integrity": "sha512-5D5ND/mZWcQoSfYnSPsXtuiFxhzmhxt6pcjrFLJyldj+p0ZN2vvRpYNX+lahFTtMhAYOa2WmkdGINr0yP0CvGA==", + "dev": true, + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-font-format-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.0.tgz", + "integrity": "sha512-oO0cZt8do8FdVBX8INftvIA4lUrKUSCcWUf9IwH9IPWOgKT22oAZFXeHLoDK7nhB2SmkNycp5brxfNMRLIhd6Q==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/@csstools/postcss-hwb-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.0.tgz", + "integrity": "sha512-VSTd7hGjmde4rTj1rR30sokY3ONJph1reCBTUXqeW1fKwETPy1x4t/XIeaaqbMbC5Xg4SM/lyXZ2S8NELT2TaA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/@csstools/postcss-ic-unit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.0.tgz", + "integrity": "sha512-i4yps1mBp2ijrx7E96RXrQXQQHm6F4ym1TOD0D69/sjDjZvQ22tqiEvaNw7pFZTUO5b9vWRHzbHzP9+UKuw+bA==", + "dev": true, + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/@csstools/postcss-is-pseudo-class": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.2.tgz", + "integrity": "sha512-L9h1yxXMj7KpgNzlMrw3isvHJYkikZgZE4ASwssTnGEH8tm50L6QsM9QQT5wR4/eO5mU0rN5axH7UzNxEYg5CA==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-normalize-display-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.0.tgz", + "integrity": "sha512-bX+nx5V8XTJEmGtpWTO6kywdS725t71YSLlxWt78XoHUbELWgoCXeOFymRJmL3SU1TLlKSIi7v52EWqe60vJTQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/@csstools/postcss-oklab-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.0.tgz", + "integrity": "sha512-e/Q5HopQzmnQgqimG9v3w2IG4VRABsBq3itOcn4bnm+j4enTgQZ0nWsaH/m9GV2otWGQ0nwccYL5vmLKyvP1ww==", + "dev": true, + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-progressive-custom-properties": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz", + "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/@eslint/eslintrc/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/@fluentui/date-time-utilities": { + "version": "7.9.1", + "resolved": "https://registry.npmjs.org/@fluentui/date-time-utilities/-/date-time-utilities-7.9.1.tgz", + "integrity": "sha512-o8iU1VIY+QsqVRWARKiky29fh4KR1xaKSgMClXIi65qkt8EDDhjmlzL0KVDEoDA2GWukwb/1PpaVCWDg4v3cUQ==", + "dependencies": { + "@uifabric/set-version": "^7.0.24", + "tslib": "^1.10.0" + } + }, + "node_modules/@fluentui/dom-utilities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@fluentui/dom-utilities/-/dom-utilities-1.1.2.tgz", + "integrity": "sha512-XqPS7l3YoMwxdNlaYF6S2Mp0K3FmVIOIy2K3YkMc+eRxu9wFK6emr2Q/3rBhtG5u/On37NExRT7/5CTLnoi9gw==", + "dependencies": { + "@uifabric/set-version": "^7.0.24", + "tslib": "^1.10.0" + } + }, + "node_modules/@fluentui/keyboard-key": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/@fluentui/keyboard-key/-/keyboard-key-0.2.17.tgz", + "integrity": "sha512-iT1bU56rKrKEOfODoW6fScY11qj3iaYrZ+z11T6fo5+TDm84UGkkXjLXJTE57ZJzg0/gbccHQWYv+chY7bJN8Q==", + "dependencies": { + "tslib": "^1.10.0" + } + }, + "node_modules/@fluentui/react": { + "version": "7.185.1", + "resolved": "https://registry.npmjs.org/@fluentui/react/-/react-7.185.1.tgz", + "integrity": "sha512-2LfU8DmZmUraj71ZBlQZdyBQMzErF3H11YYwq3ZdWw8awv9AHlFURAxDg9NWZqqQvy0v6NujmF+eOuFv7SzLVQ==", + "dependencies": { + "@uifabric/set-version": "^7.0.24", + "office-ui-fabric-react": "^7.185.1", + "tslib": "^1.10.0" + }, + "peerDependencies": { + "@types/react": ">=16.8.0 <17.0.0", + "@types/react-dom": ">=16.8.0 <17.0.0", + "react": ">=16.8.0 <17.0.0", + "react-dom": ">=16.8.0 <17.0.0" + } + }, + "node_modules/@fluentui/react-focus": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/@fluentui/react-focus/-/react-focus-7.18.3.tgz", + "integrity": "sha512-ZgaUHdBSlyefAM0a5HVpJY80iQuiLztB7ylLjePO1ltWE6R/f7q1hf+KBz7tEjZfzYgX6zU+kfcgtRuze6uDoQ==", + "dependencies": { + "@fluentui/keyboard-key": "^0.2.12", + "@uifabric/merge-styles": "^7.19.2", + "@uifabric/set-version": "^7.0.24", + "@uifabric/styling": "^7.20.1", + "@uifabric/utilities": "^7.34.0", + "tslib": "^1.10.0" + }, + "peerDependencies": { + "@types/react": ">=16.8.0 <17.0.0", + "@types/react-dom": ">=16.8.0 <17.0.0", + "react": ">=16.8.0 <17.0.0", + "react-dom": ">=16.8.0 <17.0.0" + } + }, + "node_modules/@fluentui/react-window-provider": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@fluentui/react-window-provider/-/react-window-provider-1.0.2.tgz", + "integrity": "sha512-fGSgL3Vp/+6t1Ysfz21FWZmqsU+iFVxOigvHnm5uKVyyRPwtaabv/F6kQ2y5isLMI2YmJaUd2i0cDJKu8ggrvw==", + "dependencies": { + "@uifabric/set-version": "^7.0.24", + "tslib": "^1.10.0" + }, + "peerDependencies": { + "@types/react": ">=16.8.0 <17.0.0", + "@types/react-dom": ">=16.8.0 <17.0.0", + "react": ">=16.8.0 <17.0.0", + "react-dom": ">=16.8.0 <17.0.0" + } + }, + "node_modules/@fluentui/theme": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/@fluentui/theme/-/theme-1.7.5.tgz", + "integrity": "sha512-617mrYkn8M+7Iy0eM9UG5ophh0bxyQfHiqxp8RmV3NO1xcJQw28DrXM/wwZoK3b4+rpgdxGufMWRl1V7B4oIVA==", + "dependencies": { + "@uifabric/merge-styles": "^7.19.2", + "@uifabric/set-version": "^7.0.24", + "@uifabric/utilities": "^7.34.0", + "tslib": "^1.10.0" + }, + "peerDependencies": { + "@types/react": ">=16.8.0 <17.0.0", + "@types/react-dom": ">=16.8.0 <17.0.0", + "react": ">=16.8.0 <17.0.0", + "react-dom": ">=16.8.0 <17.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/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/@istanbuljs/load-nyc-config/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/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/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/console/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/console/node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@jest/console/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/console/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/console/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/console/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/console/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/console/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", + "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", + "dev": true, + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/reporters": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^27.5.1", + "jest-config": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-resolve-dependencies": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "jest-watcher": "^27.5.1", + "micromatch": "^4.0.4", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/core/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/core/node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@jest/core/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/core/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/core/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/core/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/environment": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/environment/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/environment/node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@jest/environment/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/environment/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/environment/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/environment/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/environment/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/environment/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/environment/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/fake-timers": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/fake-timers/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/fake-timers/node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@jest/fake-timers/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/fake-timers/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/fake-timers/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/fake-timers/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/fake-timers/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/fake-timers/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/fake-timers/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/globals": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/globals/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/globals/node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@jest/globals/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/globals/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/globals/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/globals/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/globals/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/globals/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/globals/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", + "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-haste-map": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^8.1.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/reporters/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@jest/reporters/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/reporters/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/reporters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/reporters/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/reporters/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/source-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", + "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9", + "source-map": "^0.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", + "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", + "dev": true, + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/test-result/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/test-result/node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@jest/test-result/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/test-result/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/test-result/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/test-result/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/test-result/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/test-result/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/test-result/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", + "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", + "dev": true, + "dependencies": { + "@jest/test-result": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-runtime": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/transform/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/transform/node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@jest/transform/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/transform/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/transform/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/transform/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", + "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", + "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", + "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.3.tgz", + "integrity": "sha512-nkalE/f1RvRGChwBnEIoBfSEYOXnCRdleKuv6+lePbMDrMZXeDQnqak5XDOeBgrPPyPfAdcCu/B5z+v3VhplGg==", + "dev": true + }, + "node_modules/@microsoft/load-themed-styles": { + "version": "1.10.251", + "resolved": "https://registry.npmjs.org/@microsoft/load-themed-styles/-/load-themed-styles-1.10.251.tgz", + "integrity": "sha512-Ro0EiAwOIwC6YP00Fw8ixY2xWDQmV+HdfMskcrCfEUZidwBBEt7wlWnjx4SnaJH+sdDTlnnHzuERE2lzH9IvPA==" + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pmmmwh/react-refresh-webpack-plugin": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.5.tgz", + "integrity": "sha512-RbG7h6TuP6nFFYKJwbcToA1rjC1FyPg25NR2noAZ0vKI+la01KTSRPkuVPE+U88jXv7javx2JHglUcL1MHcshQ==", + "dev": true, + "dependencies": { + "ansi-html-community": "^0.0.8", + "common-path-prefix": "^3.0.0", + "core-js-pure": "^3.8.1", + "error-stack-parser": "^2.0.6", + "find-up": "^5.0.0", + "html-entities": "^2.1.0", + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">= 10.13" + }, + "peerDependencies": { + "@types/webpack": "4.x || 5.x", + "react-refresh": ">=0.10.0 <1.0.0", + "sockjs-client": "^1.4.0", + "type-fest": ">=0.17.0 <3.0.0", + "webpack": ">=4.43.0 <6.0.0", + "webpack-dev-server": "3.x || 4.x", + "webpack-hot-middleware": "2.x", + "webpack-plugin-serve": "0.x || 1.x" + }, + "peerDependenciesMeta": { + "@types/webpack": { + "optional": true + }, + "sockjs-client": { + "optional": true + }, + "type-fest": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + }, + "webpack-hot-middleware": { + "optional": true + }, + "webpack-plugin-serve": { + "optional": true + } + } + }, + "node_modules/@pmmmwh/react-refresh-webpack-plugin/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@rollup/plugin-babel": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", + "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", + "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/plugin-node-resolve/node_modules/resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@rollup/plugin-replace": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", + "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + }, + "peerDependencies": { + "rollup": "^1.20.0 || ^2.0.0" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/pluginutils/node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.1.1.tgz", + "integrity": "sha512-BUyKJGdDWqvWC5GEhyOiUrGNi9iJUr4CU0O2WxJL6QJhHeeA/NVBalH+FeK0r/x/W0rPymXt5s78TDS7d6lCwg==", + "dev": true + }, + "node_modules/@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/@surma/rollup-plugin-off-main-thread": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", + "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", + "dev": true, + "dependencies": { + "ejs": "^3.1.6", + "json5": "^2.2.0", + "magic-string": "^0.25.0", + "string.prototype.matchall": "^4.0.6" + } + }, + "node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz", + "integrity": "sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz", + "integrity": "sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz", + "integrity": "sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz", + "integrity": "sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz", + "integrity": "sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz", + "integrity": "sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz", + "integrity": "sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-transform-svg-component": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz", + "integrity": "sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-preset": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz", + "integrity": "sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==", + "dev": true, + "dependencies": { + "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0", + "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "^5.0.1", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^5.0.1", + "@svgr/babel-plugin-svg-dynamic-title": "^5.4.0", + "@svgr/babel-plugin-svg-em-dimensions": "^5.4.0", + "@svgr/babel-plugin-transform-react-native-svg": "^5.4.0", + "@svgr/babel-plugin-transform-svg-component": "^5.5.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/core": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz", + "integrity": "sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==", + "dev": true, + "dependencies": { + "@svgr/plugin-jsx": "^5.5.0", + "camelcase": "^6.2.0", + "cosmiconfig": "^7.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/hast-util-to-babel-ast": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz", + "integrity": "sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.6" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/plugin-jsx": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz", + "integrity": "sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@svgr/babel-preset": "^5.5.0", + "@svgr/hast-util-to-babel-ast": "^5.5.0", + "svg-parser": "^2.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/plugin-svgo": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz", + "integrity": "sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==", + "dev": true, + "dependencies": { + "cosmiconfig": "^7.0.0", + "deepmerge": "^4.2.2", + "svgo": "^1.2.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/webpack": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz", + "integrity": "sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/plugin-transform-react-constant-elements": "^7.12.1", + "@babel/preset-env": "^7.12.1", + "@babel/preset-react": "^7.12.5", + "@svgr/core": "^5.5.0", + "@svgr/plugin-jsx": "^5.5.0", + "@svgr/plugin-svgo": "^5.5.0", + "loader-utils": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@testing-library/dom": { + "version": "7.31.2", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-7.31.2.tgz", + "integrity": "sha512-3UqjCpey6HiTZT92vODYLPxTBWlM8ZOOjr3LX5F37/VRipW2M1kX6I/Cm4VXzteZqfGfagg8yXywpcOgQBlNsQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^4.2.0", + "aria-query": "^4.2.2", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.6", + "lz-string": "^1.4.4", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@testing-library/dom/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@testing-library/dom/node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@testing-library/dom/node_modules/@types/yargs": { + "version": "15.0.14", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", + "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@testing-library/dom/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/dom/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@testing-library/dom/node_modules/aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/@testing-library/dom/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@testing-library/dom/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@testing-library/dom/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@testing-library/dom/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/dom/node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@testing-library/dom/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/@testing-library/dom/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/jest-dom": { + "version": "5.16.4", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.16.4.tgz", + "integrity": "sha512-Gy+IoFutbMQcky0k+bqqumXZ1cTGswLsFqmNLzNdSKkU9KGV2u9oXhukCbbJ9/LRPKiqwxEE8VpV/+YZlfkPUA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.9.2", + "@types/testing-library__jest-dom": "^5.9.1", + "aria-query": "^5.0.0", + "chalk": "^3.0.0", + "css": "^3.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.5.6", + "lodash": "^4.17.15", + "redent": "^3.0.0" + }, + "engines": { + "node": ">=8", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/@testing-library/react": { + "version": "11.2.7", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-11.2.7.tgz", + "integrity": "sha512-tzRNp7pzd5QmbtXNG/mhdcl7Awfu/Iz1RaVHY75zTdOkmHCuzMhRL83gWHSgOAcjS3CCbyfwUHMZgRJb4kAfpA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "@testing-library/dom": "^7.28.1" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*" + } + }, + "node_modules/@testing-library/user-event": { + "version": "12.8.3", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-12.8.3.tgz", + "integrity": "sha512-IR0iWbFkgd56Bu5ZI/ej8yQwrkCv8Qydx6RzwbKz9faXazR/+5tvYKsZQgyXJiwgpcva127YO6JcWy7YlCfofQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.12.5" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + }, + "peerDependencies": { + "@testing-library/dom": ">=7.21.4" + } + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@types/aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==", + "dev": true + }, + "node_modules/@types/babel__core": { + "version": "7.1.19", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", + "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", + "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.3.0" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.29.0.tgz", + "integrity": "sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "dev": true + }, + "node_modules/@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.28", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", + "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/history": { + "version": "4.7.11", + "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz", + "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==" + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "dev": true + }, + "node_modules/@types/http-proxy": { + "version": "1.17.8", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.8.tgz", + "integrity": "sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "24.9.1", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.9.1.tgz", + "integrity": "sha512-Fb38HkXSVA4L8fGKEZ6le5bB8r6MRWlOCZbVuWZcmOMSCd2wCYOwN1ibj8daIoV9naq7aaOZjrLCoCMptKU/4Q==", + "dev": true, + "dependencies": { + "jest-diff": "^24.3.0" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true + }, + "node_modules/@types/lodash": { + "version": "4.14.181", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.181.tgz", + "integrity": "sha512-n3tyKthHJbkiWhDZs3DkhkCzt2MexYHXlX0td5iMplyfwketaOeKboEVBqzceH7juqvEg3q5oUoBFxSLu7zFag==" + }, + "node_modules/@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true + }, + "node_modules/@types/node": { + "version": "12.20.47", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.47.tgz", + "integrity": "sha512-BzcaRsnFuznzOItW1WpQrDHM7plAa7GIDMZ6b5pnMbkqEtM/6WCOhvZar39oeMQP79gwvFUWjjptE7/KGcNqFg==" + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "node_modules/@types/prettier": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.4.tgz", + "integrity": "sha512-ReVR2rLTV1kvtlWFyuot+d1pkpG2Fw/XKE3PDAdj57rbM97ttSp9JZ2UsP+2EHTylra9cUf6JA7tGwW1INzUrA==", + "dev": true + }, + "node_modules/@types/prop-types": { + "version": "15.7.4", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", + "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==" + }, + "node_modules/@types/q": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", + "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==", + "dev": true + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "node_modules/@types/react": { + "version": "16.14.24", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.24.tgz", + "integrity": "sha512-e7U2WC8XQP/xfR7bwhOhNFZKPTfW1ph+MiqtudKb8tSV8RyCsovQx2sNVtKoOryjxFKpHPPC/yNiGfdeVM5Gyw==", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "16.9.14", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.14.tgz", + "integrity": "sha512-FIX2AVmPTGP30OUJ+0vadeIFJJ07Mh1m+U0rxfgyW34p3rTlXI+nlenvAxNn4BP36YyI9IJ/+UJ7Wu22N1pI7A==", + "dependencies": { + "@types/react": "^16" + } + }, + "node_modules/@types/react-router": { + "version": "5.1.18", + "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.18.tgz", + "integrity": "sha512-YYknwy0D0iOwKQgz9v8nOzt2J6l4gouBmDnWqUUznltOTaon+r8US8ky8HvN0tXvc38U9m6z/t2RsVsnd1zM0g==", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*" + } + }, + "node_modules/@types/react-router-dom": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz", + "integrity": "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router": "*" + } + }, + "node_modules/@types/react-virtualized-auto-sizer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.1.tgz", + "integrity": "sha512-GH8sAnBEM5GV9LTeiz56r4ZhMOUSrP43tAQNSRVxNexDjcNKLCEtnxusAItg1owFUFE6k0NslV26gqVClVvong==", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react-window": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@types/react-window/-/react-window-1.8.5.tgz", + "integrity": "sha512-V9q3CvhC9Jk9bWBOysPGaWy/Z0lxYcTXLtLipkt2cnRj1JOSFNF7wqGpkScSXMgBwC+fnVRg/7shwgddBG5ICw==", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/retry": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", + "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", + "dev": true + }, + "node_modules/@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" + }, + "node_modules/@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.13.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", + "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "node_modules/@types/testing-library__jest-dom": { + "version": "5.14.3", + "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.3.tgz", + "integrity": "sha512-oKZe+Mf4ioWlMuzVBaXQ9WDnEm1+umLx0InILg+yvZVBBDmzV5KfZyLrCvadtWcx8+916jLmHafcmqqffl+iIw==", + "dev": true, + "dependencies": { + "@types/jest": "*" + } + }, + "node_modules/@types/trusted-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz", + "integrity": "sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==", + "dev": true + }, + "node_modules/@types/uuid": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-7.0.5.tgz", + "integrity": "sha512-hKB88y3YHL8oPOs/CNlaXtjWn93+Bs48sDQR37ZUqG2tLeCS7EA1cmnkKsuQsub9OKEB/y/Rw9zqJqqNSbqVlQ==" + }, + "node_modules/@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "13.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", + "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", + "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", + "dev": true, + "dependencies": { + "@typescript-eslint/experimental-utils": "4.33.0", + "@typescript-eslint/scope-manager": "4.33.0", + "debug": "^4.3.1", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.1.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^4.0.0", + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/experimental-utils": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", + "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.7", + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", + "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "debug": "^4.3.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", + "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.18.0.tgz", + "integrity": "sha512-vcn9/6J5D6jtHxpEJrgK8FhaM8r6J1/ZiNu70ZUJN554Y3D9t3iovi6u7JF8l/e7FcBIxeuTEidZDR70UuCIfA==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "5.18.0", + "debug": "^4.3.2", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", + "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", + "dev": true, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", + "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0", + "debug": "^4.3.1", + "globby": "^11.0.3", + "is-glob": "^4.0.1", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.18.0.tgz", + "integrity": "sha512-+hFGWUMMri7OFY26TsOlGa+zgjEy1ssEipxpLjtl4wSll8zy85x0GrUSju/FHdKfVorZPYJLkF3I4XPtnCTewA==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.18.0", + "@typescript-eslint/types": "5.18.0", + "@typescript-eslint/typescript-estree": "5.18.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.18.0.tgz", + "integrity": "sha512-C0CZML6NyRDj+ZbMqh9FnPscg2PrzSaVQg3IpTmpe0NURMVBXlghGZgMYqBw07YW73i0MCqSDqv2SbywnCS8jQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.18.0", + "@typescript-eslint/visitor-keys": "5.18.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.18.0.tgz", + "integrity": "sha512-bhV1+XjM+9bHMTmXi46p1Led5NP6iqQcsOxgx7fvk6gGiV48c6IynY0apQb7693twJDsXiVzNXTflhplmaiJaw==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.18.0.tgz", + "integrity": "sha512-wa+2VAhOPpZs1bVij9e5gyVu60ReMi/KuOx4LKjGx2Y3XTNUDJgQ+5f77D49pHtqef/klglf+mibuHs9TrPxdQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.18.0", + "@typescript-eslint/visitor-keys": "5.18.0", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.18.0.tgz", + "integrity": "sha512-Hf+t+dJsjAKpKSkg3EHvbtEpFFb/1CiOHnvI8bjHgOD4/wAw3gKrA0i94LrbekypiZVanJu3McWJg7rWDMzRTg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.18.0", + "eslint-visitor-keys": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", + "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.33.0", + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@uifabric/fluent-theme": { + "version": "7.6.21", + "resolved": "https://registry.npmjs.org/@uifabric/fluent-theme/-/fluent-theme-7.6.21.tgz", + "integrity": "sha512-2/0pEgeFrwtoKYeAmujp3syDHUor2mM+JkYuIQLsMfR88nP7FcGPPJIJVsXktdu9karVfX8sRHin5VnmU7DbTA==", + "dependencies": { + "@fluentui/theme": "^1.7.5", + "@uifabric/merge-styles": "^7.19.2", + "@uifabric/set-version": "^7.0.24", + "@uifabric/styling": "^7.20.1", + "@uifabric/variants": "^7.2.36", + "office-ui-fabric-react": "^7.185.1", + "tslib": "^1.10.0" + } + }, + "node_modules/@uifabric/foundation": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@uifabric/foundation/-/foundation-7.10.2.tgz", + "integrity": "sha512-8J8oBoc5Pr3oGL6uiWHGek/cmjXxYVg5tgPs9YQUsPs1IE9G5R4A4nXTtYEG3I2ZuF+fLfmWhnbKmgFVfKts2w==", + "dependencies": { + "@uifabric/merge-styles": "^7.19.2", + "@uifabric/set-version": "^7.0.24", + "@uifabric/styling": "^7.20.1", + "@uifabric/utilities": "^7.34.0", + "tslib": "^1.10.0" + }, + "peerDependencies": { + "@types/react": ">=16.8.0 <17.0.0", + "@types/react-dom": ">=16.8.0 <17.0.0", + "react": ">=16.8.0 <17.0.0", + "react-dom": ">=16.8.0 <17.0.0" + } + }, + "node_modules/@uifabric/icons": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@uifabric/icons/-/icons-7.6.3.tgz", + "integrity": "sha512-lAx3Xy6tfTwEmvE8x4xjEquFiyoqzHcnMLfHLDUweiqr9ZOlGkUFMJQZblrwOjAsibUFxFd3jUVYdBPja7TFyw==", + "dependencies": { + "@uifabric/set-version": "^7.0.24", + "@uifabric/styling": "^7.20.1", + "tslib": "^1.10.0" + } + }, + "node_modules/@uifabric/merge-styles": { + "version": "7.19.2", + "resolved": "https://registry.npmjs.org/@uifabric/merge-styles/-/merge-styles-7.19.2.tgz", + "integrity": "sha512-kTlhwglDqwVgIaJq+0yXgzi65plGhmFcPrfme/rXUGMJZoU+qlGT5jXj5d3kuI59p6VB8jWEg9DAxHozhYeu0g==", + "dependencies": { + "@uifabric/set-version": "^7.0.24", + "tslib": "^1.10.0" + } + }, + "node_modules/@uifabric/react-hooks": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@uifabric/react-hooks/-/react-hooks-7.14.1.tgz", + "integrity": "sha512-y5xCXEG3j25nbPkiZjJ6qipJot8QOn/ppr8eDtVkSm6JJ6lDU8cv4j01Ff1HcHbB0WnQWasiT1NITMsJZBbk0g==", + "dependencies": { + "@fluentui/react-window-provider": "^1.0.2", + "@uifabric/set-version": "^7.0.24", + "@uifabric/utilities": "^7.34.0", + "tslib": "^1.10.0" + }, + "peerDependencies": { + "@types/react": ">=16.8.0 <17.0.0", + "@types/react-dom": ">=16.8.0 <17.0.0", + "react": ">=16.8.0 <17.0.0", + "react-dom": ">=16.8.0 <17.0.0" + } + }, + "node_modules/@uifabric/set-version": { + "version": "7.0.24", + "resolved": "https://registry.npmjs.org/@uifabric/set-version/-/set-version-7.0.24.tgz", + "integrity": "sha512-t0Pt21dRqdC707/ConVJC0WvcQ/KF7tKLU8AZY7YdjgJpMHi1c0C427DB4jfUY19I92f60LOQyhJ4efH+KpFEg==", + "dependencies": { + "tslib": "^1.10.0" + } + }, + "node_modules/@uifabric/styling": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@uifabric/styling/-/styling-7.20.1.tgz", + "integrity": "sha512-xxoIv5tkeJ02XQfJ1IQloAijWVxUm2QlyKzpbnA5SF+HhtKsv0rgADuNALhGTvYKYwKqaFc5rKWygAxLeEaFtg==", + "dependencies": { + "@fluentui/theme": "^1.7.5", + "@microsoft/load-themed-styles": "^1.10.26", + "@uifabric/merge-styles": "^7.19.2", + "@uifabric/set-version": "^7.0.24", + "@uifabric/utilities": "^7.34.0", + "tslib": "^1.10.0" + } + }, + "node_modules/@uifabric/utilities": { + "version": "7.34.0", + "resolved": "https://registry.npmjs.org/@uifabric/utilities/-/utilities-7.34.0.tgz", + "integrity": "sha512-nJSrWw6IK8uLCYKrr7nQIxKnEr8iMkcIq0s7WBDbqtLfQB29jHLUtwbD928hhFm5zYMC1g46AOObb4lj7ER/hA==", + "dependencies": { + "@fluentui/dom-utilities": "^1.1.2", + "@uifabric/merge-styles": "^7.19.2", + "@uifabric/set-version": "^7.0.24", + "prop-types": "^15.7.2", + "tslib": "^1.10.0" + }, + "peerDependencies": { + "@types/react": ">=16.8.0 <17.0.0", + "@types/react-dom": ">=16.8.0 <17.0.0", + "react": ">=16.8.0 <17.0.0", + "react-dom": ">=16.8.0 <17.0.0" + } + }, + "node_modules/@uifabric/variants": { + "version": "7.2.36", + "resolved": "https://registry.npmjs.org/@uifabric/variants/-/variants-7.2.36.tgz", + "integrity": "sha512-zF9ykHwLgStebvmKvYaxJSkNmeTcAbruhtSumAKrAUXojVw9aGLSzOiW7LsQ8sEK3eSdiMfRP2mbb30vZHovAw==", + "dependencies": { + "@fluentui/theme": "^1.7.5", + "@uifabric/set-version": "^7.0.24", + "tslib": "^1.10.0" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "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": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "node_modules/acorn-globals/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "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-node": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", + "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "dev": true, + "dependencies": { + "acorn": "^7.0.0", + "acorn-walk": "^7.0.0", + "xtend": "^4.0.2" + } + }, + "node_modules/acorn-node/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/address": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", + "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==", + "dev": true, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/adjust-sourcemap-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + }, + "engines": { + "node": ">=8.9" + } + }, + "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/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/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/ajv-formats/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/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "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/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/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.1.tgz", + "integrity": "sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA==", + "dev": true + }, + "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/aria-query": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.0.tgz", + "integrity": "sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "node_modules/array-includes": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", + "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", + "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz", + "integrity": "sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true + }, + "node_modules/ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", + "dev": true + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true, + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.4", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.4.tgz", + "integrity": "sha512-Tm8JxsB286VweiZ5F0anmbyGiNI3v3wGv3mz9W+cxEDYB/6jbnj6GM9H9mK3wIL8ftgl+C07Lcwb8PG5PCCPzA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + ], + "dependencies": { + "browserslist": "^4.20.2", + "caniuse-lite": "^1.0.30001317", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/axe-core": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.1.tgz", + "integrity": "sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "dependencies": { + "follow-redirects": "^1.14.0" + } + }, + "node_modules/axobject-query": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", + "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", + "dev": true + }, + "node_modules/babel-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", + "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", + "dev": true, + "dependencies": { + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-jest/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/babel-jest/node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/babel-jest/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/babel-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/babel-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/babel-jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/babel-jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/babel-jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-loader": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.4.tgz", + "integrity": "sha512-8dytA3gcvPPPv4Grjhnt8b5IIiTcq/zeXOPk4iTYI0SVXcsmuGg7JtBRDp8S9X+gJfhQ8ektjXZlDu1Bb33U8A==", + "dev": true, + "dependencies": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "node_modules/babel-loader/node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", + "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/babel-plugin-macros/node_modules/resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/babel-plugin-named-asset-import": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz", + "integrity": "sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==", + "dev": true, + "peerDependencies": { + "@babel/core": "^7.1.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", + "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.1", + "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/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, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", + "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.1", + "core-js-compat": "^3.21.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", + "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-transform-react-remove-prop-types": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", + "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==", + "dev": true + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", + "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^27.5.1", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-react-app": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz", + "integrity": "sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.16.0", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-decorators": "^7.16.4", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-transform-flow-strip-types": "^7.16.0", + "@babel/plugin-transform-react-display-name": "^7.16.0", + "@babel/plugin-transform-runtime": "^7.16.4", + "@babel/preset-env": "^7.16.4", + "@babel/preset-react": "^7.16.0", + "@babel/preset-typescript": "^7.16.0", + "@babel/runtime": "^7.16.3", + "babel-plugin-macros": "^3.1.0", + "babel-plugin-transform-react-remove-prop-types": "^0.4.24" + } + }, + "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/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "node_modules/bfj": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/bfj/-/bfj-7.0.2.tgz", + "integrity": "sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw==", + "dev": true, + "dependencies": { + "bluebird": "^3.5.5", + "check-types": "^11.1.1", + "hoopy": "^0.1.4", + "tryer": "^1.0.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "node_modules/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.9.7", + "raw-body": "2.4.3", + "type-is": "~1.6.18" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/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/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": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/bonjour-service": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.11.tgz", + "integrity": "sha512-drMprzr2rDTCtgEE3VgdA9uUFaUHF+jXduwYSThHJnKMYM+FhI9Z3ph+TX3xy0LtgYHae6CHYPJ/2UnK8nQHcA==", + "dev": true, + "dependencies": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.4" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "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/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "node_modules/browserslist": { + "version": "4.20.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz", + "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001317", + "electron-to-chromium": "^1.4.84", + "escalade": "^3.1.1", + "node-releases": "^2.0.2", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "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/builtin-modules": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true, + "engines": { + "node": ">= 0.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/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/camel-case/node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001325", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001325.tgz", + "integrity": "sha512-sB1bZHjseSjDtijV1Hb7PB2Zd58Kyx+n/9EotvZ4Qcz2K3d0lWB8dB4nb8wN/TsOGFq3UuAm0zQZNQ4SoR7TrQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/case-sensitive-paths-webpack-plugin": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", + "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chalk/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/chalk/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/chalk/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/chalk/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/charcodes": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/charcodes/-/charcodes-0.2.0.tgz", + "integrity": "sha512-Y4kiDb+AM4Ecy58YkuZrrSRJBDQdQ2L+NyS1vHHFtNtUjgutcZfx3yp1dAONI/oPaPmyGfCLx5CxL+zauIMyKQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/check-types": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/check-types/-/check-types-11.1.2.tgz", + "integrity": "sha512-tzWzvgePgLORb9/3a0YenggReLKAIb2owL03H2Xdoe5pKcUyWRSEQ8xfCar8t2SIAuEDwtmx2da1YB52YuHQMQ==", + "dev": true + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", + "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "dev": true + }, + "node_modules/cjs-module-lexer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "dev": true + }, + "node_modules/clean-css": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.0.tgz", + "integrity": "sha512-YYuuxv4H/iNb1Z/5IbMRoxgrzjWGhOEFfd+groZ5dMCVkpENiMZmwspdrzBo9286JjM1gZJPAyL7ZIdzuvu2AQ==", + "dev": true, + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "dev": true, + "dependencies": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/coa/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/collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, + "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": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/colord": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz", + "integrity": "sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==", + "dev": true + }, + "node_modules/colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "dev": true + }, + "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/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "dev": true + }, + "node_modules/common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/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/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", + "dev": true + }, + "node_modules/connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "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/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "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/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "node_modules/core-js": { + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.21.1.tgz", + "integrity": "sha512-FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig==", + "dev": true, + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.21.1.tgz", + "integrity": "sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g==", + "dev": true, + "dependencies": { + "browserslist": "^4.19.1", + "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/core-js-pure": { + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.21.1.tgz", + "integrity": "sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ==", + "dev": true, + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "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/cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/css": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", + "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.4", + "source-map": "^0.6.1", + "source-map-resolve": "^0.6.0" + } + }, + "node_modules/css-blank-pseudo": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", + "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "bin": { + "css-blank-pseudo": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-declaration-sorter": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.2.2.tgz", + "integrity": "sha512-Ufadglr88ZLsrvS11gjeu/40Lw74D9Am/Jpr3LlYm5Q4ZP5KdlUhG+6u2EjyXeZcxmZ2h1ebCKngDjolpeLHpg==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-has-pseudo": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", + "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "bin": { + "css-has-pseudo": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-loader": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz", + "integrity": "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==", + "dev": true, + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.7", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/css-minimizer-webpack-plugin": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz", + "integrity": "sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==", + "dev": true, + "dependencies": { + "cssnano": "^5.0.6", + "jest-worker": "^27.0.2", + "postcss": "^8.3.5", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@parcel/css": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/css-minimizer-webpack-plugin/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/css-minimizer-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/css-minimizer-webpack-plugin/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/css-minimizer-webpack-plugin/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/css-prefers-color-scheme": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", + "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", + "dev": true, + "bin": { + "css-prefers-color-scheme": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "node_modules/css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", + "dev": true + }, + "node_modules/css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=", + "dev": true + }, + "node_modules/cssdb": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-6.5.0.tgz", + "integrity": "sha512-Rh7AAopF2ckPXe/VBcoUS9JrCZNSyc60+KpgE6X25vpVxA32TmiqvExjkfhwP4wGSb6Xe8Z/JIyGqwgx/zZYFA==", + "dev": true + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.7.tgz", + "integrity": "sha512-pVsUV6LcTXif7lvKKW9ZrmX+rGRzxkEdJuVJcp5ftUjWITgwam5LMZOgaTvUrWPkcORBey6he7JKb4XAJvrpKg==", + "dev": true, + "dependencies": { + "cssnano-preset-default": "^5.2.7", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-preset-default": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.7.tgz", + "integrity": "sha512-JiKP38ymZQK+zVKevphPzNSGHSlTI+AOwlasoSRtSVMUU285O7/6uZyd5NbW92ZHp41m0sSHe6JoZosakj63uA==", + "dev": true, + "dependencies": { + "css-declaration-sorter": "^6.2.2", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.0", + "postcss-convert-values": "^5.1.0", + "postcss-discard-comments": "^5.1.1", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.1", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.4", + "postcss-merge-rules": "^5.1.1", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.1", + "postcss-minify-params": "^5.1.2", + "postcss-minify-selectors": "^5.2.0", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.0", + "postcss-normalize-repeat-style": "^5.1.0", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.0", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.1", + "postcss-ordered-values": "^5.1.1", + "postcss-reduce-initial": "^5.1.0", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "node_modules/cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "node_modules/csstype": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.11.tgz", + "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==" + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true + }, + "node_modules/data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "dependencies": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "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/decimal.js": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", + "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", + "dev": true + }, + "node_modules/decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "dev": true + }, + "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/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "node_modules/detect-port-alt": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", + "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", + "dev": true, + "dependencies": { + "address": "^1.0.1", + "debug": "^2.6.0" + }, + "bin": { + "detect": "bin/detect-port", + "detect-port": "bin/detect-port" + }, + "engines": { + "node": ">= 4.2.1" + } + }, + "node_modules/detect-port-alt/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/detect-port-alt/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/detective": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", + "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==", + "dev": true, + "dependencies": { + "acorn-node": "^1.6.1", + "defined": "^1.0.0", + "minimist": "^1.1.1" + }, + "bin": { + "detective": "bin/detective.js" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, + "node_modules/diff-sequences": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", + "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "node_modules/dns-packet": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.3.1.tgz", + "integrity": "sha512-spBwIj0TK0Ey3666GwIdWVfUpLyubpU53BTCu8iPn4r4oXd9O14Hjg3EHw3ts2oed77/SeckunUYCyRlSngqHw==", + "dev": true, + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "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-accessibility-api": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.13.tgz", + "integrity": "sha512-R305kwb5CcMDIpSHUnLyIAp7SrSPBx6F0VfQFB3M75xVMHhXJJIdePYgbPPh1o57vCHNu5QztokWUPsLjWzFqw==", + "dev": true + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "dependencies": { + "utila": "~0.4" + } + }, + "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/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/domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dev": true, + "dependencies": { + "webidl-conversions": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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/domhandler/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/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/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dot-case/node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true + }, + "node_modules/dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "node_modules/ejs": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz", + "integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==", + "dev": true, + "dependencies": { + "jake": "^10.6.1" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.106", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.106.tgz", + "integrity": "sha512-ZYfpVLULm67K7CaaGP7DmjyeMY4naxsbTy+syVVxT6QHI1Ww8XbJjmr9fDckrhq44WzCrcC5kH3zGpdusxwwqg==", + "dev": true + }, + "node_modules/emittery": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", + "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz", + "integrity": "sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.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": "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/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-stack-parser": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.7.tgz", + "integrity": "sha512-chLOW0ZGRf4s8raLrDxa5sdkvPec5YdvwbFnqJme4rk0rFajP8mPtrDL1+I+CwrQDCjswDA5sREX7jYQDQs9vA==", + "dev": true, + "dependencies": { + "stackframe": "^1.1.1" + } + }, + "node_modules/es-abstract": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.2.tgz", + "integrity": "sha512-gfSBJoZdlL2xRiOCy0g8gLMryhoe1TlimjzU99L/31Z8QEGIhVQI+EWwt5lT+AuU9SnorVupXFqqOGqGfsyO6w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "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": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dev": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/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/escodegen/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/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/escodegen/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint": { + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz", + "integrity": "sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw==", + "dev": true, + "dependencies": { + "get-stdin": "^6.0.0" + }, + "bin": { + "eslint-config-prettier-check": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=3.14.1" + } + }, + "node_modules/eslint-config-react": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/eslint-config-react/-/eslint-config-react-1.1.7.tgz", + "integrity": "sha1-oJGND8R9DpvRYaRzCAIdqF0lhbM=", + "dev": true + }, + "node_modules/eslint-config-react-app": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-7.0.0.tgz", + "integrity": "sha512-xyymoxtIt1EOsSaGag+/jmcywRuieQoA2JbPCjnw9HukFj9/97aGPoZVFioaotzk1K5Qt9sHO5EutZbkrAXS0g==", + "dev": true, + "dependencies": { + "@babel/core": "^7.16.0", + "@babel/eslint-parser": "^7.16.3", + "@rushstack/eslint-patch": "^1.1.0", + "@typescript-eslint/eslint-plugin": "^5.5.0", + "@typescript-eslint/parser": "^5.5.0", + "babel-preset-react-app": "^10.0.1", + "confusing-browser-globals": "^1.0.11", + "eslint-plugin-flowtype": "^8.0.3", + "eslint-plugin-import": "^2.25.3", + "eslint-plugin-jest": "^25.3.0", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-react": "^7.27.1", + "eslint-plugin-react-hooks": "^4.3.0", + "eslint-plugin-testing-library": "^5.0.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "eslint": "^8.0.0" + } + }, + "node_modules/eslint-config-react-app/node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.18.0.tgz", + "integrity": "sha512-tzrmdGMJI/uii9/V6lurMo4/o+dMTKDH82LkNjhJ3adCW22YQydoRs5MwTiqxGF9CSYxPxQ7EYb4jLNlIs+E+A==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.18.0", + "@typescript-eslint/type-utils": "5.18.0", + "@typescript-eslint/utils": "5.18.0", + "debug": "^4.3.2", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.2.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-config-react-app/node_modules/@typescript-eslint/parser": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.18.0.tgz", + "integrity": "sha512-+08nYfurBzSSPndngnHvFw/fniWYJ5ymOrn/63oMIbgomVQOvIDhBoJmYZ9lwQOCnQV9xHGvf88ze3jFGUYooQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.18.0", + "@typescript-eslint/types": "5.18.0", + "@typescript-eslint/typescript-estree": "5.18.0", + "debug": "^4.3.2" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-config-react-app/node_modules/@typescript-eslint/scope-manager": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.18.0.tgz", + "integrity": "sha512-C0CZML6NyRDj+ZbMqh9FnPscg2PrzSaVQg3IpTmpe0NURMVBXlghGZgMYqBw07YW73i0MCqSDqv2SbywnCS8jQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.18.0", + "@typescript-eslint/visitor-keys": "5.18.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-config-react-app/node_modules/@typescript-eslint/types": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.18.0.tgz", + "integrity": "sha512-bhV1+XjM+9bHMTmXi46p1Led5NP6iqQcsOxgx7fvk6gGiV48c6IynY0apQb7693twJDsXiVzNXTflhplmaiJaw==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-config-react-app/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.18.0.tgz", + "integrity": "sha512-wa+2VAhOPpZs1bVij9e5gyVu60ReMi/KuOx4LKjGx2Y3XTNUDJgQ+5f77D49pHtqef/klglf+mibuHs9TrPxdQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.18.0", + "@typescript-eslint/visitor-keys": "5.18.0", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-config-react-app/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.18.0.tgz", + "integrity": "sha512-Hf+t+dJsjAKpKSkg3EHvbtEpFFb/1CiOHnvI8bjHgOD4/wAw3gKrA0i94LrbekypiZVanJu3McWJg7rWDMzRTg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.18.0", + "eslint-visitor-keys": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-config-react-app/node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", + "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "resolve": "^1.20.0" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", + "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "find-up": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-flowtype": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz", + "integrity": "sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==", + "dev": true, + "dependencies": { + "lodash": "^4.17.21", + "string-natural-compare": "^3.0.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@babel/plugin-syntax-flow": "^7.14.5", + "@babel/plugin-transform-react-jsx": "^7.14.9", + "eslint": "^8.1.0" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", + "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.3", + "has": "^1.0.3", + "is-core-module": "^2.8.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.5", + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/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/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/eslint-plugin-import/node_modules/resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-jest": { + "version": "25.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz", + "integrity": "sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/experimental-utils": "^5.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^4.0.0 || ^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "jest": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-jest/node_modules/@typescript-eslint/experimental-utils": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.18.0.tgz", + "integrity": "sha512-hypiw5N0aM2aH91/uMmG7RpyUH3PN/iOhilMwkMFZIbm/Bn/G3ZnbaYdSoAN4PG/XHQjdhBYLi0ZoRZsRYT4hA==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "5.18.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz", + "integrity": "sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.16.3", + "aria-query": "^4.2.2", + "array-includes": "^3.1.4", + "ast-types-flow": "^0.0.7", + "axe-core": "^4.3.5", + "axobject-query": "^2.2.0", + "damerau-levenshtein": "^1.0.7", + "emoji-regex": "^9.2.2", + "has": "^1.0.3", + "jsx-ast-utils": "^3.2.1", + "language-tags": "^1.0.5", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz", + "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "peerDependencies": { + "eslint": ">=5.0.0", + "prettier": ">=1.13.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.29.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz", + "integrity": "sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.4", + "array.prototype.flatmap": "^1.2.5", + "doctrine": "^2.1.0", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.5", + "object.fromentries": "^2.0.5", + "object.hasown": "^1.1.0", + "object.values": "^1.1.5", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.3", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.6" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.4.0.tgz", + "integrity": "sha512-U3RVIfdzJaeKDQKEJbz5p3NW8/L80PCATJAfuojwbaEL+gBjfGdhUcGde+WGUW46Q5sr/NgxevsIiDtNXrvZaQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/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/eslint-plugin-react/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, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-testing-library": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.2.1.tgz", + "integrity": "sha512-88qJv6uzYALtiYJDzhelP3ov0Px/GLgnu+UekjjDxL2nMyvgdTyboKqcDBsvFPmAeizlCoSWOjeBN4DxO0BxaA==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "^5.13.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0", + "npm": ">=6" + }, + "peerDependencies": { + "eslint": "^7.5.0 || ^8.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-webpack-plugin": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.1.1.tgz", + "integrity": "sha512-xSucskTN9tOkfW7so4EaiFIkulWLXwCB/15H917lR6pTv0Zot6/fetFucmENRb7J5whVSFKIvwnrnsa78SG2yg==", + "dev": true, + "dependencies": { + "@types/eslint": "^7.28.2", + "jest-worker": "^27.3.1", + "micromatch": "^4.0.4", + "normalize-path": "^3.0.0", + "schema-utils": "^3.1.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0", + "webpack": "^5.0.0" + } + }, + "node_modules/eslint/node_modules/@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint/node_modules/eslint-utils/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/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/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/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "dependencies": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/espree/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/espree/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/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.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "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/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, + "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": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/expect/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/expect/node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/expect/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/expect/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/expect/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/expect/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/expect/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/expect/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/expect/node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/expect/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/express": { + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", + "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.19.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.4.2", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.9.7", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.17.2", + "serve-static": "1.14.2", + "setprototypeof": "1.2.0", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "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": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/express/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": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "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/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.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "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": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/filelist": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz", + "integrity": "sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==", + "dev": true, + "dependencies": { + "minimatch": "^3.0.4" + } + }, + "node_modules/filesize": { + "version": "8.0.7", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", + "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "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": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.14.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", + "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.1.tgz", + "integrity": "sha512-x1wumpHOEf4gDROmKTaB6i4/Q6H3LwmjVO7fIX47vBwlZbtPjU33hgoMuD/Q/y6SU8bnuYSoN6ZQOLshGp0T/g==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.8.3", + "@types/json-schema": "^7.0.5", + "chalk": "^4.1.0", + "chokidar": "^3.4.2", + "cosmiconfig": "^6.0.0", + "deepmerge": "^4.2.2", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", + "memfs": "^3.1.2", + "minimatch": "^3.0.4", + "schema-utils": "2.7.0", + "semver": "^7.3.2", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=10", + "yarn": ">=1.0.0" + }, + "peerDependencies": { + "eslint": ">= 6", + "typescript": ">= 2.7", + "vue-template-compiler": "*", + "webpack": ">= 4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "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/fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/infusion" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", + "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "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": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", + "dev": true + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "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": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dev": true, + "dependencies": { + "global-prefix": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dev": true, + "dependencies": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix/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/globals": { + "version": "13.13.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", + "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dev": true, + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "node_modules/harmony-reflect": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz", + "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==", + "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-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "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-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/history": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", + "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", + "dependencies": { + "@babel/runtime": "^7.1.2", + "loose-envify": "^1.2.0", + "resolve-pathname": "^3.0.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0", + "value-equal": "^1.0.1" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoopy": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", + "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", + "dev": true, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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/html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, + "dependencies": { + "whatwg-encoding": "^1.0.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/html-entities": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", + "dev": true + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dev": true, + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-minifier-terser/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", + "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", + "dev": true, + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "webpack": "^5.20.0" + } + }, + "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/htmlparser2/node_modules/dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "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/htmlparser2/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/htmlparser2/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/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", + "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.4.tgz", + "integrity": "sha512-m/4FxX17SUvz4lJ5WPXOHDUuCwIqXLfLHs1s0uZ3oYjhoXlx9csYxaOa0ElDEJ+h8Q4iJ1s+lTMbiCa4EXIJqg==", + "dev": true, + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "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/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/idb": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/idb/-/idb-6.1.5.tgz", + "integrity": "sha512-IJtugpKkiVXQn5Y+LteyBCNk1N8xpGV3wWZk9EVtZWH8DYkjBn0bX1XnGP9RkyZF0sAcywa6unHqSWKe7q4LGw==", + "dev": true + }, + "node_modules/identity-obj-proxy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", + "integrity": "sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ=", + "dev": true, + "dependencies": { + "harmony-reflect": "^1.4.6" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/immer": { + "version": "9.0.12", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.12.tgz", + "integrity": "sha512-lk7UNmSbAukB5B6dh9fnh5D0bJTOFKxVg2cyJWTYrWRfhLrLMBquONcUs3aFq507hNoIZEDDh8lb8UtOizSMhA==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "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/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "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": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "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==", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-root": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", + "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", + "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/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, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", + "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jake": { + "version": "10.8.4", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.4.tgz", + "integrity": "sha512-MtWeTkl1qGsWUtbl/Jsca/8xSoK3x0UmS82sNbjqxxG/de/M/3b1DntdjHgPMC50enlTNwXOCRqPXLLt5cCfZA==", + "dev": true, + "dependencies": { + "async": "0.9.x", + "chalk": "^4.0.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jake/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jake/node_modules/async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", + "dev": true + }, + "node_modules/jake/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jake/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jake/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jake/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jake/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", + "dev": true, + "dependencies": { + "@jest/core": "^27.5.1", + "import-local": "^3.0.2", + "jest-cli": "^27.5.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", + "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "execa": "^5.0.0", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-changed-files/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-changed-files/node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/jest-changed-files/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-changed-files/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-changed-files/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-changed-files/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-changed-files/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-changed-files/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-changed-files/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-circus": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", + "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus/node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/jest-circus/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-circus/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-circus/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-circus/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-circus/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-circus/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/jest-circus/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", + "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.8.0", + "@jest/test-sequencer": "^27.5.1", + "@jest/types": "^27.5.1", + "babel-jest": "^27.5.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.9", + "jest-circus": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-jasmine2": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-config/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-config/node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/jest-config/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-config/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-config/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-config/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config/node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-config/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-config/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/jest-config/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", + "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", + "dev": true, + "dependencies": { + "chalk": "^2.0.1", + "diff-sequences": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-diff/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/jest-docblock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", + "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-each": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", + "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-each/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-each/node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/jest-each/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-each/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-each/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-each/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-each/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-each/node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-each/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-each/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/jest-each/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-environment-jsdom": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", + "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1", + "jsdom": "^16.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/jest-environment-jsdom/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-environment-jsdom/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-environment-jsdom/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-environment-jsdom/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-environment-jsdom/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-environment-jsdom/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-environment-node": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", + "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-node/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-node/node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/jest-environment-node/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-environment-node/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-environment-node/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-environment-node/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-environment-node/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-environment-node/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-environment-node/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-haste-map/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-haste-map/node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/jest-haste-map/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-haste-map/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-haste-map/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-haste-map/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-haste-map/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-haste-map/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-haste-map/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-jasmine2": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", + "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/jest-jasmine2/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-jasmine2/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-jasmine2/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-jasmine2/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-jasmine2/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-jasmine2/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-jasmine2/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-jasmine2/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/jest-jasmine2/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-leak-detector": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", + "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", + "dev": true, + "dependencies": { + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-leak-detector/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-leak-detector/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-leak-detector/node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-leak-detector/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-leak-detector/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-matcher-utils/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-matcher-utils/node_modules/diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-matcher-utils/node_modules/jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/jest-matcher-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-message-util/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-message-util/node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/jest-message-util/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-message-util/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-message-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-message-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/jest-message-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-mock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-mock/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-mock/node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/jest-mock/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-mock/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-mock/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-mock/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-mock/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-mock/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-mock/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", + "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-snapshot": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-resolve-dependencies/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve/node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/jest-resolve/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-resolve/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-resolve/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-resolve/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-resolve/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-resolve/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/node_modules/resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/jest-resolve/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", + "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", + "dev": true, + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-leak-detector": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "source-map-support": "^0.5.6", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runner/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runner/node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/jest-runner/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-runner/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runner/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-runner/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-runner/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-runner/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", + "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/globals": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runtime/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runtime/node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/jest-runtime/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-runtime/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runtime/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-runtime/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-runtime/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-runtime/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-serializer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", + "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", + "dev": true, + "dependencies": { + "@types/node": "*", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", + "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^27.5.1", + "semver": "^7.3.2" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/jest-snapshot/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-snapshot/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-snapshot/node_modules/diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot/node_modules/jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/jest-snapshot/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-util/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-util/node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/jest-util/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "leven": "^3.1.0", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-validate/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-validate/node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/jest-validate/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-validate/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-validate/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-validate/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate/node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-validate/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-validate/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/jest-validate/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watch-typeahead": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-1.0.0.tgz", + "integrity": "sha512-jxoszalAb394WElmiJTFBMzie/RDCF+W7Q29n5LzOPtcoQoHWfdUtHFkbhgf5NwWe8uMOxvKb/g7ea7CshfkTw==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.3.1", + "chalk": "^4.0.0", + "jest-regex-util": "^27.0.0", + "jest-watcher": "^27.0.0", + "slash": "^4.0.0", + "string-length": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "jest": "^27.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/node_modules/char-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-2.0.1.tgz", + "integrity": "sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw==", + "dev": true, + "engines": { + "node": ">=12.20" + } + }, + "node_modules/jest-watch-typeahead/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-watch-typeahead/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watch-typeahead/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watch-typeahead/node_modules/string-length": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-5.0.1.tgz", + "integrity": "sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==", + "dev": true, + "dependencies": { + "char-regex": "^2.0.0", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watch-typeahead/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", + "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", + "dev": true, + "dependencies": { + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^27.5.1", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-watcher/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-watcher/node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/jest-watcher/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-watcher/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-watcher/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-watcher/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-watcher/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-watcher/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jest/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest/node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/jest/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest/node_modules/jest-cli": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", + "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", + "dev": true, + "dependencies": { + "@jest/core": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "prompts": "^2.0.1", + "yargs": "^16.2.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==" + }, + "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/jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dev": true, + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "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": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "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/jsonpointer": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.0.tgz", + "integrity": "sha512-PNYZIdMjVIvVgDSYKTT63Y+KZ6IZvGRNNWcxwD+GNnUz1MKPfv30J8ueCjdwcN0nDx2SlshgyB7Oy0epAzVRRg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.2.tgz", + "integrity": "sha512-HDAyJ4MNQBboGpUnHAVUNJs6X0lh058s6FuixsFGP7MgJYpD6Vasd6nzSG5iIfXu1zAYlHJ/zsOKNlrenTUBnw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.4", + "object.assign": "^4.1.2" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/klona": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz", + "integrity": "sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==", + "dev": true + }, + "node_modules/language-tags": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", + "integrity": "sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=", + "dev": true, + "dependencies": { + "language-subtag-registry": "~0.3.2" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", + "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/loader-runner": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "dev": true + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lower-case/node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.7.3.tgz", + "integrity": "sha512-WY9wjJNQt9+PZilnLbuFKM+SwDull9+6IAguOrarOMoOHTcJ9GnXSO11+Gw6c7xtDkBkthR57OZMtZKYr+1CEw==", + "deprecated": "Please update to latest patch version to fix memory leak https://github.com/isaacs/node-lru-cache/issues/227", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/lz-string": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz", + "integrity": "sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=", + "dev": true, + "bin": { + "lz-string": "bin/bin.js" + } + }, + "node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "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, + "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, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "dev": true + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.1.tgz", + "integrity": "sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw==", + "dev": true, + "dependencies": { + "fs-monkey": "1.0.3" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/memoize-one": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", + "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "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/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": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/mini-create-react-context": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz", + "integrity": "sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==", + "dependencies": { + "@babel/runtime": "^7.12.1", + "tiny-warning": "^1.0.3" + }, + "peerDependencies": { + "prop-types": "^15.0.0", + "react": "^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.0.tgz", + "integrity": "sha512-ndG8nxCEnAemsg4FSgS+yNyHKgkTB4nPKqCOgh65j3/30qqC5RaSQQXMm++Y6sb6E1zRSxPkztj9fqxhS1Eo6w==", + "dev": true, + "dependencies": { + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/mini-css-extract-plugin/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/mini-css-extract-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/mini-css-extract-plugin/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/mini-css-extract-plugin/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "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.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "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/mobx": { + "version": "5.15.7", + "resolved": "https://registry.npmjs.org/mobx/-/mobx-5.15.7.tgz", + "integrity": "sha512-wyM3FghTkhmC+hQjyPGGFdpehrcX1KOXsDuERhfK2YbJemkUhEB+6wzEN639T21onxlfYBmriA1PFnvxTUhcKw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mobx" + } + }, + "node_modules/mobx-react-lite": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/mobx-react-lite/-/mobx-react-lite-2.2.2.tgz", + "integrity": "sha512-2SlXALHIkyUPDsV4VTKVR9DW7K3Ksh1aaIv3NrNJygTbhXe2A9GrcKHZ2ovIiOp/BXilOcTYemfHHZubP431dg==", + "peerDependencies": { + "mobx": "^4.0.0 || ^5.0.0", + "react": "^16.8.0" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, + "node_modules/mobx-utils": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/mobx-utils/-/mobx-utils-5.6.2.tgz", + "integrity": "sha512-a/WlXyGkp6F12b01sTarENpxbmlRgPHFyR1Xv2bsSjQBm5dcOtd16ONb40/vOqck8L99NHpI+C9MXQ+SZ8f+yw==", + "peerDependencies": { + "mobx": "^4.13.1 || ^5.13.1" + } + }, + "node_modules/moment": { + "version": "2.29.2", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.2.tgz", + "integrity": "sha512-UgzG4rvxYpN15jgCmVJwac49h9ly9NurikMWGPdVxm8GZD6XjkKPxDTjQQ43gtGgnV3X0cAyWDdP2Wexoquifg==", + "engines": { + "node": "*" + } + }, + "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/msal": { + "version": "1.4.16", + "resolved": "https://registry.npmjs.org/msal/-/msal-1.4.16.tgz", + "integrity": "sha512-Q6jIV5RG6mD9O0bzZrR/f8v5QikrVWU0sccwOyqWE1xlBkKYVKRa/L8Gxt1X58M+J/N9V0JskhvO4KIfRHlE8g==", + "dependencies": { + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/multicast-dns": { + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.4.tgz", + "integrity": "sha512-XkCYOU+rr2Ft3LI6w4ye51M3VK31qJXFIxu0XLw169PtKG0Zx47OrXeVW/GCYOfpC9s1yyyf1S+L8/4LY0J9Zw==", + "dev": true, + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/nanoid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz", + "integrity": "sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "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/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/no-case/node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true, + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", + "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "dependencies": { + "boolbase": "~1.0.0" + } + }, + "node_modules/nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", + "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", + "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", + "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.getownpropertydescriptors": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz", + "integrity": "sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.hasown": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz", + "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "node_modules/office-ui-fabric-react": { + "version": "7.185.1", + "resolved": "https://registry.npmjs.org/office-ui-fabric-react/-/office-ui-fabric-react-7.185.1.tgz", + "integrity": "sha512-XSuVdqctyphHutzof0IrGSkrMq8XNGg7Nm77r8OFNBADj7Tqu2S3RQcAtZs8ukzpPitIEMzGYGmy01tFDv+k8A==", + "dependencies": { + "@fluentui/date-time-utilities": "^7.9.1", + "@fluentui/react-focus": "^7.18.3", + "@fluentui/react-window-provider": "^1.0.2", + "@microsoft/load-themed-styles": "^1.10.26", + "@uifabric/foundation": "^7.10.2", + "@uifabric/icons": "^7.6.3", + "@uifabric/merge-styles": "^7.19.2", + "@uifabric/react-hooks": "^7.14.1", + "@uifabric/set-version": "^7.0.24", + "@uifabric/styling": "^7.20.1", + "@uifabric/utilities": "^7.34.0", + "prop-types": "^15.7.2", + "tslib": "^1.10.0" + }, + "peerDependencies": { + "@types/react": ">=16.8.0 <17.0.0", + "@types/react-dom": ">=16.8.0 <17.0.0", + "react": ">=16.8.0 <17.0.0", + "react-dom": ">=16.8.0 <17.0.0" + } + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "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": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", + "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", + "dev": true, + "dependencies": { + "@types/retry": "^0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/param-case/node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true + }, + "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/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/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/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/pascal-case/node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "dependencies": { + "isarray": "0.0.1" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "dev": true, + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-up/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-up/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "dev": true, + "dependencies": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/postcss": { + "version": "8.4.12", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz", + "integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.1", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-attribute-case-insensitive": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.0.tgz", + "integrity": "sha512-b4g9eagFGq9T5SWX4+USfVyjIb3liPnjhHHRMP7FMB2kFVpYyfEscV0wP3eaXhKlcHKUut8lt5BGoeylWA/dBQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.2" + }, + "peerDependencies": { + "postcss": "^8.0.2" + } + }, + "node_modules/postcss-browser-comments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz", + "integrity": "sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "browserslist": ">=4", + "postcss": ">=8" + } + }, + "node_modules/postcss-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-clamp": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", + "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=7.6.0" + }, + "peerDependencies": { + "postcss": "^8.4.6" + } + }, + "node_modules/postcss-color-functional-notation": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.2.tgz", + "integrity": "sha512-DXVtwUhIk4f49KK5EGuEdgx4Gnyj6+t2jBSEmxvpIK9QI40tWrpS2Pua8Q7iIZWBrki2QOaeUdEaLPPa91K0RQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-color-hex-alpha": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.3.tgz", + "integrity": "sha512-fESawWJCrBV035DcbKRPAVmy21LpoyiXdPTuHUfWJ14ZRjY7Y7PA6P4g8z6LQGYhU1WAxkTxjIjurXzoe68Glw==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-color-rebeccapurple": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.0.2.tgz", + "integrity": "sha512-SFc3MaocHaQ6k3oZaFwH8io6MdypkUtEy/eXzXEB1vEQlO3S3oDc/FSZA8AsS04Z25RirQhlDlHLh3dn7XewWw==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/postcss-colormin": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", + "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-convert-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.0.tgz", + "integrity": "sha512-GkyPbZEYJiWtQB0KZ0X6qusqFHUepguBCNFi9t5JJc7I2OTXG7C0twbTLvCfaKOLl3rSXmpAwV7W5txd91V84g==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-custom-media": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.0.tgz", + "integrity": "sha512-FvO2GzMUaTN0t1fBULDeIvxr5IvbDXcIatt6pnJghc736nqNgsGao5NT+5+WVLAQiTt6Cb3YUms0jiPaXhL//g==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-custom-properties": { + "version": "12.1.6", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.6.tgz", + "integrity": "sha512-QEnQkDkb+J+j2bfJisJJpTAFL+lUFl66rUNvnjPBIvRbZACLG4Eu5bmBCIY4FJCqhwsfbBpmJUyb3FcR/31lAg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-custom-selectors": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.0.tgz", + "integrity": "sha512-/1iyBhz/W8jUepjGyu7V1OPcGbc636snN1yXEQCinb6Bwt7KxsiU7/bLQlp8GwAXzCh7cobBU5odNn/2zQWR8Q==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.1.2" + } + }, + "node_modules/postcss-dir-pseudo-class": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.4.tgz", + "integrity": "sha512-I8epwGy5ftdzNWEYok9VjW9whC4xnelAtbajGv4adql4FIF09rnrxnA9Y8xSHN47y7gqFIv10C5+ImsLeJpKBw==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-discard-comments": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.1.tgz", + "integrity": "sha512-5JscyFmvkUxz/5/+TB3QTTT9Gi9jHkcn8dcmmuN68JQcv3aQg4y88yEHHhwFB52l/NkaJ43O0dbksGMAo49nfQ==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-empty": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", + "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-double-position-gradients": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.1.tgz", + "integrity": "sha512-jM+CGkTs4FcG53sMPjrrGE0rIvLDdCrqMzgDC5fLI7JHDO7o6QG8C5TQBtExb13hdBdoH9C2QVbG4jo2y9lErQ==", + "dev": true, + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-env-function": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz", + "integrity": "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-flexbugs-fixes": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz", + "integrity": "sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==", + "dev": true, + "peerDependencies": { + "postcss": "^8.1.4" + } + }, + "node_modules/postcss-focus-visible": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz", + "integrity": "sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-focus-within": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz", + "integrity": "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-font-variant": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", + "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", + "dev": true, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-gap-properties": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.3.tgz", + "integrity": "sha512-rPPZRLPmEKgLk/KlXMqRaNkYTUpE7YC+bOIQFN5xcu1Vp11Y4faIXv6/Jpft6FMnl6YRxZqDZG0qQOW80stzxQ==", + "dev": true, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-image-set-function": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.6.tgz", + "integrity": "sha512-KfdC6vg53GC+vPd2+HYzsZ6obmPqOk6HY09kttU19+Gj1nC3S3XBVEXDHxkhxTohgZqzbUb94bKXvKDnYWBm/A==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-initial": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz", + "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==", + "dev": true, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz", + "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==", + "dev": true, + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.3.3" + } + }, + "node_modules/postcss-lab-function": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.0.tgz", + "integrity": "sha512-Zb1EO9DGYfa3CP8LhINHCcTTCTLI+R3t7AX2mKsDzdgVQ/GkCpHOTgOr6HBHslP7XDdVbqgHW5vvRPMdVANQ8w==", + "dev": true, + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-load-config": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", + "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", + "dev": true, + "dependencies": { + "lilconfig": "^2.0.5", + "yaml": "^1.10.2" + }, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", + "dev": true, + "dependencies": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-logical": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", + "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==", + "dev": true, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-media-minmax": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz", + "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.4.tgz", + "integrity": "sha512-hbqRRqYfmXoGpzYKeW0/NCZhvNyQIlQeWVSao5iKWdyx7skLvCfQFGIUsP9NUs3dSbPac2IC4Go85/zG+7MlmA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-rules": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.1.tgz", + "integrity": "sha512-8wv8q2cXjEuCcgpIB1Xx1pIy8/rhMPIQqYKNzEdyx37m6gpq83mQQdCxgIkFgliyEnKvdwJf/C61vN4tQDq4Ww==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", + "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "dev": true, + "dependencies": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-params": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.2.tgz", + "integrity": "sha512-aEP+p71S/urY48HWaRHasyx4WHQJyOYaKpQ6eXl8k0kxg66Wt/30VR6/woh8THgcpRbonJD5IeD+CzNhPi1L8g==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.0.tgz", + "integrity": "sha512-vYxvHkW+iULstA+ctVNx0VoRAR4THQQRkG77o0oa4/mBS0OzGvvzLIvHDv/nNEM0crzN2WIyFU5X7wZhaUK3RA==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-nested": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", + "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.6" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-nesting": { + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.1.4.tgz", + "integrity": "sha512-2ixdQ59ik/Gt1+oPHiI1kHdwEI8lLKEmui9B1nl6163ANLC+GewQn7fXMxJF2JSb4i2MKL96GU8fIiQztK4TTA==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-normalize": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-10.0.1.tgz", + "integrity": "sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA==", + "dev": true, + "dependencies": { + "@csstools/normalize.css": "*", + "postcss-browser-comments": "^4", + "sanitize.css": "*" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "browserslist": ">= 4", + "postcss": ">= 8" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.0.tgz", + "integrity": "sha512-8gmItgA4H5xiUxgN/3TVvXRoJxkAWLW6f/KKhdsH03atg0cB8ilXnrB5PpSshwVu/dD2ZsRFQcR1OEmSBDAgcQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.0.tgz", + "integrity": "sha512-IR3uBjc+7mcWGL6CtniKNQ4Rr5fTxwkaDHwMBDGGs1x9IVRkYIT/M4NelZWkAOBdV6v3Z9S46zqaKGlyzHSchw==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-string": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz", + "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "dev": true, + "dependencies": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", + "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-opacity-percentage": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.2.tgz", + "integrity": "sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w==", + "dev": true, + "funding": [ + { + "type": "kofi", + "url": "https://ko-fi.com/mrcgrtz" + }, + { + "type": "liberapay", + "url": "https://liberapay.com/mrcgrtz" + } + ], + "engines": { + "node": "^12 || ^14 || >=16" + } + }, + "node_modules/postcss-ordered-values": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.1.tgz", + "integrity": "sha512-7lxgXF0NaoMIgyihL/2boNAEZKiW0+HkMhdKMTD93CjW8TdCy2hSdj8lsAo+uwm7EDG16Da2Jdmtqpedl0cMfw==", + "dev": true, + "dependencies": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-overflow-shorthand": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.3.tgz", + "integrity": "sha512-CxZwoWup9KXzQeeIxtgOciQ00tDtnylYIlJBBODqkgS/PU2jISuWOL/mYLHmZb9ZhZiCaNKsCRiLp22dZUtNsg==", + "dev": true, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-page-break": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", + "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", + "dev": true, + "peerDependencies": { + "postcss": "^8" + } + }, + "node_modules/postcss-place": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.4.tgz", + "integrity": "sha512-MrgKeiiu5OC/TETQO45kV3npRjOFxEHthsqGtkh3I1rPbZSbXGD/lZVi9j13cYh+NA8PIAPyk6sGjT9QbRyvSg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-preset-env": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.4.3.tgz", + "integrity": "sha512-dlPA65g9KuGv7YsmGyCKtFkZKCPLkoVMUE3omOl6yM+qrynVHxFvf0tMuippIrXB/sB/MyhL1FgTIbrO+qMERg==", + "dev": true, + "dependencies": { + "@csstools/postcss-color-function": "^1.0.3", + "@csstools/postcss-font-format-keywords": "^1.0.0", + "@csstools/postcss-hwb-function": "^1.0.0", + "@csstools/postcss-ic-unit": "^1.0.0", + "@csstools/postcss-is-pseudo-class": "^2.0.1", + "@csstools/postcss-normalize-display-values": "^1.0.0", + "@csstools/postcss-oklab-function": "^1.0.2", + "@csstools/postcss-progressive-custom-properties": "^1.3.0", + "autoprefixer": "^10.4.4", + "browserslist": "^4.20.2", + "css-blank-pseudo": "^3.0.3", + "css-has-pseudo": "^3.0.4", + "css-prefers-color-scheme": "^6.0.3", + "cssdb": "^6.5.0", + "postcss-attribute-case-insensitive": "^5.0.0", + "postcss-clamp": "^4.1.0", + "postcss-color-functional-notation": "^4.2.2", + "postcss-color-hex-alpha": "^8.0.3", + "postcss-color-rebeccapurple": "^7.0.2", + "postcss-custom-media": "^8.0.0", + "postcss-custom-properties": "^12.1.5", + "postcss-custom-selectors": "^6.0.0", + "postcss-dir-pseudo-class": "^6.0.4", + "postcss-double-position-gradients": "^3.1.1", + "postcss-env-function": "^4.0.6", + "postcss-focus-visible": "^6.0.4", + "postcss-focus-within": "^5.0.4", + "postcss-font-variant": "^5.0.0", + "postcss-gap-properties": "^3.0.3", + "postcss-image-set-function": "^4.0.6", + "postcss-initial": "^4.0.1", + "postcss-lab-function": "^4.1.2", + "postcss-logical": "^5.0.4", + "postcss-media-minmax": "^5.0.0", + "postcss-nesting": "^10.1.3", + "postcss-opacity-percentage": "^1.1.2", + "postcss-overflow-shorthand": "^3.0.3", + "postcss-page-break": "^3.0.4", + "postcss-place": "^7.0.4", + "postcss-pseudo-class-any-link": "^7.1.1", + "postcss-replace-overflow-wrap": "^4.0.0", + "postcss-selector-not": "^5.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-pseudo-class-any-link": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.2.tgz", + "integrity": "sha512-76XzEQv3g+Vgnz3tmqh3pqQyRojkcJ+pjaePsyhcyf164p9aZsu3t+NWxkZYbcHLK1ju5Qmalti2jPI5IWCe5w==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz", + "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-replace-overflow-wrap": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", + "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", + "dev": true, + "peerDependencies": { + "postcss": "^8.0.3" + } + }, + "node_modules/postcss-selector-not": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-5.0.0.tgz", + "integrity": "sha512-/2K3A4TCP9orP4TNS7u3tGdRFVKqz/E6pX3aGnriPG0jU78of8wsUcqE4QAhWEU0d+WnMSF93Ah3F//vUtK+iQ==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-svgo/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/postcss-svgo/node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/postcss-svgo/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/postcss-svgo/node_modules/dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "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/postcss-svgo/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/postcss-svgo/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/postcss-svgo/node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "node_modules/postcss-svgo/node_modules/nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/postcss-svgo/node_modules/svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dev": true, + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", + "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "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/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dev": true, + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "dev": true, + "dependencies": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + }, + "engines": { + "node": ">= 6" + } + }, + "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/promise": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz", + "integrity": "sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q==", + "dev": true, + "dependencies": { + "asap": "~2.0.6" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "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/proxy-addr/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/psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true, + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", + "dev": true, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "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/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/raf": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", + "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", + "dev": true, + "dependencies": { + "performance-now": "^2.1.0" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "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.4.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", + "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/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/react": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-aad-msal": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/react-aad-msal/-/react-aad-msal-2.3.5.tgz", + "integrity": "sha512-QCJXk7LtAf8ssbcuLT6glFZNmqcc6d2dy1ek+GY/feiNE3RM+bCxnH53VOPytV1h7EsUP9IvwOFum2fHcITo5A==", + "dependencies": { + "redux": "4.0.4" + }, + "engines": { + "node": ">= 8.10.0", + "npm": ">= 5.6.0" + }, + "peerDependencies": { + "msal": ">=1.2.1", + "react": ">=16.8.0" + } + }, + "node_modules/react-app-polyfill": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz", + "integrity": "sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w==", + "dev": true, + "dependencies": { + "core-js": "^3.19.2", + "object-assign": "^4.1.1", + "promise": "^8.1.0", + "raf": "^3.4.1", + "regenerator-runtime": "^0.13.9", + "whatwg-fetch": "^3.6.2" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/react-dev-utils": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.0.tgz", + "integrity": "sha512-xBQkitdxozPxt1YZ9O1097EJiVpwHr9FoAuEVURCKV0Av8NBERovJauzP7bo1ThvuhZ4shsQ1AJiu4vQpoT1AQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "address": "^1.1.2", + "browserslist": "^4.18.1", + "chalk": "^4.1.2", + "cross-spawn": "^7.0.3", + "detect-port-alt": "^1.1.6", + "escape-string-regexp": "^4.0.0", + "filesize": "^8.0.6", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^6.5.0", + "global-modules": "^2.0.0", + "globby": "^11.0.4", + "gzip-size": "^6.0.0", + "immer": "^9.0.7", + "is-root": "^2.1.0", + "loader-utils": "^3.2.0", + "open": "^8.4.0", + "pkg-up": "^3.1.0", + "prompts": "^2.4.2", + "react-error-overlay": "^6.0.10", + "recursive-readdir": "^2.2.2", + "shell-quote": "^1.7.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/react-dev-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/react-dev-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/react-dev-utils/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/react-dev-utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/react-dev-utils/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dev-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/react-dev-utils/node_modules/loader-utils": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz", + "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==", + "dev": true, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/react-dev-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/react-dom": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", + "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "scheduler": "^0.20.2" + }, + "peerDependencies": { + "react": "17.0.2" + } + }, + "node_modules/react-error-overlay": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.10.tgz", + "integrity": "sha512-mKR90fX7Pm5seCOfz8q9F+66VCc1PGsWSBxKbITjfKVQHMNF2zudxHnMdJiB1fRCb+XsbQV9sO9DCkgsMQgBIA==", + "dev": true + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/react-refresh": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", + "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-router": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.1.tgz", + "integrity": "sha512-lIboRiOtDLFdg1VTemMwud9vRVuOCZmUIT/7lUoZiSpPODiiH1UQlfXy+vPLC/7IWdFYnhRwAyNqA/+I7wnvKQ==", + "dependencies": { + "@babel/runtime": "^7.12.13", + "history": "^4.9.0", + "hoist-non-react-statics": "^3.1.0", + "loose-envify": "^1.3.1", + "mini-create-react-context": "^0.4.0", + "path-to-regexp": "^1.7.0", + "prop-types": "^15.6.2", + "react-is": "^16.6.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "peerDependencies": { + "react": ">=15" + } + }, + "node_modules/react-router-dom": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.0.tgz", + "integrity": "sha512-ObVBLjUZsphUUMVycibxgMdh5jJ1e3o+KpAZBVeHcNQZ4W+uUGGWsokurzlF4YOldQYRQL4y6yFRWM4m3svmuQ==", + "dependencies": { + "@babel/runtime": "^7.12.13", + "history": "^4.9.0", + "loose-envify": "^1.3.1", + "prop-types": "^15.6.2", + "react-router": "5.2.1", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "peerDependencies": { + "react": ">=15" + } + }, + "node_modules/react-scripts": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.0.tgz", + "integrity": "sha512-3i0L2CyIlROz7mxETEdfif6Sfhh9Lfpzi10CtcGs1emDQStmZfWjJbAIMtRD0opVUjQuFWqHZyRZ9PPzKCFxWg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.16.0", + "@pmmmwh/react-refresh-webpack-plugin": "^0.5.3", + "@svgr/webpack": "^5.5.0", + "babel-jest": "^27.4.2", + "babel-loader": "^8.2.3", + "babel-plugin-named-asset-import": "^0.3.8", + "babel-preset-react-app": "^10.0.1", + "bfj": "^7.0.2", + "browserslist": "^4.18.1", + "camelcase": "^6.2.1", + "case-sensitive-paths-webpack-plugin": "^2.4.0", + "css-loader": "^6.5.1", + "css-minimizer-webpack-plugin": "^3.2.0", + "dotenv": "^10.0.0", + "dotenv-expand": "^5.1.0", + "eslint": "^8.3.0", + "eslint-config-react-app": "^7.0.0", + "eslint-webpack-plugin": "^3.1.1", + "file-loader": "^6.2.0", + "fs-extra": "^10.0.0", + "html-webpack-plugin": "^5.5.0", + "identity-obj-proxy": "^3.0.0", + "jest": "^27.4.3", + "jest-resolve": "^27.4.2", + "jest-watch-typeahead": "^1.0.0", + "mini-css-extract-plugin": "^2.4.5", + "postcss": "^8.4.4", + "postcss-flexbugs-fixes": "^5.0.2", + "postcss-loader": "^6.2.1", + "postcss-normalize": "^10.0.1", + "postcss-preset-env": "^7.0.1", + "prompts": "^2.4.2", + "react-app-polyfill": "^3.0.0", + "react-dev-utils": "^12.0.0", + "react-refresh": "^0.11.0", + "resolve": "^1.20.0", + "resolve-url-loader": "^4.0.0", + "sass-loader": "^12.3.0", + "semver": "^7.3.5", + "source-map-loader": "^3.0.0", + "style-loader": "^3.3.1", + "tailwindcss": "^3.0.2", + "terser-webpack-plugin": "^5.2.5", + "webpack": "^5.64.4", + "webpack-dev-server": "^4.6.0", + "webpack-manifest-plugin": "^4.0.2", + "workbox-webpack-plugin": "^6.4.1" + }, + "bin": { + "react-scripts": "bin/react-scripts.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + }, + "peerDependencies": { + "react": ">= 16", + "typescript": "^3.2.1 || ^4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/react-scripts/node_modules/@eslint/eslintrc": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz", + "integrity": "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.3.1", + "globals": "^13.9.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/react-scripts/node_modules/@humanwhocodes/config-array": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/react-scripts/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/react-scripts/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/react-scripts/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/react-scripts/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/react-scripts/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/react-scripts/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-scripts/node_modules/eslint": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.12.0.tgz", + "integrity": "sha512-it1oBL9alZg1S8UycLm5YDMAkIhtH6FtAzuZs6YvoGVldWjbS08BkAdb/ymP9LlAyq8koANu32U7Ib/w+UNh8Q==", + "dev": true, + "dependencies": { + "@eslint/eslintrc": "^1.2.1", + "@humanwhocodes/config-array": "^0.9.2", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.6.0", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/react-scripts/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/react-scripts/node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/react-scripts/node_modules/espree": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", + "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", + "dev": true, + "dependencies": { + "acorn": "^8.7.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/react-scripts/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/react-scripts/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/react-scripts/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/react-scripts/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/react-scripts/node_modules/resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/react-scripts/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/react-virtualized-auto-sizer": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.6.tgz", + "integrity": "sha512-7tQ0BmZqfVF6YYEWcIGuoR3OdYe8I/ZFbNclFlGOC3pMqunkYF/oL30NCjSGl9sMEb17AnzixDz98Kqc3N76HQ==", + "engines": { + "node": ">8.0.0" + }, + "peerDependencies": { + "react": "^15.3.0 || ^16.0.0-alpha || ^17.0.0", + "react-dom": "^15.3.0 || ^16.0.0-alpha || ^17.0.0" + } + }, + "node_modules/react-window": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/react-window/-/react-window-1.8.6.tgz", + "integrity": "sha512-8VwEEYyjz6DCnGBsd+MgkD0KJ2/OXFULyDtorIiTz+QzwoP94tBoA7CnbtyXMm+cCeAUER5KJcPtWl9cpKbOBg==", + "dependencies": { + "@babel/runtime": "^7.0.0", + "memoize-one": ">=3.1.1 <6" + }, + "engines": { + "node": ">8.0.0" + }, + "peerDependencies": { + "react": "^15.0.0 || ^16.0.0 || ^17.0.0", + "react-dom": "^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/recursive-readdir": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", + "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", + "dev": true, + "dependencies": { + "minimatch": "3.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/recursive-readdir/node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/redux": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.0.4.tgz", + "integrity": "sha512-vKv4WdiJxOWKxK0yRoaK3Y4pxxB0ilzVx6dszU2W8wLxlb2yikRph4iV/ymtdJ6ZxpBLFbyrxklnT5yBbQSl3Q==", + "dependencies": { + "loose-envify": "^1.4.0", + "symbol-observable": "^1.2.0" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", + "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + }, + "node_modules/regenerator-transform": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", + "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regex-parser": { + "version": "2.2.11", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", + "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", + "dev": true + }, + "node_modules/regexp.prototype.flags": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz", + "integrity": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/regexpu-core": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", + "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.0.1", + "regjsgen": "^0.6.0", + "regjsparser": "^0.8.2", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", + "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", + "dev": true + }, + "node_modules/regjsparser": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", + "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dev": true, + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/renderkid/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/renderkid/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/renderkid/node_modules/dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "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/renderkid/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/renderkid/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/renderkid/node_modules/nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "node_modules/resolve": { + "version": "2.0.0-next.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", + "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", + "dev": true, + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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/resolve-pathname": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", + "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" + }, + "node_modules/resolve-url-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz", + "integrity": "sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==", + "dev": true, + "dependencies": { + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^7.0.35", + "source-map": "0.6.1" + }, + "engines": { + "node": ">=8.9" + }, + "peerDependencies": { + "rework": "1.0.1", + "rework-visit": "1.0.0" + }, + "peerDependenciesMeta": { + "rework": { + "optional": true + }, + "rework-visit": { + "optional": true + } + } + }, + "node_modules/resolve-url-loader/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/resolve-url-loader/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/resolve.exports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", + "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "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, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "2.70.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.70.1.tgz", + "integrity": "sha512-CRYsI5EuzLbXdxC6RnYhOuRdtz4bhejPMSWjsFLfVM/7w/85n2szZv6yExqUXsBdz5KT8eoubeyDUDjhLHEslA==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + }, + "peerDependencies": { + "rollup": "^2.0.0" + } + }, + "node_modules/rollup-plugin-terser/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/rollup-plugin-terser/node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/rollup-plugin-terser/node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/rollup-plugin-terser/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "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": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", + "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/rxjs/node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, + "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==", + "dev": true + }, + "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/sanitize.css": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/sanitize.css/-/sanitize.css-13.0.0.tgz", + "integrity": "sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA==", + "dev": true + }, + "node_modules/sass-loader": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", + "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", + "dev": true, + "dependencies": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": 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/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/scheduler": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "node_modules/selfsigned": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", + "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", + "dev": true, + "dependencies": { + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "7.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", + "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", + "dev": true, + "dependencies": { + "lru-cache": "^7.4.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/send": { + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", + "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "1.8.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "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": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "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/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/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/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-static": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", + "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "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/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", + "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", + "dev": true + }, + "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/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/slice-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-loader": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.1.tgz", + "integrity": "sha512-Vp1UsfyPvgujKQzi4pyDiTOnE3E4H+yHvkVRN3c/9PJmQS4CQJExvcDvaX/D+RV+xQben9HJ56jMJS3CgUeWyA==", + "dev": true, + "dependencies": { + "abab": "^2.0.5", + "iconv-lite": "^0.6.3", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/source-map-loader/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/source-map-resolve": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", + "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "dev": true, + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", + "dev": true + }, + "node_modules/stack-utils": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", + "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/stackframe": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.2.1.tgz", + "integrity": "sha512-h88QkzREN/hy8eRdyNhhsO7RSJ5oyTqxxmmn0dzBIMUclZsjpfmrsg81vp8mjjAs2vAZ72nyWxRUwSwmh0e4xg==", + "dev": true + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "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/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-natural-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz", + "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==", + "dev": true + }, + "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, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/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 + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", + "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.4.1", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dev": true, + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "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, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", + "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-loader": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", + "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", + "dev": true, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/stylehacks": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", + "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "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/supports-hyperlinks": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", + "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", + "dev": true + }, + "node_modules/svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.", + "dev": true, + "dependencies": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/svgo/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/svgo/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/svgo/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/symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "node_modules/table": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz", + "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/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/table/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/tailwindcss": { + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.0.23.tgz", + "integrity": "sha512-+OZOV9ubyQ6oI2BXEhzw4HrqvgcARY38xv3zKcjnWtMIZstEsXdI9xftd1iB7+RbOnj2HOEzkA0OyB5BaSxPQA==", + "dev": true, + "dependencies": { + "arg": "^5.0.1", + "chalk": "^4.1.2", + "chokidar": "^3.5.3", + "color-name": "^1.1.4", + "cosmiconfig": "^7.0.1", + "detective": "^5.2.0", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "normalize-path": "^3.0.0", + "object-hash": "^2.2.0", + "postcss": "^8.4.6", + "postcss-js": "^4.0.0", + "postcss-load-config": "^3.1.0", + "postcss-nested": "5.0.6", + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0", + "quick-lru": "^5.1.1", + "resolve": "^1.22.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=12.13.0" + }, + "peerDependencies": { + "autoprefixer": "^10.0.2", + "postcss": "^8.0.9" + } + }, + "node_modules/tailwindcss/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/tailwindcss/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/tailwindcss/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/tailwindcss/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/tailwindcss/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/tailwindcss/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tailwindcss/node_modules/resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tailwindcss/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tempy": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", + "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", + "dev": true, + "dependencies": { + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.1.tgz", + "integrity": "sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ==", + "dev": true, + "dependencies": { + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", + "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "dev": true, + "dependencies": { + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1", + "terser": "^5.7.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "node_modules/throat": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", + "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", + "dev": true + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "node_modules/tiny-invariant": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.2.0.tgz", + "integrity": "sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg==" + }, + "node_modules/tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.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": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tryer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", + "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", + "dev": true + }, + "node_modules/tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz", + "integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dev": true, + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "dev": true + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true, + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "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": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "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==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "node_modules/v8-to-istanbul": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", + "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/v8-to-istanbul/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/value-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", + "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "dependencies": { + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/watchpack": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/web-vitals": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-0.2.4.tgz", + "integrity": "sha512-6BjspCO9VriYy12z356nL6JBS0GYeEcA457YyRzD+dD6XYCQ75NKhcOHUMHentOE7OcVCIXXDvOm0jKFfQG2Gg==" + }, + "node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true, + "engines": { + "node": ">=10.4" + } + }, + "node_modules/webpack": { + "version": "5.71.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.71.0.tgz", + "integrity": "sha512-g4dFT7CFG8LY0iU5G8nBL6VlkT21Z7dcYDpJAEJV5Q1WLb9UwnFbrem1k7K52ILqEmomN7pnzWFxxE6SlDY56A==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.9.2", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz", + "integrity": "sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.1", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-middleware/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/webpack-dev-middleware/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-middleware/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/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.8.1.tgz", + "integrity": "sha512-dwld70gkgNJa33czmcj/PlKY/nOy/BimbrgZRaR9vDATBQAYgLzggR0nxDtPLJiLrMgZwbE6RRfJ5vnBBasTyg==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.1", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "portfinder": "^1.0.28", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.0.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.4.2" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/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/webpack-dev-server/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-server/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/webpack-dev-server/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/webpack-manifest-plugin": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-4.1.1.tgz", + "integrity": "sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow==", + "dev": true, + "dependencies": { + "tapable": "^2.0.0", + "webpack-sources": "^2.2.0" + }, + "engines": { + "node": ">=12.22.0" + }, + "peerDependencies": { + "webpack": "^4.44.2 || ^5.47.0" + } + }, + "node_modules/webpack-manifest-plugin/node_modules/webpack-sources": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz", + "integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==", + "dev": true, + "dependencies": { + "source-list-map": "^2.0.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/whatwg-fetch": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", + "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==", + "dev": true + }, + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "dependencies": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/workbox-background-sync": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.5.2.tgz", + "integrity": "sha512-EjG37LSMDJ1TFlFg56wx6YXbH4/NkG09B9OHvyxx+cGl2gP5OuOzsCY3rOPJSpbcz6jpuA40VIC3HzSD4OvE1g==", + "dev": true, + "dependencies": { + "idb": "^6.1.4", + "workbox-core": "6.5.2" + } + }, + "node_modules/workbox-broadcast-update": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.5.2.tgz", + "integrity": "sha512-DjJYraYnprTZE/AQNoeogaxI1dPuYmbw+ZJeeP8uXBSbg9SNv5wLYofQgywXeRepv4yr/vglMo9yaHUmBMc+4Q==", + "dev": true, + "dependencies": { + "workbox-core": "6.5.2" + } + }, + "node_modules/workbox-build": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.5.2.tgz", + "integrity": "sha512-TVi4Otf6fgwikBeMpXF9n0awHfZTMNu/nwlMIT9W+c13yvxkmDFMPb7vHYK6RUmbcxwPnz4I/R+uL76+JxG4JQ==", + "dev": true, + "dependencies": { + "@apideck/better-ajv-errors": "^0.3.1", + "@babel/core": "^7.11.1", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.2", + "@rollup/plugin-babel": "^5.2.0", + "@rollup/plugin-node-resolve": "^11.2.1", + "@rollup/plugin-replace": "^2.4.1", + "@surma/rollup-plugin-off-main-thread": "^2.2.3", + "ajv": "^8.6.0", + "common-tags": "^1.8.0", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "lodash": "^4.17.20", + "pretty-bytes": "^5.3.0", + "rollup": "^2.43.1", + "rollup-plugin-terser": "^7.0.0", + "source-map": "^0.8.0-beta.0", + "stringify-object": "^3.3.0", + "strip-comments": "^2.0.1", + "tempy": "^0.6.0", + "upath": "^1.2.0", + "workbox-background-sync": "6.5.2", + "workbox-broadcast-update": "6.5.2", + "workbox-cacheable-response": "6.5.2", + "workbox-core": "6.5.2", + "workbox-expiration": "6.5.2", + "workbox-google-analytics": "6.5.2", + "workbox-navigation-preload": "6.5.2", + "workbox-precaching": "6.5.2", + "workbox-range-requests": "6.5.2", + "workbox-recipes": "6.5.2", + "workbox-routing": "6.5.2", + "workbox-strategies": "6.5.2", + "workbox-streams": "6.5.2", + "workbox-sw": "6.5.2", + "workbox-window": "6.5.2" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/workbox-build/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/workbox-build/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/workbox-build/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/workbox-build/node_modules/source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "dev": true, + "dependencies": { + "whatwg-url": "^7.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/workbox-build/node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/workbox-build/node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "node_modules/workbox-build/node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/workbox-cacheable-response": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.5.2.tgz", + "integrity": "sha512-UnHGih6xqloV808T7ve1iNKZMbpML0jGLqkkmyXkJbZc5j16+HRSV61Qrh+tiq3E3yLvFMGJ3AUBODOPNLWpTg==", + "dev": true, + "dependencies": { + "workbox-core": "6.5.2" + } + }, + "node_modules/workbox-core": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.5.2.tgz", + "integrity": "sha512-IlxLGQf+wJHCR+NM0UWqDh4xe/Gu6sg2i4tfZk6WIij34IVk9BdOQgi6WvqSHd879jbQIUgL2fBdJUJyAP5ypQ==", + "dev": true + }, + "node_modules/workbox-expiration": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.5.2.tgz", + "integrity": "sha512-5Hfp0uxTZJrgTiy9W7AjIIec+9uTOtnxY/tRBm4DbqcWKaWbVTa+izrKzzOT4MXRJJIJUmvRhWw4oo8tpmMouw==", + "dev": true, + "dependencies": { + "idb": "^6.1.4", + "workbox-core": "6.5.2" + } + }, + "node_modules/workbox-google-analytics": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.5.2.tgz", + "integrity": "sha512-8SMar+N0xIreP5/2we3dwtN1FUmTMScoopL86aKdXBpio8vXc8Oqb5fCJG32ialjN8BAOzDqx/FnGeCtkIlyvw==", + "dev": true, + "dependencies": { + "workbox-background-sync": "6.5.2", + "workbox-core": "6.5.2", + "workbox-routing": "6.5.2", + "workbox-strategies": "6.5.2" + } + }, + "node_modules/workbox-navigation-preload": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.5.2.tgz", + "integrity": "sha512-iqDNWWMswjCsZuvGFDpcX1Z8InBVAlVBELJ28xShsWWntALzbtr0PXMnm2WHkXCc56JimmGldZi1N5yDPiTPOg==", + "dev": true, + "dependencies": { + "workbox-core": "6.5.2" + } + }, + "node_modules/workbox-precaching": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.5.2.tgz", + "integrity": "sha512-OZAlQ8AAT20KugGKKuJMHdQ8X1IyNQaLv+mPTHj+8Dmv8peBq5uWNzs4g/1OSFmXsbXZ6a1CBC6YtQWVPhJQ9w==", + "dev": true, + "dependencies": { + "workbox-core": "6.5.2", + "workbox-routing": "6.5.2", + "workbox-strategies": "6.5.2" + } + }, + "node_modules/workbox-range-requests": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.5.2.tgz", + "integrity": "sha512-zi5VqF1mWqfCyJLTMXn1EuH/E6nisqWDK1VmOJ+TnjxGttaQrseOhMn+BMvULFHeF8AvrQ0ogfQ6bSv0rcfAlg==", + "dev": true, + "dependencies": { + "workbox-core": "6.5.2" + } + }, + "node_modules/workbox-recipes": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.5.2.tgz", + "integrity": "sha512-2lcUKMYDiJKvuvRotOxLjH2z9K7jhj8GNUaHxHNkJYbTCUN3LsX1cWrsgeJFDZ/LgI565t3fntpbG9J415ZBXA==", + "dev": true, + "dependencies": { + "workbox-cacheable-response": "6.5.2", + "workbox-core": "6.5.2", + "workbox-expiration": "6.5.2", + "workbox-precaching": "6.5.2", + "workbox-routing": "6.5.2", + "workbox-strategies": "6.5.2" + } + }, + "node_modules/workbox-routing": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.5.2.tgz", + "integrity": "sha512-nR1w5PjF6IVwo0SX3oE88LhmGFmTnqqU7zpGJQQPZiKJfEKgDENQIM9mh3L1ksdFd9Y3CZVkusopHfxQvit/BA==", + "dev": true, + "dependencies": { + "workbox-core": "6.5.2" + } + }, + "node_modules/workbox-strategies": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.5.2.tgz", + "integrity": "sha512-fgbwaUMxbG39BHjJIs2y2X21C0bmf1Oq3vMQxJ1hr6y5JMJIm8rvKCcf1EIdAr+PjKdSk4ddmgyBQ4oO8be4Uw==", + "dev": true, + "dependencies": { + "workbox-core": "6.5.2" + } + }, + "node_modules/workbox-streams": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.5.2.tgz", + "integrity": "sha512-ovD0P4UrgPtZ2Lfc/8E8teb1RqNOSZr+1ZPqLR6sGRZnKZviqKbQC3zVvvkhmOIwhWbpL7bQlWveLVONHjxd5w==", + "dev": true, + "dependencies": { + "workbox-core": "6.5.2", + "workbox-routing": "6.5.2" + } + }, + "node_modules/workbox-sw": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.5.2.tgz", + "integrity": "sha512-2KhlYqtkoqlnPdllj2ujXUKRuEFsRDIp6rdE4l1PsxiFHRAFaRTisRQpGvRem5yxgXEr+fcEKiuZUW2r70KZaw==", + "dev": true + }, + "node_modules/workbox-webpack-plugin": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.2.tgz", + "integrity": "sha512-StrJ7wKp5tZuGVcoKLVjFWlhDy+KT7ZWsKnNcD6F08wA9Cpt6JN+PLIrplcsTHbQpoAV8+xg6RvcG0oc9z+RpQ==", + "dev": true, + "dependencies": { + "fast-json-stable-stringify": "^2.1.0", + "pretty-bytes": "^5.4.1", + "upath": "^1.2.0", + "webpack-sources": "^1.4.3", + "workbox-build": "6.5.2" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "webpack": "^4.4.0 || ^5.9.0" + } + }, + "node_modules/workbox-webpack-plugin/node_modules/webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "node_modules/workbox-window": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.5.2.tgz", + "integrity": "sha512-2kZH37r9Wx8swjEOL4B8uGM53lakMxsKkQ7mOKzGA/QAn/DQTEZGrdHWtypk2tbhKY5S0jvPS+sYDnb2Z3378A==", + "dev": true, + "dependencies": { + "@types/trusted-types": "^2.0.2", + "workbox-core": "6.5.2" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/ws": { + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", + "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", + "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/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "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/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, "dependencies": { "@ampproject/remapping": { "version": "2.1.2", @@ -3879,13 +24787,15 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true + "dev": true, + "requires": {} }, "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 + "dev": true, + "requires": {} }, "acorn-node": { "version": "1.8.2", @@ -3982,7 +24892,8 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "dev": true, + "requires": {} }, "ansi-colors": { "version": "4.1.1", @@ -4370,7 +25281,8 @@ "version": "0.3.8", "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz", "integrity": "sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==", - "dev": true + "dev": true, + "requires": {} }, "babel-plugin-polyfill-corejs2": { "version": "0.3.1", @@ -5118,7 +26030,8 @@ "version": "6.2.2", "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.2.2.tgz", "integrity": "sha512-Ufadglr88ZLsrvS11gjeu/40Lw74D9Am/Jpr3LlYm5Q4ZP5KdlUhG+6u2EjyXeZcxmZ2h1ebCKngDjolpeLHpg==", - "dev": true + "dev": true, + "requires": {} }, "css-has-pseudo": { "version": "3.0.4", @@ -5204,7 +26117,8 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", - "dev": true + "dev": true, + "requires": {} }, "css-select": { "version": "2.1.0", @@ -5310,7 +26224,8 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", - "dev": true + "dev": true, + "requires": {} }, "csso": { "version": "4.2.0", @@ -6434,7 +27349,8 @@ "version": "4.4.0", "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.4.0.tgz", "integrity": "sha512-U3RVIfdzJaeKDQKEJbz5p3NW8/L80PCATJAfuojwbaEL+gBjfGdhUcGde+WGUW46Q5sr/NgxevsIiDtNXrvZaQ==", - "dev": true + "dev": true, + "requires": {} }, "eslint-plugin-testing-library": { "version": "5.2.1", @@ -7605,7 +28521,8 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true + "dev": true, + "requires": {} }, "idb": { "version": "6.1.5", @@ -9570,7 +30487,8 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", - "dev": true + "dev": true, + "requires": {} }, "jest-regex-util": { "version": "27.5.1", @@ -11154,12 +32072,14 @@ "mobx-react-lite": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/mobx-react-lite/-/mobx-react-lite-2.2.2.tgz", - "integrity": "sha512-2SlXALHIkyUPDsV4VTKVR9DW7K3Ksh1aaIv3NrNJygTbhXe2A9GrcKHZ2ovIiOp/BXilOcTYemfHHZubP431dg==" + "integrity": "sha512-2SlXALHIkyUPDsV4VTKVR9DW7K3Ksh1aaIv3NrNJygTbhXe2A9GrcKHZ2ovIiOp/BXilOcTYemfHHZubP431dg==", + "requires": {} }, "mobx-utils": { "version": "5.6.2", "resolved": "https://registry.npmjs.org/mobx-utils/-/mobx-utils-5.6.2.tgz", - "integrity": "sha512-a/WlXyGkp6F12b01sTarENpxbmlRgPHFyR1Xv2bsSjQBm5dcOtd16ONb40/vOqck8L99NHpI+C9MXQ+SZ8f+yw==" + "integrity": "sha512-a/WlXyGkp6F12b01sTarENpxbmlRgPHFyR1Xv2bsSjQBm5dcOtd16ONb40/vOqck8L99NHpI+C9MXQ+SZ8f+yw==", + "requires": {} }, "moment": { "version": "2.29.2", @@ -11778,7 +32698,8 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz", "integrity": "sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==", - "dev": true + "dev": true, + "requires": {} }, "postcss-calc": { "version": "8.2.4", @@ -11851,7 +32772,8 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.0.tgz", "integrity": "sha512-FvO2GzMUaTN0t1fBULDeIvxr5IvbDXcIatt6pnJghc736nqNgsGao5NT+5+WVLAQiTt6Cb3YUms0jiPaXhL//g==", - "dev": true + "dev": true, + "requires": {} }, "postcss-custom-properties": { "version": "12.1.6", @@ -11884,25 +32806,29 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.1.tgz", "integrity": "sha512-5JscyFmvkUxz/5/+TB3QTTT9Gi9jHkcn8dcmmuN68JQcv3aQg4y88yEHHhwFB52l/NkaJ43O0dbksGMAo49nfQ==", - "dev": true + "dev": true, + "requires": {} }, "postcss-discard-duplicates": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", - "dev": true + "dev": true, + "requires": {} }, "postcss-discard-empty": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", - "dev": true + "dev": true, + "requires": {} }, "postcss-discard-overridden": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", - "dev": true + "dev": true, + "requires": {} }, "postcss-double-position-gradients": { "version": "3.1.1", @@ -11927,7 +32853,8 @@ "version": "5.0.2", "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz", "integrity": "sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==", - "dev": true + "dev": true, + "requires": {} }, "postcss-focus-visible": { "version": "6.0.4", @@ -11951,13 +32878,15 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", - "dev": true + "dev": true, + "requires": {} }, "postcss-gap-properties": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.3.tgz", "integrity": "sha512-rPPZRLPmEKgLk/KlXMqRaNkYTUpE7YC+bOIQFN5xcu1Vp11Y4faIXv6/Jpft6FMnl6YRxZqDZG0qQOW80stzxQ==", - "dev": true + "dev": true, + "requires": {} }, "postcss-image-set-function": { "version": "4.0.6", @@ -11972,7 +32901,8 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz", "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==", - "dev": true + "dev": true, + "requires": {} }, "postcss-js": { "version": "4.0.0", @@ -12018,13 +32948,15 @@ "version": "5.0.4", "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==", - "dev": true + "dev": true, + "requires": {} }, "postcss-media-minmax": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz", "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==", - "dev": true + "dev": true, + "requires": {} }, "postcss-merge-longhand": { "version": "5.1.4", @@ -12092,7 +33024,8 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true + "dev": true, + "requires": {} }, "postcss-modules-local-by-default": { "version": "4.0.0", @@ -12156,7 +33089,8 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", - "dev": true + "dev": true, + "requires": {} }, "postcss-normalize-display-values": { "version": "5.1.0", @@ -12252,13 +33186,15 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.3.tgz", "integrity": "sha512-CxZwoWup9KXzQeeIxtgOciQ00tDtnylYIlJBBODqkgS/PU2jISuWOL/mYLHmZb9ZhZiCaNKsCRiLp22dZUtNsg==", - "dev": true + "dev": true, + "requires": {} }, "postcss-page-break": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", - "dev": true + "dev": true, + "requires": {} }, "postcss-place": { "version": "7.0.4", @@ -12352,7 +33288,8 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", - "dev": true + "dev": true, + "requires": {} }, "postcss-selector-not": { "version": "5.0.0", @@ -12494,9 +33431,10 @@ "dev": true }, "prettier": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", - "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==" + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "dev": true }, "prettier-linter-helpers": { "version": "1.0.0", @@ -13113,7 +34051,8 @@ "react-virtualized-auto-sizer": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.6.tgz", - "integrity": "sha512-7tQ0BmZqfVF6YYEWcIGuoR3OdYe8I/ZFbNclFlGOC3pMqunkYF/oL30NCjSGl9sMEb17AnzixDz98Kqc3N76HQ==" + "integrity": "sha512-7tQ0BmZqfVF6YYEWcIGuoR3OdYe8I/ZFbNclFlGOC3pMqunkYF/oL30NCjSGl9sMEb17AnzixDz98Kqc3N76HQ==", + "requires": {} }, "react-window": { "version": "1.8.6", @@ -13992,6 +34931,15 @@ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", "dev": true }, + "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" + } + }, "string-length": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", @@ -14063,15 +35011,6 @@ "define-properties": "^1.1.3" } }, - "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" - } - }, "stringify-object": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", @@ -14137,7 +35076,8 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", - "dev": true + "dev": true, + "requires": {} }, "stylehacks": { "version": "5.1.0", @@ -15034,7 +35974,8 @@ "version": "8.5.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", - "dev": true + "dev": true, + "requires": {} } } }, @@ -15482,7 +36423,8 @@ "version": "7.5.7", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", - "dev": true + "dev": true, + "requires": {} }, "xml-name-validator": { "version": "3.0.0", diff --git a/client/package.json b/client/package.json index a6e937a5..25dbbee5 100644 --- a/client/package.json +++ b/client/package.json @@ -19,7 +19,6 @@ "mobx-utils": "^5.5.7", "moment": "^2.25.3", "msal": "^1.3.0", - "prettier": "^2.0.5", "react": "^17.0.1", "react-aad-msal": "^2.3.5", "react-dom": "^17.0.1", @@ -42,6 +41,7 @@ "eslint-config-react": "^1.1.7", "eslint-plugin-prettier": "^3.1.3", "eslint-plugin-react": "^7.29.4", + "prettier": "^2.7.1", "react-scripts": "^5.0.0", "typescript": "^4.1.2" }, @@ -50,7 +50,8 @@ "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject", - "lint": "eslint --ext .js --ext .ts --ext .tsx --ignore-path .gitignore --ignore-pattern \"!**/.*\" . --quiet --fix" + "lint": "eslint --ext .js --ext .ts --ext .tsx --ignore-path .gitignore --ignore-pattern \"!**/.*\" . --quiet --fix", + "prettier-format": "prettier --config .prettierrc 'src/**/*.ts' --write" }, "eslintConfig": { "extends": [ diff --git a/client/src/Features/Platform/PlatformPage.tsx b/client/src/Features/Platform/PlatformPage.tsx index 3939f0e5..f607150a 100644 --- a/client/src/Features/Platform/PlatformPage.tsx +++ b/client/src/Features/Platform/PlatformPage.tsx @@ -76,19 +76,20 @@ const PlatformPageInner = ({ styles }: IStylesOnly): JSX.Ele ) : ( // should this div have the "className={classes.content}" too?
- - - { - showAdOrB2C(); - }} > - - -
-

Currently Empty will populate with b2c settings

+ + { + showAdOrB2C(); + }} + > + +
+

Currently Empty will populate with b2c settings

- -
+
): JSX.Ele />
-
)}
@@ -109,16 +109,16 @@ const PlatformPageInner = ({ styles }: IStylesOnly): JSX.Ele }; function showAdOrB2C() { - var checkBox = document.getElementById("myCheck")! as HTMLInputElement; - var b2c_div = document.getElementById("b2c_tenant")!; - var ad_div = document.getElementById("ad_tenant")!; - - if (checkBox.checked == true){ - ad_div.style.display = "none"; - b2c_div.style.display = "block"; + const checkBox = document.getElementById('myCheck')! as HTMLInputElement; + const b2c_div = document.getElementById('b2c_tenant')!; + const ad_div = document.getElementById('ad_tenant')!; + + if (checkBox.checked == true) { + ad_div.style.display = 'none'; + b2c_div.style.display = 'block'; } else { - ad_div.style.display = "block"; - b2c_div.style.display = "none"; + ad_div.style.display = 'block'; + b2c_div.style.display = 'none'; } } From 1c331691c14ece4979c5355aa89de42ea82af4b1 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Fri, 24 Jun 2022 16:06:54 +0100 Subject: [PATCH 004/285] Deploy changes for testing --- deployment/Cleanup.ps1 | 4 ++-- deployment/Deploy.ps1 | 4 ++-- deployment/azuredeploy.json | 3 +-- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/deployment/Cleanup.ps1 b/deployment/Cleanup.ps1 index a9e43c52..1eeb9aaa 100644 --- a/deployment/Cleanup.ps1 +++ b/deployment/Cleanup.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "MSLearnLTI", - [string]$AppName = "MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "DM_Dev_MSLearnLTI3", + [string]$AppName = "DM-Dev-MS-Learn-Lti-Tool-App3", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null ) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 59e33c72..2690d373 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "MSLearnLTI", - [string]$AppName = "MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "DM_Dev_MSLearnLTI3", + [string]$AppName = "DM-Dev-MS-Learn-Lti-Tool-App3", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null diff --git a/deployment/azuredeploy.json b/deployment/azuredeploy.json index 29e22aec..d07d6f8e 100644 --- a/deployment/azuredeploy.json +++ b/deployment/azuredeploy.json @@ -367,8 +367,7 @@ "enabledForDeployment": "[variables('enabledForDeployment')]", "enabledForDiskEncryption": "[variables('enabledForDiskEncryption')]", "enabledForTemplateDeployment": "[variables('enabledForTemplateDeployment')]", - "enableSoftDelete": true, - "enablePurgeProtection": true, + "enableSoftDelete": false, "tenantId": "[variables('tenantId')]", "accessPolicies": [ { From 5cb7248e9dfa98a8bc3e04396f9c5d6dea3d082f Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Mon, 27 Jun 2022 14:17:19 +0100 Subject: [PATCH 005/285] commit with minimal changes --- client/.env.production | 18 +++++++++--------- client/src/Core/Auth/AppAuthConfig.ts | 12 +++++++----- client/src/Core/Auth/policies.ts | 18 ++++++++++++++++++ deployment/Cleanup.ps1 | 4 ++-- deployment/Deploy.ps1 | 4 ++-- 5 files changed, 38 insertions(+), 18 deletions(-) create mode 100644 client/src/Core/Auth/policies.ts diff --git a/client/.env.production b/client/.env.production index 05932ba1..4b3bcb57 100644 --- a/client/.env.production +++ b/client/.env.production @@ -1,10 +1,10 @@ GENERATE_SOURCEMAP='false' -REACT_APP_EDNA_PLATFORM_SERVICE_URL='https://edna-lti-ab-platfomrs.azurewebsites.net/api' -REACT_APP_EDNA_USERS_SERVICE_URL='https://edna-lti-ab-users.azurewebsites.net/api' -REACT_APP_EDNA_LEARN_CONTENT='https://edna-lti-ab-learncontent.azurewebsites.net/api' -REACT_APP_EDNA_LINKS_SERVICE_URL='https://edna-lti-ab-links.azurewebsites.net/api' -REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL='https://edna-lti-ab-assignments.azurewebsites.net/api' -REACT_APP_EDNA_TENANT_ID='72f988bf-86f1-41af-91ab-2d7cd011db47' -REACT_APP_EDNA_DEFAULT_SCOPE='api://d41fd017-4c7d-4867-ac93-3cac32d3f7a9/default' -REACT_APP_EDNA_MAIN_URL='https://ednaltiabclient.z23.web.core.windows.net/' -REACT_APP_EDNA_AAD_CLIENT_ID='d41fd017-4c7d-4867-ac93-3cac32d3f7a9' +REACT_APP_EDNA_PLATFORM_SERVICE_URL='https://platforms-korkom27p.azurewebsites.net/api' +REACT_APP_EDNA_USERS_SERVICE_URL='https://users-korkom27p.azurewebsites.net/api' +REACT_APP_EDNA_LEARN_CONTENT='https://learncontent-korkom27p.azurewebsites.net/api' +REACT_APP_EDNA_LINKS_SERVICE_URL='https://links-korkom27p.azurewebsites.net/api' +REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL='https://assignments-korkom27p.azurewebsites.net/api' +REACT_APP_EDNA_TENANT_ID='21510bb9-6414-46d0-9a07-1faf98f25937' +REACT_APP_EDNA_DEFAULT_SCOPE='api://af192e3d-919b-4d69-b11e-39979c65606d/user_impersonation' +REACT_APP_EDNA_MAIN_URL='https://learnclientkorkom27p.z33.web.core.windows.net/' +REACT_APP_EDNA_AAD_CLIENT_ID='af192e3d-919b-4d69-b11e-39979c65606d' diff --git a/client/src/Core/Auth/AppAuthConfig.ts b/client/src/Core/Auth/AppAuthConfig.ts index 34f17d12..3fceb238 100644 --- a/client/src/Core/Auth/AppAuthConfig.ts +++ b/client/src/Core/Auth/AppAuthConfig.ts @@ -5,6 +5,7 @@ import { MsalAuthProvider, LoginType, IMsalAuthProviderConfig } from 'react-aad-msal'; import { Configuration, Logger, LogLevel, AuthenticationParameters } from 'msal'; +import { b2cPolicies } from './policies'; const authLogCallback = (level: LogLevel, message: string, _containsPii: boolean): void => { // Not setting the log at all, will cause the an exception in the UserAgentApplication. @@ -16,10 +17,11 @@ const authLogCallback = (level: LogLevel, message: string, _containsPii: boolean const configuration: Configuration = { auth: { - clientId: process.env.REACT_APP_EDNA_AAD_CLIENT_ID!, - redirectUri: process.env.REACT_APP_EDNA_MAIN_URL!, - authority: `https://login.microsoftonline.com/${process.env.REACT_APP_EDNA_TENANT_ID}`, - navigateToLoginRequestUrl: true + clientId: 'e5642ae2-5178-4b6f-9653-d80f6f47fcf0', // RB: don't hardcode + redirectUri: process.env.REACT_APP_EDNA_MAIN_URL!, + authority: b2cPolicies.authorities.signUpSignIn.authority, + navigateToLoginRequestUrl: true, + knownAuthorities: [b2cPolicies.authorityDomain] }, cache: { cacheLocation: 'localStorage', @@ -31,7 +33,7 @@ const configuration: Configuration = { }; const authParams: AuthenticationParameters = { - scopes: [process.env.REACT_APP_EDNA_DEFAULT_SCOPE!] + scopes: ['https://uclmscltib2c.onmicrosoft.com/e5642ae2-5178-4b6f-9653-d80f6f47fcf0/demo.read'] // RB: configure B2C here }; const options: IMsalAuthProviderConfig = { diff --git a/client/src/Core/Auth/policies.ts b/client/src/Core/Auth/policies.ts new file mode 100644 index 00000000..1f41a12e --- /dev/null +++ b/client/src/Core/Auth/policies.ts @@ -0,0 +1,18 @@ +/** + * Enter here the user flows and custom policies for your B2C application + * To learn more about user flows, visit: https://docs.microsoft.com/en-us/azure/active-directory-b2c/user-flow-overview + * To learn more about custom policies, visit: https://docs.microsoft.com/en-us/azure/active-directory-b2c/custom-policy-overview + */ +export const b2cPolicies = { + names: { + signUpSignIn: 'B2C_1_Dummy_Test_sign' // RB make not hardcoded + }, + authorities: { + signUpSignIn: { + // RB not sure if i have to modify this + authority: 'https://uclmscltib2c.b2clogin.com/uclmscltib2c.onmicrosoft.com/B2C_1_Dummy_Test_sign' + //https://uclmscltib2c.b2clogin.com/uclmscltib2c.onmicrosoft.com/oauth2/v2.0/authorize?p=B2C_1_Dummy_Test_sign&client_id=9cb02f8b-244d-4c34-904f-72633041512a&nonce=defaultNonce&redirect_uri=http%3A%2F%2Flocalhost%3A6420%2F&scope=openid&response_type=id_token&prompt=login + } + }, + authorityDomain: 'uclmscltib2c.b2clogin.com' // RB: don't hardcode +}; diff --git a/deployment/Cleanup.ps1 b/deployment/Cleanup.ps1 index a9e43c52..6382b457 100644 --- a/deployment/Cleanup.ps1 +++ b/deployment/Cleanup.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "MSLearnLTI", - [string]$AppName = "MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "RB_cloudT2_MSLearnLTI", + [string]$AppName = "RB_cloudT2_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null ) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 59e33c72..76cc91fd 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "MSLearnLTI", - [string]$AppName = "MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "RB_cloudT2_MSLearnLTI", + [string]$AppName = "RB_cloudT2_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null From d981ce2264e494871b2bffd6ec4f0da72b1e5562 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Mon, 27 Jun 2022 14:52:31 +0100 Subject: [PATCH 006/285] Created Custom Policy Templates with Placeholders for the custom values that are then replaced by the new UploadCustomPolicies.ps12 --- deployment/Cleanup.ps1 | 4 +- deployment/CustomPolicy/PASSWORDRESET.xml | 22 + deployment/CustomPolicy/PROFILEEDIT.xml | 21 + deployment/CustomPolicy/SIGNUP_SIGNIN.xml | 26 + .../CustomPolicy/TRUSTFRAMEWORKBASE.xml | 1076 +++++++++++++++++ .../CustomPolicy/TRUSTFRAMEWORKEXTENSIONS.xml | 172 +++ .../TRUSTFRAMEWORKLOCALIZATION.xml | 239 ++++ .../CustomPolicyTemplates/PASSWORDRESET.xml | 19 + .../CustomPolicyTemplates/PROFILEEDIT.xml | 18 + .../CustomPolicyTemplates/SIGNUP_SIGNIN.xml | 23 + .../TRUSTFRAMEWORKBASE.xml | 1073 ++++++++++++++++ .../TRUSTFRAMEWORKEXTENSIONS.xml | 169 +++ .../TRUSTFRAMEWORKLOCALIZATION.xml | 236 ++++ deployment/Deploy.ps1 | 4 +- deployment/UploadCustomPolicies.ps1 | 27 + 15 files changed, 3125 insertions(+), 4 deletions(-) create mode 100644 deployment/CustomPolicy/PASSWORDRESET.xml create mode 100644 deployment/CustomPolicy/PROFILEEDIT.xml create mode 100644 deployment/CustomPolicy/SIGNUP_SIGNIN.xml create mode 100644 deployment/CustomPolicy/TRUSTFRAMEWORKBASE.xml create mode 100644 deployment/CustomPolicy/TRUSTFRAMEWORKEXTENSIONS.xml create mode 100644 deployment/CustomPolicy/TRUSTFRAMEWORKLOCALIZATION.xml create mode 100644 deployment/CustomPolicyTemplates/PASSWORDRESET.xml create mode 100644 deployment/CustomPolicyTemplates/PROFILEEDIT.xml create mode 100644 deployment/CustomPolicyTemplates/SIGNUP_SIGNIN.xml create mode 100644 deployment/CustomPolicyTemplates/TRUSTFRAMEWORKBASE.xml create mode 100644 deployment/CustomPolicyTemplates/TRUSTFRAMEWORKEXTENSIONS.xml create mode 100644 deployment/CustomPolicyTemplates/TRUSTFRAMEWORKLOCALIZATION.xml create mode 100644 deployment/UploadCustomPolicies.ps1 diff --git a/deployment/Cleanup.ps1 b/deployment/Cleanup.ps1 index 1eeb9aaa..90d21780 100644 --- a/deployment/Cleanup.ps1 +++ b/deployment/Cleanup.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "DM_Dev_MSLearnLTI3", - [string]$AppName = "DM-Dev-MS-Learn-Lti-Tool-App3", + [string]$ResourceGroupName = "DM_Dev_MSLearnLTI6", + [string]$AppName = "DM-Dev-MS-Learn-Lti-Tool-App6", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null ) diff --git a/deployment/CustomPolicy/PASSWORDRESET.xml b/deployment/CustomPolicy/PASSWORDRESET.xml new file mode 100644 index 00000000..a5f79ac4 --- /dev/null +++ b/deployment/CustomPolicy/PASSWORDRESET.xml @@ -0,0 +1,22 @@ + + + a.onmicrosoft.com + B2C_1A_TrustFrameworkExtensions + + + + + PolicyProfile + + + + + + + + + + + + + diff --git a/deployment/CustomPolicy/PROFILEEDIT.xml b/deployment/CustomPolicy/PROFILEEDIT.xml new file mode 100644 index 00000000..26acdf85 --- /dev/null +++ b/deployment/CustomPolicy/PROFILEEDIT.xml @@ -0,0 +1,21 @@ + + + a.onmicrosoft.com + B2C_1A_TrustFrameworkExtensions + + + + + PolicyProfile + + + + + + + + + + + + diff --git a/deployment/CustomPolicy/SIGNUP_SIGNIN.xml b/deployment/CustomPolicy/SIGNUP_SIGNIN.xml new file mode 100644 index 00000000..b1976881 --- /dev/null +++ b/deployment/CustomPolicy/SIGNUP_SIGNIN.xml @@ -0,0 +1,26 @@ + + + a.onmicrosoft.com + B2C_1A_TrustFrameworkExtensions + + + + + PolicyProfile + + + + + + + + + + + + + + + + + diff --git a/deployment/CustomPolicy/TRUSTFRAMEWORKBASE.xml b/deployment/CustomPolicy/TRUSTFRAMEWORKBASE.xml new file mode 100644 index 00000000..c34747bf --- /dev/null +++ b/deployment/CustomPolicy/TRUSTFRAMEWORKBASE.xml @@ -0,0 +1,1076 @@ + + + + + + + + + Username + string + + TextBox + + + + + + User's Object's Tenant ID + string + + + + + + Tenant identifier (ID) of the user object in Azure AD. + + + User's Object ID + string + + + + + + Object identifier (ID) of the user object in Azure AD. + + + + Sign in name + string + + TextBox + + + Email Address + string + Email address to use for signing in. + TextBox + + + Account Enabled + boolean + Specifies whether the user's account is enabled. + Specifies whether your account is enabled. + + + Password + string + Enter password + Password + + + + New Password + string + Enter new password + Password + + + + + + + Confirm New Password + string + Confirm new password + Password + + + + + + Password Policies + string + Password policies used by Azure AD to determine password strength, expiry etc. + + + client_id + string + Special parameter passed to EvoSTS. + Special parameter passed to EvoSTS. + + + resource_id + string + Special parameter passed to EvoSTS. + Special parameter passed to EvoSTS. + + + Subject + string + + + + + + + AlternativeSecurityId + string + + + + MailNickName + string + Your mail nick name as stored in the Azure Active Directory. + + + Identity Provider + string + + + + + + + + + Display Name + string + + + + + + Your display name. + TextBox + + + Email Address + string + + + + Email address that can be used to contact you. + TextBox + + + + + + Alternate Email Addresses + stringCollection + Email addresses that can be used to contact the user. + + + UserPrincipalName + string + + + + + + Your user name as stored in the Azure Active Directory. + + + UPN User Name + string + The user name for creating user principal name. + + + User is new + boolean + + + + Executed-SelfAsserted-Input + string + A claim that specifies whether attributes were collected from the user. + + + AuthenticationSource + string + Specifies whether the user was authenticated at Social IDP or local account. + + + + nca + string + Special parameter passed for local account authentication to login.microsoftonline.com. + + + grant_type + string + Special parameter passed for local account authentication to login.microsoftonline.com. + + + scope + string + Special parameter passed for local account authentication to login.microsoftonline.com. + + + objectIdFromSession + boolean + Parameter provided by the default session management provider to indicate that the object id has been retrieved from an SSO session. + + + isActiveMFASession + boolean + Parameter provided by the MFA session management to indicate that the user has an active MFA session. + + + + Given Name + string + + + + + + Your given name (also known as first name). + TextBox + + + Surname + string + + + + + + Your surname (also known as family name or last name). + TextBox + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LineMarkers, MetaRefresh + + + + + + ~/tenant/templates/AzureBlue/exception.cshtml + ~/common/default_page_error.html + urn:com:microsoft:aad:b2c:elements:contract:globalexception:1.2.1 + + Error page + + + + ~/tenant/templates/AzureBlue/idpSelector.cshtml + ~/common/default_page_error.html + urn:com:microsoft:aad:b2c:elements:contract:providerselection:1.2.1 + + Idp selection page + Sign in + + + + ~/tenant/templates/AzureBlue/idpSelector.cshtml + ~/common/default_page_error.html + urn:com:microsoft:aad:b2c:elements:contract:providerselection:1.2.1 + + Idp selection page + Sign up + + + + ~/tenant/templates/AzureBlue/unified.cshtml + ~/common/default_page_error.html + urn:com:microsoft:aad:b2c:elements:contract:unifiedssp:2.1.5 + + Signin and Signup + + + + ~/tenant/templates/AzureBlue/selfAsserted.cshtml + ~/common/default_page_error.html + urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.7 + + Collect information from user page + + + + ~/tenant/templates/AzureBlue/selfAsserted.cshtml + ~/common/default_page_error.html + urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.7 + + Collect information from user page + + + + ~/tenant/templates/AzureBlue/selfAsserted.cshtml + ~/common/default_page_error.html + urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.7 + + Local account sign up page + + + + ~/tenant/templates/AzureBlue/selfAsserted.cshtml + ~/common/default_page_error.html + urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.7 + + Local account change password page + + + + ~/tenant/templates/AzureBlue/selfAsserted.cshtml + ~/common/default_page_error.html + urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.7 + + Collect information from user page + + + + ~/tenant/templates/AzureBlue/selfAsserted.cshtml + ~/common/default_page_error.html + urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.7 + + Collect information from user page + + + + + + + + + facebook.com + Facebook + + + + Facebook + + + facebook + https://www.facebook.com/dialog/oauth + https://graph.facebook.com/oauth/access_token + GET + 0 + + json + + + + + + + + + + + + + + + + + + + + + + + + + Local Account SignIn + + + Local Account SignIn + + + https://sts.windows.net/ + https://login.microsoftonline.com/{tenant}/.well-known/openid-configuration + https://login.microsoftonline.com/{tenant}/oauth2/token + id_token + query + email openid + + + false + POST + + + + + + + + + + + + + + + + + + + + + + Azure Active Directory + + + Azure Active Directory + + + + + + false + + + + + + Write + true + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Read + true + + + + + + + + + + + + + + + + + + + false + + + + + + + Write + true + + false + + + + + + + + + + + + + + + + + + + + + + + + + + Read + true + + false + + + + + + + + + + + + + + + + + + + + + + Write + true + + false + + + + + + + + + + + + + Write + false + true + + false + + + + + + + + + + + + + + + + Read + true + + false + + + + + + + + + + + + + + + + + Self Asserted + + + User ID signup + + + api.socialccountsignup + + + + + + + + + + + + + + + + + + + + + + + + + + + User ID signup + + + api.selfasserted.profileupdate + + false + + + + + + + + + + + + + + + + + + + + + + Local Account + + + Email signup + + + IpAddress + api.localaccountsignup + + + + + + + + + + + + + + + + + + + + + + + + + + + + Local Account Signin + + + SignUpWithLogonEmailExchange + Email + api.localaccountsignin + true + + false + + + + + + + + + + + + + + + + + Reset password using email address + + + IpAddress + api.localaccountpasswordreset + + + + + false + + + + + + + + + + + + Change password (username) + + + api.localaccountpasswordreset + + + + + + + + + + + + + + + + + + + Session Management + + + Noop Session Management Provider + + + + Session Mananagement Provider + + + + + + + + + + + + + + + + + + + Session Mananagement Provider + + + true + + + + + + + + Session Management Provider + + + + + + Trustframework Policy Engine TechnicalProfiles + + + Trustframework Policy Engine Default Technical Profile + + + {service:te} + + + + + + Token Issuer + + + JWT Issuer + + JWT + + {service:te} + objectId + true + + + + + + + + + + + + + + + + + + + + + + + + + + + objectId + SkipThisOrchestrationStep + + + + + + + + + + + + authenticationSource + localAccountAuthentication + SkipThisOrchestrationStep + + + + + + + + + + + objectId + SkipThisOrchestrationStep + + + + + + + + + + + authenticationSource + socialIdpAuthentication + SkipThisOrchestrationStep + + + + + + + + + + + objectId + SkipThisOrchestrationStep + + + + + + + + + + + + + + + + + + + + + + + + + + + + authenticationSource + localAccountAuthentication + SkipThisOrchestrationStep + + + + + + + + + + authenticationSource + socialIdpAuthentication + SkipThisOrchestrationStep + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deployment/CustomPolicy/TRUSTFRAMEWORKEXTENSIONS.xml b/deployment/CustomPolicy/TRUSTFRAMEWORKEXTENSIONS.xml new file mode 100644 index 00000000..5609ca74 --- /dev/null +++ b/deployment/CustomPolicy/TRUSTFRAMEWORKEXTENSIONS.xml @@ -0,0 +1,172 @@ + + + a.onmicrosoft.com + B2C_1A_TrustFrameworkLocalization + + + + + commonaad + Common AAD + + + Multi-Tenant AAD + Login with your Contoso account + + + https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration + + ce332c27-6a9b-4bfe-abf8-8584c9cebbcc + code + openid profile + form_post + POST + false + true + + + + https://login.microsoftonline.com/ + + + + + + + + + + + + + + + + + + + + + + + + + + Facebook + + + + 447221790099527 + email public_profile + https://graph.facebook.com/me?fields=id,first_name,last_name,name,email + + + + + + Local Account SignIn + + + + aa4dd984-98c2-4ef8-a62e-f38557106c34 + e04dd15b-db74-48f6-84ff-a78c8cf6646c + + + + + + + + + + + + + + + + + + + + + + + + + + + objectId + SkipThisOrchestrationStep + + + + + + + + + + + + + authenticationSource + localAccountAuthentication + SkipThisOrchestrationStep + + + + + + + + + + + objectId + SkipThisOrchestrationStep + + + + + + + + + + + authenticationSource + socialIdpAuthentication + SkipThisOrchestrationStep + + + + + + + + + + + objectId + SkipThisOrchestrationStep + + + + + + + + + + + + + + + diff --git a/deployment/CustomPolicy/TRUSTFRAMEWORKLOCALIZATION.xml b/deployment/CustomPolicy/TRUSTFRAMEWORKLOCALIZATION.xml new file mode 100644 index 00000000..cc022e91 --- /dev/null +++ b/deployment/CustomPolicy/TRUSTFRAMEWORKLOCALIZATION.xml @@ -0,0 +1,239 @@ + + + a.onmicrosoft.com + B2C_1A_TrustFrameworkBase + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + en + + + + Email Address + Sign in + Sign in with your social account + Sign in with your {0} + Password + Please enter your password + Please enter your {0} + Please enter a valid {0} + Sign up now + Sign up with {0} or {1} + Sign up with {0}, {1}, or {2} + Forgot your password? + Sign in + OR + Don't have an account? + We are having trouble signing you in. Please try again later. + + Facebook + Your password is incorrect. + Your password is incorrect. + Your password has expired. + We can't seem to find your account. + Looks like you used an old password. + Invalid username or password. + Your account has been locked. Contact your support person to unlock it, then try again. + Your account is temporarily locked to prevent unauthorized use. Try again later. + There are too many requests at this moment. Please wait for some time and try again. + + + + + + Email Address + Email address that can be used to contact you. + Please enter a valid email address. + New Password + Enter new password + 8-16 characters, containing 3 out of 4 of the following: Lowercase characters, uppercase characters, digits (0-9), and one or more of the following symbols: @ # $ % ^ & * - _ + = [ ] { } | \ : ' , ? / ` ~ " ( ) ; . + Confirm New Password + Confirm new password + 8-16 characters, containing 3 out of 4 of the following: Lowercase characters, uppercase characters, digits (0-9), and one or more of the following symbols: @ # $ % ^ & * - _ + = [ ] { } | \ : ' , ? / ` ~ " ( ) ; . + Display Name + Your display name. + Surname + Your surname (also known as family name or last name). + Given Name + Your given name (also known as first name). + Create + One or more fields are filled out incorrectly. Please check your entries and try again. + The password entry fields do not match. Please enter the same password in both fields and try again. + A required field is missing. Please fill out all required fields and try again. + What is this? + Please provide the following details. + Please wait + This information is required. + Cancel + Change e-mail + Send new code + Send verification code + Verify code + That code is expired. Please request a new code. + You've made too many incorrect attempts. Please try again later. + That code is incorrect. Please try again. + We are having trouble verifying your email address. Please enter a valid email address and try again. + There have been too many requests to verify this email address. Please wait a while, then try again. + Verification code has been sent to your inbox. Please copy it to the input box below. + Verification code + Verification is necessary. Please click Send button. + E-mail address verified. You can now continue. + There are too many requests at this moment. Please wait for some time and try again. + Claim not verified: {0} + A user with the specified ID already exists. Please choose a different one. + Incorrect pattern for: {0} + {0} has invalid input. + Missing required element: {0} + Error in validation by: {0} + + + + + + Email Address + Email address that can be used to contact you. + Please enter a valid email address. + Display Name + Your display name. + Surname + Your surname (also known as family name or last name). + Given Name + Your given name (also known as first name). + Create + Cancel + You are already registered, please press the back button and sign in instead. + + + + + + Email Address + Email address that can be used to contact you. + Please enter a valid email address. + New Password + Enter new password + 8-16 characters, containing 3 out of 4 of the following: Lowercase characters, uppercase characters, digits (0-9), and one or more of the following symbols: @ # $ % ^ & * - _ + = [ ] { } | \ : ' , ? / ` ~ " ( ) ; . + Confirm New Password + Confirm new password + 8-16 characters, containing 3 out of 4 of the following: Lowercase characters, uppercase characters, digits (0-9), and one or more of the following symbols: @ # $ % ^ & * - _ + = [ ] { } | \ : ' , ? / ` ~ " ( ) ; . + The password entry fields do not match. Please enter the same password in both fields and try again. + One or more fields are filled out incorrectly. Please check your entries and try again. + Continue + Cancel + An account could not be found for the provided user ID. + Your account has been locked. Contact your support person to unlock it, then try again. + This information is required. + Change e-mail + Send new code + Send verification code + Verify code + That code is expired. Please request a new code. + You've made too many incorrect attempts. Please try again later. + That code is incorrect. Please try again. + We are having trouble verifying your email address. Please enter a valid email address and try again. + There have been too many requests to verify this email address. Please wait a while, then try again. + Verification code has been sent to your inbox. Please copy it to the input box below. + Verification code + Verification is necessary. Please click Send button. + E-mail address verified. You can now continue. + There are too many requests at this moment. Please wait for some time and try again. + Claim not verified: {0} + A user with the specified ID already exists. Please choose a different one. + Incorrect pattern for: {0} + {0} has invalid input. + Missing required element: {0} + Error in validation by: {0} + + + + + + Sign in + Local Account Signin + Facebook + + + + + + Email Address + Password + Continue + Cancel + Your password is incorrect. + Your password is incorrect. + Your password has expired. + We can't seem to find your account. + Looks like you used an old password. + Invalid username or password. + Your account has been locked. Contact your support person to unlock it, then try again. + Your account is temporarily locked to prevent unauthorized use. Try again later. + There are too many requests at this moment. Please wait for some time and try again. + + + + + + Display Name + Your display name. + Surname + Your surname (also known as family name or last name). + Given Name + Your given name (also known as first name). + Continue + Cancel + + + + + + + + + diff --git a/deployment/CustomPolicyTemplates/PASSWORDRESET.xml b/deployment/CustomPolicyTemplates/PASSWORDRESET.xml new file mode 100644 index 00000000..3a7145ee --- /dev/null +++ b/deployment/CustomPolicyTemplates/PASSWORDRESET.xml @@ -0,0 +1,19 @@ + + + <>.onmicrosoft.com + B2C_1A_TrustFrameworkExtensions + + + + + PolicyProfile + + + + + + + + + + \ No newline at end of file diff --git a/deployment/CustomPolicyTemplates/PROFILEEDIT.xml b/deployment/CustomPolicyTemplates/PROFILEEDIT.xml new file mode 100644 index 00000000..517d65fd --- /dev/null +++ b/deployment/CustomPolicyTemplates/PROFILEEDIT.xml @@ -0,0 +1,18 @@ + + + <>.onmicrosoft.com + B2C_1A_TrustFrameworkExtensions + + + + + PolicyProfile + + + + + + + + + \ No newline at end of file diff --git a/deployment/CustomPolicyTemplates/SIGNUP_SIGNIN.xml b/deployment/CustomPolicyTemplates/SIGNUP_SIGNIN.xml new file mode 100644 index 00000000..cd1d8d12 --- /dev/null +++ b/deployment/CustomPolicyTemplates/SIGNUP_SIGNIN.xml @@ -0,0 +1,23 @@ + + + <>.onmicrosoft.com + B2C_1A_TrustFrameworkExtensions + + + + + PolicyProfile + + + + + + + + + + + + + + \ No newline at end of file diff --git a/deployment/CustomPolicyTemplates/TRUSTFRAMEWORKBASE.xml b/deployment/CustomPolicyTemplates/TRUSTFRAMEWORKBASE.xml new file mode 100644 index 00000000..f43713c2 --- /dev/null +++ b/deployment/CustomPolicyTemplates/TRUSTFRAMEWORKBASE.xml @@ -0,0 +1,1073 @@ + + + + + + + + + Username + string + + TextBox + + + + + + User's Object's Tenant ID + string + + + + + + Tenant identifier (ID) of the user object in Azure AD. + + + User's Object ID + string + + + + + + Object identifier (ID) of the user object in Azure AD. + + + + Sign in name + string + + TextBox + + + Email Address + string + Email address to use for signing in. + TextBox + + + Account Enabled + boolean + Specifies whether the user's account is enabled. + Specifies whether your account is enabled. + + + Password + string + Enter password + Password + + + + New Password + string + Enter new password + Password + + + + + + + Confirm New Password + string + Confirm new password + Password + + + + + + Password Policies + string + Password policies used by Azure AD to determine password strength, expiry etc. + + + client_id + string + Special parameter passed to EvoSTS. + Special parameter passed to EvoSTS. + + + resource_id + string + Special parameter passed to EvoSTS. + Special parameter passed to EvoSTS. + + + Subject + string + + + + + + + AlternativeSecurityId + string + + + + MailNickName + string + Your mail nick name as stored in the Azure Active Directory. + + + Identity Provider + string + + + + + + + + + Display Name + string + + + + + + Your display name. + TextBox + + + Email Address + string + + + + Email address that can be used to contact you. + TextBox + + + + + + Alternate Email Addresses + stringCollection + Email addresses that can be used to contact the user. + + + UserPrincipalName + string + + + + + + Your user name as stored in the Azure Active Directory. + + + UPN User Name + string + The user name for creating user principal name. + + + User is new + boolean + + + + Executed-SelfAsserted-Input + string + A claim that specifies whether attributes were collected from the user. + + + AuthenticationSource + string + Specifies whether the user was authenticated at Social IDP or local account. + + + + nca + string + Special parameter passed for local account authentication to login.microsoftonline.com. + + + grant_type + string + Special parameter passed for local account authentication to login.microsoftonline.com. + + + scope + string + Special parameter passed for local account authentication to login.microsoftonline.com. + + + objectIdFromSession + boolean + Parameter provided by the default session management provider to indicate that the object id has been retrieved from an SSO session. + + + isActiveMFASession + boolean + Parameter provided by the MFA session management to indicate that the user has an active MFA session. + + + + Given Name + string + + + + + + Your given name (also known as first name). + TextBox + + + Surname + string + + + + + + Your surname (also known as family name or last name). + TextBox + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LineMarkers, MetaRefresh + + + + + + ~/tenant/templates/AzureBlue/exception.cshtml + ~/common/default_page_error.html + urn:com:microsoft:aad:b2c:elements:contract:globalexception:1.2.1 + + Error page + + + + ~/tenant/templates/AzureBlue/idpSelector.cshtml + ~/common/default_page_error.html + urn:com:microsoft:aad:b2c:elements:contract:providerselection:1.2.1 + + Idp selection page + Sign in + + + + ~/tenant/templates/AzureBlue/idpSelector.cshtml + ~/common/default_page_error.html + urn:com:microsoft:aad:b2c:elements:contract:providerselection:1.2.1 + + Idp selection page + Sign up + + + + ~/tenant/templates/AzureBlue/unified.cshtml + ~/common/default_page_error.html + urn:com:microsoft:aad:b2c:elements:contract:unifiedssp:2.1.5 + + Signin and Signup + + + + ~/tenant/templates/AzureBlue/selfAsserted.cshtml + ~/common/default_page_error.html + urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.7 + + Collect information from user page + + + + ~/tenant/templates/AzureBlue/selfAsserted.cshtml + ~/common/default_page_error.html + urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.7 + + Collect information from user page + + + + ~/tenant/templates/AzureBlue/selfAsserted.cshtml + ~/common/default_page_error.html + urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.7 + + Local account sign up page + + + + ~/tenant/templates/AzureBlue/selfAsserted.cshtml + ~/common/default_page_error.html + urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.7 + + Local account change password page + + + + ~/tenant/templates/AzureBlue/selfAsserted.cshtml + ~/common/default_page_error.html + urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.7 + + Collect information from user page + + + + ~/tenant/templates/AzureBlue/selfAsserted.cshtml + ~/common/default_page_error.html + urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.7 + + Collect information from user page + + + + + + + + + facebook.com + Facebook + + + + Facebook + + + facebook + https://www.facebook.com/dialog/oauth + https://graph.facebook.com/oauth/access_token + GET + 0 + + json + + + + + + + + + + + + + + + + + + + + + + + + + Local Account SignIn + + + Local Account SignIn + + + https://sts.windows.net/ + https://login.microsoftonline.com/{tenant}/.well-known/openid-configuration + https://login.microsoftonline.com/{tenant}/oauth2/token + id_token + query + email openid + + + false + POST + + + + + + + + + + + + + + + + + + + + + + Azure Active Directory + + + Azure Active Directory + + + + + + false + + + + + + Write + true + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Read + true + + + + + + + + + + + + + + + + + + + false + + + + + + + Write + true + + false + + + + + + + + + + + + + + + + + + + + + + + + + + Read + true + + false + + + + + + + + + + + + + + + + + + + + + + Write + true + + false + + + + + + + + + + + + + Write + false + true + + false + + + + + + + + + + + + + + + + Read + true + + false + + + + + + + + + + + + + + + + + Self Asserted + + + User ID signup + + + api.socialccountsignup + + + + + + + + + + + + + + + + + + + + + + + + + + + User ID signup + + + api.selfasserted.profileupdate + + false + + + + + + + + + + + + + + + + + + + + + + Local Account + + + Email signup + + + IpAddress + api.localaccountsignup + + + + + + + + + + + + + + + + + + + + + + + + + + + + Local Account Signin + + + SignUpWithLogonEmailExchange + Email + api.localaccountsignin + true + + false + + + + + + + + + + + + + + + + + Reset password using email address + + + IpAddress + api.localaccountpasswordreset + + + + + false + + + + + + + + + + + + Change password (username) + + + api.localaccountpasswordreset + + + + + + + + + + + + + + + + + + + Session Management + + + Noop Session Management Provider + + + + Session Mananagement Provider + + + + + + + + + + + + + + + + + + + Session Mananagement Provider + + + true + + + + + + + + Session Management Provider + + + + + + Trustframework Policy Engine TechnicalProfiles + + + Trustframework Policy Engine Default Technical Profile + + + {service:te} + + + + + + Token Issuer + + + JWT Issuer + + JWT + + {service:te} + objectId + true + + + + + + + + + + + + + + + + + + + + + + + + + + + objectId + SkipThisOrchestrationStep + + + + + + + + + + + + authenticationSource + localAccountAuthentication + SkipThisOrchestrationStep + + + + + + + + + + + objectId + SkipThisOrchestrationStep + + + + + + + + + + + authenticationSource + socialIdpAuthentication + SkipThisOrchestrationStep + + + + + + + + + + + objectId + SkipThisOrchestrationStep + + + + + + + + + + + + + + + + + + + + + + + + + + + + authenticationSource + localAccountAuthentication + SkipThisOrchestrationStep + + + + + + + + + + authenticationSource + socialIdpAuthentication + SkipThisOrchestrationStep + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/deployment/CustomPolicyTemplates/TRUSTFRAMEWORKEXTENSIONS.xml b/deployment/CustomPolicyTemplates/TRUSTFRAMEWORKEXTENSIONS.xml new file mode 100644 index 00000000..929567f3 --- /dev/null +++ b/deployment/CustomPolicyTemplates/TRUSTFRAMEWORKEXTENSIONS.xml @@ -0,0 +1,169 @@ + + + <>.onmicrosoft.com + B2C_1A_TrustFrameworkLocalization + + + + + commonaad + Common AAD + + + Multi-Tenant AAD + Login with your Contoso account + + + https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration + + ce332c27-6a9b-4bfe-abf8-8584c9cebbcc + code + openid profile + form_post + POST + false + true + + + + https://login.microsoftonline.com/ + + + + + + + + + + + + + + + + + + + + + + + + + + Facebook + + + + 447221790099527 + email public_profile + https://graph.facebook.com/me?fields=id,first_name,last_name,name,email + + + + + + Local Account SignIn + + + + aa4dd984-98c2-4ef8-a62e-f38557106c34 + e04dd15b-db74-48f6-84ff-a78c8cf6646c + + + + + + + + + + + + + + + + + + + + + + + + + + + objectId + SkipThisOrchestrationStep + + + + + + + + + + + + + authenticationSource + localAccountAuthentication + SkipThisOrchestrationStep + + + + + + + + + + + objectId + SkipThisOrchestrationStep + + + + + + + + + + + authenticationSource + socialIdpAuthentication + SkipThisOrchestrationStep + + + + + + + + + + + objectId + SkipThisOrchestrationStep + + + + + + + + + + + + \ No newline at end of file diff --git a/deployment/CustomPolicyTemplates/TRUSTFRAMEWORKLOCALIZATION.xml b/deployment/CustomPolicyTemplates/TRUSTFRAMEWORKLOCALIZATION.xml new file mode 100644 index 00000000..978a41d6 --- /dev/null +++ b/deployment/CustomPolicyTemplates/TRUSTFRAMEWORKLOCALIZATION.xml @@ -0,0 +1,236 @@ + + + <>.onmicrosoft.com + B2C_1A_TrustFrameworkBase + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + en + + + + Email Address + Sign in + Sign in with your social account + Sign in with your {0} + Password + Please enter your password + Please enter your {0} + Please enter a valid {0} + Sign up now + Sign up with {0} or {1} + Sign up with {0}, {1}, or {2} + Forgot your password? + Sign in + OR + Don't have an account? + We are having trouble signing you in. Please try again later. + + Facebook + Your password is incorrect. + Your password is incorrect. + Your password has expired. + We can't seem to find your account. + Looks like you used an old password. + Invalid username or password. + Your account has been locked. Contact your support person to unlock it, then try again. + Your account is temporarily locked to prevent unauthorized use. Try again later. + There are too many requests at this moment. Please wait for some time and try again. + + + + + + Email Address + Email address that can be used to contact you. + Please enter a valid email address. + New Password + Enter new password + 8-16 characters, containing 3 out of 4 of the following: Lowercase characters, uppercase characters, digits (0-9), and one or more of the following symbols: @ # $ % ^ & * - _ + = [ ] { } | \ : ' , ? / ` ~ " ( ) ; . + Confirm New Password + Confirm new password + 8-16 characters, containing 3 out of 4 of the following: Lowercase characters, uppercase characters, digits (0-9), and one or more of the following symbols: @ # $ % ^ & * - _ + = [ ] { } | \ : ' , ? / ` ~ " ( ) ; . + Display Name + Your display name. + Surname + Your surname (also known as family name or last name). + Given Name + Your given name (also known as first name). + Create + One or more fields are filled out incorrectly. Please check your entries and try again. + The password entry fields do not match. Please enter the same password in both fields and try again. + A required field is missing. Please fill out all required fields and try again. + What is this? + Please provide the following details. + Please wait + This information is required. + Cancel + Change e-mail + Send new code + Send verification code + Verify code + That code is expired. Please request a new code. + You've made too many incorrect attempts. Please try again later. + That code is incorrect. Please try again. + We are having trouble verifying your email address. Please enter a valid email address and try again. + There have been too many requests to verify this email address. Please wait a while, then try again. + Verification code has been sent to your inbox. Please copy it to the input box below. + Verification code + Verification is necessary. Please click Send button. + E-mail address verified. You can now continue. + There are too many requests at this moment. Please wait for some time and try again. + Claim not verified: {0} + A user with the specified ID already exists. Please choose a different one. + Incorrect pattern for: {0} + {0} has invalid input. + Missing required element: {0} + Error in validation by: {0} + + + + + + Email Address + Email address that can be used to contact you. + Please enter a valid email address. + Display Name + Your display name. + Surname + Your surname (also known as family name or last name). + Given Name + Your given name (also known as first name). + Create + Cancel + You are already registered, please press the back button and sign in instead. + + + + + + Email Address + Email address that can be used to contact you. + Please enter a valid email address. + New Password + Enter new password + 8-16 characters, containing 3 out of 4 of the following: Lowercase characters, uppercase characters, digits (0-9), and one or more of the following symbols: @ # $ % ^ & * - _ + = [ ] { } | \ : ' , ? / ` ~ " ( ) ; . + Confirm New Password + Confirm new password + 8-16 characters, containing 3 out of 4 of the following: Lowercase characters, uppercase characters, digits (0-9), and one or more of the following symbols: @ # $ % ^ & * - _ + = [ ] { } | \ : ' , ? / ` ~ " ( ) ; . + The password entry fields do not match. Please enter the same password in both fields and try again. + One or more fields are filled out incorrectly. Please check your entries and try again. + Continue + Cancel + An account could not be found for the provided user ID. + Your account has been locked. Contact your support person to unlock it, then try again. + This information is required. + Change e-mail + Send new code + Send verification code + Verify code + That code is expired. Please request a new code. + You've made too many incorrect attempts. Please try again later. + That code is incorrect. Please try again. + We are having trouble verifying your email address. Please enter a valid email address and try again. + There have been too many requests to verify this email address. Please wait a while, then try again. + Verification code has been sent to your inbox. Please copy it to the input box below. + Verification code + Verification is necessary. Please click Send button. + E-mail address verified. You can now continue. + There are too many requests at this moment. Please wait for some time and try again. + Claim not verified: {0} + A user with the specified ID already exists. Please choose a different one. + Incorrect pattern for: {0} + {0} has invalid input. + Missing required element: {0} + Error in validation by: {0} + + + + + + Sign in + Local Account Signin + Facebook + + + + + + Email Address + Password + Continue + Cancel + Your password is incorrect. + Your password is incorrect. + Your password has expired. + We can't seem to find your account. + Looks like you used an old password. + Invalid username or password. + Your account has been locked. Contact your support person to unlock it, then try again. + Your account is temporarily locked to prevent unauthorized use. Try again later. + There are too many requests at this moment. Please wait for some time and try again. + + + + + + Display Name + Your display name. + Surname + Your surname (also known as family name or last name). + Given Name + Your given name (also known as first name). + Continue + Cancel + + + + + + \ No newline at end of file diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 2690d373..491e6895 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "DM_Dev_MSLearnLTI3", - [string]$AppName = "DM-Dev-MS-Learn-Lti-Tool-App3", + [string]$ResourceGroupName = "DM_Dev_MSLearnLTI6", + [string]$AppName = "DM-Dev-MS-Learn-Lti-Tool-App6", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null diff --git a/deployment/UploadCustomPolicies.ps1 b/deployment/UploadCustomPolicies.ps1 new file mode 100644 index 00000000..08960db7 --- /dev/null +++ b/deployment/UploadCustomPolicies.ps1 @@ -0,0 +1,27 @@ + +#getting the values we want to replace from the templates +$B2cTenantName = Read-Host "What is the name of your b2c tenant?" +$B2cTenantObjectId = Read-Host "What is the object ID of your b2c tenant?" +$FacebookSecret = Read-Host "What is the value of your facebook secret" + + + +# looping through each CustomPolicyTemplate and creating bases of them in CustomTemplates +Get-ChildItem ".\CustomPolicyTemplates\" | +Foreach-Object { + ((Get-Content -path $_.FullName -Raw)) | Set-Content -path ("./CustomPolicy/"+$_.Name) +} + + +Read-Host "temp" + + +# looping through each CustomPolicy and replacing their placeholder values +Get-ChildItem ".\CustomPolicy\" | +Foreach-Object { + ((Get-Content -path $_.FullName -Raw) -replace '<>', $B2cTenantName) | Set-Content -path ("./CustomPolicy/"+$_.Name) + + ((Get-Content -path $_.FullName -Raw) -replace '<>', $B2cTenantObjectId) | Set-Content -path ("./CustomPolicy/"+$_.Name) + + ((Get-Content -path $_.FullName -Raw) -replace '<>', $FacebookSecret) | Set-Content -path ("./CustomPolicy/"+$_.Name) +} From bc4031df09d56aa0ee36781e5807fe24313a6aee Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Tue, 28 Jun 2022 09:53:05 +0100 Subject: [PATCH 007/285] Finished the templates and the placeholder replacing script according to the official documentation --- .../TRUSTFRAMEWORKEXTENSIONS.xml | 10 +++---- deployment/UploadCustomPolicies.ps1 | 30 +++++++++++++++---- 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/deployment/CustomPolicyTemplates/TRUSTFRAMEWORKEXTENSIONS.xml b/deployment/CustomPolicyTemplates/TRUSTFRAMEWORKEXTENSIONS.xml index 929567f3..fc880876 100644 --- a/deployment/CustomPolicyTemplates/TRUSTFRAMEWORKEXTENSIONS.xml +++ b/deployment/CustomPolicyTemplates/TRUSTFRAMEWORKEXTENSIONS.xml @@ -56,7 +56,7 @@ - 447221790099527 + <>>> email public_profile https://graph.facebook.com/me?fields=id,first_name,last_name,name,email @@ -68,12 +68,12 @@ - aa4dd984-98c2-4ef8-a62e-f38557106c34 - e04dd15b-db74-48f6-84ff-a78c8cf6646c + <> + <> - - + + diff --git a/deployment/UploadCustomPolicies.ps1 b/deployment/UploadCustomPolicies.ps1 index 08960db7..c66c8f2f 100644 --- a/deployment/UploadCustomPolicies.ps1 +++ b/deployment/UploadCustomPolicies.ps1 @@ -1,27 +1,47 @@ +#region "Helper Functions" + +#function for making clear and distinct titles +function Write-Title([string]$Title) { + Write-Host "`n`n=============================================================" + Write-Host $Title + Write-Host "=============================================================`n`n" +} +#endregion + #getting the values we want to replace from the templates +Write-Title "STEP 1: Getting values to use in the custom policies?" $B2cTenantName = Read-Host "What is the name of your b2c tenant?" $B2cTenantObjectId = Read-Host "What is the object ID of your b2c tenant?" -$FacebookSecret = Read-Host "What is the value of your facebook secret" - +$ProxyIdentityExperienceFrameworkAppId = Read-Host "What is the application ID of the ProxyIdentityExperienceFramework application you created?" +$IdentityExperienceFrameworkAppId = Read-Host "What is the application ID of the IdentityExperienceFramework application you created?" +$FacebookId = Read-Host "What is the application ID of the Facebook application you created?" +$FacebookSecret = Read-Host "What is the value of your facebook applications secret?" # looping through each CustomPolicyTemplate and creating bases of them in CustomTemplates +Write-Title "STEP 2: Creating template custom policies" Get-ChildItem ".\CustomPolicyTemplates\" | Foreach-Object { ((Get-Content -path $_.FullName -Raw)) | Set-Content -path ("./CustomPolicy/"+$_.Name) } -Read-Host "temp" - -# looping through each CustomPolicy and replacing their placeholder values +# looping through each CustomPolicy and replacing their placeholder values to generate the final custom policies +Write-Title "STEP 3: Replacing values in template custom policies to generate finalised custom policies" Get-ChildItem ".\CustomPolicy\" | Foreach-Object { ((Get-Content -path $_.FullName -Raw) -replace '<>', $B2cTenantName) | Set-Content -path ("./CustomPolicy/"+$_.Name) ((Get-Content -path $_.FullName -Raw) -replace '<>', $B2cTenantObjectId) | Set-Content -path ("./CustomPolicy/"+$_.Name) + ((Get-Content -path $_.FullName -Raw) -replace '<>', $ProxyIdentityExperienceFrameworkAppId) | Set-Content -path ("./CustomPolicy/"+$_.Name) + + ((Get-Content -path $_.FullName -Raw) -replace '<>', $IdentityExperienceFrameworkAppId) | Set-Content -path ("./CustomPolicy/"+$_.Name) + + ((Get-Content -path $_.FullName -Raw) -replace '<>', $FacebookId) | Set-Content -path ("./CustomPolicy/"+$_.Name) + ((Get-Content -path $_.FullName -Raw) -replace '<>', $FacebookSecret) | Set-Content -path ("./CustomPolicy/"+$_.Name) + } From a9e53dae4b317c43f67bb2515e24c8e3eb55a57b Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Tue, 28 Jun 2022 10:18:59 +0100 Subject: [PATCH 008/285] Created cleanup script for removing the custom policies if necessary --- deployment/CleanupCustomPolicies.ps1 | 13 +++++++++++++ .../CustomPolicyTemplates/TRUSTFRAMEWORKBASE.xml | 4 ++-- deployment/UploadCustomPolicies.ps1 | 15 +++++++++++++++ 3 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 deployment/CleanupCustomPolicies.ps1 diff --git a/deployment/CleanupCustomPolicies.ps1 b/deployment/CleanupCustomPolicies.ps1 new file mode 100644 index 00000000..ab90731e --- /dev/null +++ b/deployment/CleanupCustomPolicies.ps1 @@ -0,0 +1,13 @@ +# Connecting to the b2c tenant and removing the custom policies already uploaded to the b2c tenant +Write-Title "Cleaning up the custom policies from the b2c tenant" + +$B2cTenantDomain = Read-Host "What is your B2C tenants domain (e.g. mytenant.onmicrosoft.com)?" +Import-Module AzureADPreview +Connect-AzureAD -Tenant $B2cTenantDomain + +Remove-AzureADMSTrustFrameworkPolicy -Id B2C_1A_PasswordReset +Remove-AzureADMSTrustFrameworkPolicy -Id B2C_1A_ProfileEdit +Remove-AzureADMSTrustFrameworkPolicy -Id B2C_1A_signup_signin +Remove-AzureADMSTrustFrameworkPolicy -Id B2C_1A_TrustFrameworkBase +Remove-AzureADMSTrustFrameworkPolicy -Id B2C_1A_TrustFrameworkExtensions +Remove-AzureADMSTrustFrameworkPolicy -Id B2C_1A_TrustFrameworkLocalization diff --git a/deployment/CustomPolicyTemplates/TRUSTFRAMEWORKBASE.xml b/deployment/CustomPolicyTemplates/TRUSTFRAMEWORKBASE.xml index f43713c2..2180d680 100644 --- a/deployment/CustomPolicyTemplates/TRUSTFRAMEWORKBASE.xml +++ b/deployment/CustomPolicyTemplates/TRUSTFRAMEWORKBASE.xml @@ -531,12 +531,12 @@ OutputClaims, and if this is absent, Self-Asserted provider will prompt the user for otherMails. --> - + < ReferenceId="AAD-Common" /> - Read +IncludeTechnicalProfile Read true diff --git a/deployment/UploadCustomPolicies.ps1 b/deployment/UploadCustomPolicies.ps1 index c66c8f2f..f1e82419 100644 --- a/deployment/UploadCustomPolicies.ps1 +++ b/deployment/UploadCustomPolicies.ps1 @@ -45,3 +45,18 @@ Foreach-Object { ((Get-Content -path $_.FullName -Raw) -replace '<>', $FacebookSecret) | Set-Content -path ("./CustomPolicy/"+$_.Name) } + + +# Connecting to the b2c tenant and uploading the custom policies to the b2c tenant +Write-Title "STEP 4: Uploading the custom policies to the b2c tenant" + +$B2cTenantDomain = Read-Host "What is your B2C tenants domain (e.g. mytenant.onmicrosoft.com)?" +Import-Module AzureADPreview +Connect-AzureAD -Tenant $B2cTenantDomain +# Order matters in the uploads - do not modify the order +New-AzureADMSTrustFrameworkPolicy -InputFilePath "./CustomPolicy/TRUSTFRAMEWORKBASE.xml" +New-AzureADMSTrustFrameworkPolicy -InputFilePath "./CustomPolicy/TRUSTFRAMEWORKLOCALIZATION.xml" +New-AzureADMSTrustFrameworkPolicy -InputFilePath "./CustomPolicy/TRUSTFRAMEWORKEXTENSIONS.xml" +New-AzureADMSTrustFrameworkPolicy -InputFilePath "./CustomPolicy/SIGNUP_SIGNIN.xml" +New-AzureADMSTrustFrameworkPolicy -InputFilePath "./CustomPolicy/PROFILEEDIT.xml" +New-AzureADMSTrustFrameworkPolicy -InputFilePath "./CustomPolicy/PASSWORDRESET.xml" \ No newline at end of file From c4944fd236fe7b317c4e8c17bc13d46f1395f5b1 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Tue, 28 Jun 2022 10:22:29 +0100 Subject: [PATCH 009/285] Added Write-Title helper function to CleanupCustomPolicies.ps1 --- deployment/CleanupCustomPolicies.ps1 | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/deployment/CleanupCustomPolicies.ps1 b/deployment/CleanupCustomPolicies.ps1 index ab90731e..2ba89856 100644 --- a/deployment/CleanupCustomPolicies.ps1 +++ b/deployment/CleanupCustomPolicies.ps1 @@ -1,3 +1,14 @@ +#region "Helper Functions" + +#function for making clear and distinct titles +function Write-Title([string]$Title) { + Write-Host "`n`n=============================================================" + Write-Host $Title + Write-Host "=============================================================`n`n" +} +#endregion + + # Connecting to the b2c tenant and removing the custom policies already uploaded to the b2c tenant Write-Title "Cleaning up the custom policies from the b2c tenant" From 4cce285ae0ee15e9260beeac613dc73985710af7 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Tue, 28 Jun 2022 11:42:03 +0100 Subject: [PATCH 010/285] Debugged UploadCustomPolicies.ps1 regarding it not being able to find the path to the CustomPolicies; and errors caused by an incorrectly formatted TRUSTFRAMEWORKBASE.xml template --- deployment/CustomPolicy/PASSWORDRESET.xml | 5 +- deployment/CustomPolicy/PROFILEEDIT.xml | 5 +- deployment/CustomPolicy/SIGNUP_SIGNIN.xml | 5 +- .../CustomPolicy/TRUSTFRAMEWORKBASE.xml | 142 ++++++++++++++++- .../CustomPolicy/TRUSTFRAMEWORKEXTENSIONS.xml | 15 +- .../TRUSTFRAMEWORKLOCALIZATION.xml | 5 +- .../CustomPolicyTemplates/PASSWORDRESET.xml | 2 +- .../CustomPolicyTemplates/PROFILEEDIT.xml | 2 +- .../CustomPolicyTemplates/SIGNUP_SIGNIN.xml | 2 +- .../TRUSTFRAMEWORKBASE.xml | 145 ++++++++++++++++-- .../TRUSTFRAMEWORKEXTENSIONS.xml | 2 +- .../TRUSTFRAMEWORKLOCALIZATION.xml | 2 +- deployment/UploadCustomPolicies.ps1 | 45 ++++-- 13 files changed, 324 insertions(+), 53 deletions(-) diff --git a/deployment/CustomPolicy/PASSWORDRESET.xml b/deployment/CustomPolicy/PASSWORDRESET.xml index a5f79ac4..35205ea0 100644 --- a/deployment/CustomPolicy/PASSWORDRESET.xml +++ b/deployment/CustomPolicy/PASSWORDRESET.xml @@ -1,6 +1,6 @@ - + - a.onmicrosoft.com + playltib2c.onmicrosoft.com B2C_1A_TrustFrameworkExtensions @@ -20,3 +20,4 @@ + diff --git a/deployment/CustomPolicy/PROFILEEDIT.xml b/deployment/CustomPolicy/PROFILEEDIT.xml index 26acdf85..2d799c2b 100644 --- a/deployment/CustomPolicy/PROFILEEDIT.xml +++ b/deployment/CustomPolicy/PROFILEEDIT.xml @@ -1,6 +1,6 @@ - + - a.onmicrosoft.com + playltib2c.onmicrosoft.com B2C_1A_TrustFrameworkExtensions @@ -19,3 +19,4 @@ + diff --git a/deployment/CustomPolicy/SIGNUP_SIGNIN.xml b/deployment/CustomPolicy/SIGNUP_SIGNIN.xml index b1976881..c7a660c2 100644 --- a/deployment/CustomPolicy/SIGNUP_SIGNIN.xml +++ b/deployment/CustomPolicy/SIGNUP_SIGNIN.xml @@ -1,6 +1,6 @@ - + - a.onmicrosoft.com + playltib2c.onmicrosoft.com B2C_1A_TrustFrameworkExtensions @@ -24,3 +24,4 @@ + diff --git a/deployment/CustomPolicy/TRUSTFRAMEWORKBASE.xml b/deployment/CustomPolicy/TRUSTFRAMEWORKBASE.xml index c34747bf..1fb2ab8c 100644 --- a/deployment/CustomPolicy/TRUSTFRAMEWORKBASE.xml +++ b/deployment/CustomPolicy/TRUSTFRAMEWORKBASE.xml @@ -1,4 +1,13 @@ - + + + + + + Username string - + TextBox + User's Object's Tenant ID string @@ -34,6 +47,7 @@ Tenant identifier (ID) of the user object in Azure AD. + User's Object ID string @@ -44,31 +58,36 @@ Object identifier (ID) of the user object in Azure AD. + Sign in name string - + TextBox + Email Address string Email address to use for signing in. TextBox + Account Enabled boolean Specifies whether the user's account is enabled. Specifies whether your account is enabled. + Password string Enter password Password + @@ -95,6 +114,7 @@ ) {8,16}$ # the length must be between 8 and 16 chars inclusive --> + Confirm New Password string @@ -104,41 +124,48 @@ + Password Policies string Password policies used by Azure AD to determine password strength, expiry etc. + client_id string Special parameter passed to EvoSTS. Special parameter passed to EvoSTS. + resource_id string Special parameter passed to EvoSTS. Special parameter passed to EvoSTS. + Subject string - + + AlternativeSecurityId string - + + MailNickName string Your mail nick name as stored in the Azure Active Directory. + Identity Provider string @@ -147,8 +174,9 @@ - + + Display Name string @@ -160,6 +188,7 @@ Your display name. TextBox + Email Address string @@ -172,11 +201,13 @@ + Alternate Email Addresses stringCollection Email addresses that can be used to contact the user. + UserPrincipalName string @@ -187,53 +218,65 @@ Your user name as stored in the Azure Active Directory. + UPN User Name string The user name for creating user principal name. + User is new boolean - + + Executed-SelfAsserted-Input string A claim that specifies whether attributes were collected from the user. + AuthenticationSource string Specifies whether the user was authenticated at Social IDP or local account. + + nca string Special parameter passed for local account authentication to login.microsoftonline.com. + grant_type string Special parameter passed for local account authentication to login.microsoftonline.com. + scope string Special parameter passed for local account authentication to login.microsoftonline.com. + objectIdFromSession boolean Parameter provided by the default session management provider to indicate that the object id has been retrieved from an SSO session. + isActiveMFASession boolean Parameter provided by the MFA session management to indicate that the user has an active MFA session. + + Given Name string @@ -245,6 +288,7 @@ Your given name (also known as first name). TextBox + Surname string @@ -256,7 +300,9 @@ Your surname (also known as family name or last name). TextBox + + @@ -267,6 +313,7 @@ + @@ -275,6 +322,7 @@ + @@ -286,6 +334,7 @@ + @@ -295,6 +344,7 @@ + @@ -303,6 +353,7 @@ + @@ -312,12 +363,15 @@ + LineMarkers, MetaRefresh + + ~/tenant/templates/AzureBlue/exception.cshtml @@ -327,6 +381,7 @@ Error page + ~/tenant/templates/AzureBlue/idpSelector.cshtml ~/common/default_page_error.html @@ -336,6 +391,7 @@ Sign in + ~/tenant/templates/AzureBlue/idpSelector.cshtml ~/common/default_page_error.html @@ -345,6 +401,7 @@ Sign up + ~/tenant/templates/AzureBlue/unified.cshtml ~/common/default_page_error.html @@ -353,6 +410,7 @@ Signin and Signup + ~/tenant/templates/AzureBlue/selfAsserted.cshtml ~/common/default_page_error.html @@ -361,6 +419,7 @@ Collect information from user page + ~/tenant/templates/AzureBlue/selfAsserted.cshtml ~/common/default_page_error.html @@ -369,6 +428,7 @@ Collect information from user page + ~/tenant/templates/AzureBlue/selfAsserted.cshtml ~/common/default_page_error.html @@ -377,6 +437,7 @@ Local account sign up page + ~/tenant/templates/AzureBlue/selfAsserted.cshtml ~/common/default_page_error.html @@ -385,6 +446,7 @@ Local account change password page + ~/tenant/templates/AzureBlue/selfAsserted.cshtml ~/common/default_page_error.html @@ -393,6 +455,7 @@ Collect information from user page + ~/tenant/templates/AzureBlue/selfAsserted.cshtml ~/common/default_page_error.html @@ -401,13 +464,16 @@ Collect information from user page + + + @@ -425,6 +491,7 @@ https://graph.facebook.com/oauth/access_token GET 0 + json @@ -450,6 +517,7 @@ + Local Account SignIn @@ -464,6 +532,7 @@ query email openid + false POST @@ -487,19 +556,24 @@ + Azure Active Directory + Azure Active Directory + + false + @@ -519,6 +593,7 @@ + @@ -534,6 +609,7 @@ + Read @@ -545,6 +621,7 @@ + @@ -554,12 +631,14 @@ + false + @@ -576,6 +655,7 @@ + @@ -590,6 +670,7 @@ + Read @@ -603,6 +684,7 @@ + @@ -615,6 +697,7 @@ + Write @@ -627,10 +710,13 @@ + + + Write @@ -644,12 +730,14 @@ + + @@ -661,6 +749,7 @@ + @@ -670,11 +759,14 @@ + + Self Asserted + User ID signup @@ -701,6 +793,7 @@ + @@ -713,6 +806,7 @@ + User ID signup @@ -723,6 +817,7 @@ + @@ -731,6 +826,7 @@ + @@ -742,9 +838,11 @@ + Local Account + Email signup @@ -766,6 +864,7 @@ + @@ -776,6 +875,7 @@ + Local Account Signin @@ -801,6 +901,7 @@ + @@ -819,11 +920,13 @@ + + Change password (username) @@ -835,6 +938,7 @@ + @@ -844,8 +948,10 @@ + + Session Management @@ -853,6 +959,7 @@ Noop Session Management Provider + Session Mananagement Provider @@ -868,10 +975,12 @@ + + Session Mananagement Provider @@ -882,6 +991,7 @@ + Session Management Provider @@ -889,6 +999,7 @@ + Trustframework Policy Engine TechnicalProfiles @@ -901,6 +1012,7 @@ + Token Issuer @@ -922,9 +1034,12 @@ + + + @@ -934,6 +1049,7 @@ + @@ -947,6 +1063,7 @@ + @@ -960,6 +1077,7 @@ + @@ -974,6 +1092,7 @@ + @@ -1002,12 +1121,16 @@ + + + + @@ -1044,15 +1167,18 @@ + + + @@ -1069,8 +1195,10 @@ + + diff --git a/deployment/CustomPolicy/TRUSTFRAMEWORKEXTENSIONS.xml b/deployment/CustomPolicy/TRUSTFRAMEWORKEXTENSIONS.xml index 5609ca74..5f87e277 100644 --- a/deployment/CustomPolicy/TRUSTFRAMEWORKEXTENSIONS.xml +++ b/deployment/CustomPolicy/TRUSTFRAMEWORKEXTENSIONS.xml @@ -1,6 +1,6 @@ - + - a.onmicrosoft.com + playltib2c.onmicrosoft.com B2C_1A_TrustFrameworkLocalization @@ -56,7 +56,7 @@ - 447221790099527 + 550369626723173>> email public_profile https://graph.facebook.com/me?fields=id,first_name,last_name,name,email @@ -68,12 +68,12 @@ - aa4dd984-98c2-4ef8-a62e-f38557106c34 - e04dd15b-db74-48f6-84ff-a78c8cf6646c + d210807a-4877-48f3-8f30-2c56687f13f4 + bb59a14f-263b-4a95-8d23-06f842008e14 - - + + @@ -170,3 +170,4 @@ + diff --git a/deployment/CustomPolicy/TRUSTFRAMEWORKLOCALIZATION.xml b/deployment/CustomPolicy/TRUSTFRAMEWORKLOCALIZATION.xml index cc022e91..aa82ebd9 100644 --- a/deployment/CustomPolicy/TRUSTFRAMEWORKLOCALIZATION.xml +++ b/deployment/CustomPolicy/TRUSTFRAMEWORKLOCALIZATION.xml @@ -1,6 +1,6 @@ - + - a.onmicrosoft.com + playltib2c.onmicrosoft.com B2C_1A_TrustFrameworkBase @@ -237,3 +237,4 @@ + diff --git a/deployment/CustomPolicyTemplates/PASSWORDRESET.xml b/deployment/CustomPolicyTemplates/PASSWORDRESET.xml index 3a7145ee..fb6a5b93 100644 --- a/deployment/CustomPolicyTemplates/PASSWORDRESET.xml +++ b/deployment/CustomPolicyTemplates/PASSWORDRESET.xml @@ -1,4 +1,4 @@ - + <>.onmicrosoft.com B2C_1A_TrustFrameworkExtensions diff --git a/deployment/CustomPolicyTemplates/PROFILEEDIT.xml b/deployment/CustomPolicyTemplates/PROFILEEDIT.xml index 517d65fd..2baea90c 100644 --- a/deployment/CustomPolicyTemplates/PROFILEEDIT.xml +++ b/deployment/CustomPolicyTemplates/PROFILEEDIT.xml @@ -1,4 +1,4 @@ - + <>.onmicrosoft.com B2C_1A_TrustFrameworkExtensions diff --git a/deployment/CustomPolicyTemplates/SIGNUP_SIGNIN.xml b/deployment/CustomPolicyTemplates/SIGNUP_SIGNIN.xml index cd1d8d12..63e9b14d 100644 --- a/deployment/CustomPolicyTemplates/SIGNUP_SIGNIN.xml +++ b/deployment/CustomPolicyTemplates/SIGNUP_SIGNIN.xml @@ -1,4 +1,4 @@ - + <>.onmicrosoft.com B2C_1A_TrustFrameworkExtensions diff --git a/deployment/CustomPolicyTemplates/TRUSTFRAMEWORKBASE.xml b/deployment/CustomPolicyTemplates/TRUSTFRAMEWORKBASE.xml index 2180d680..243c054b 100644 --- a/deployment/CustomPolicyTemplates/TRUSTFRAMEWORKBASE.xml +++ b/deployment/CustomPolicyTemplates/TRUSTFRAMEWORKBASE.xml @@ -1,4 +1,13 @@ - + + + + + + Username string - + TextBox + User's Object's Tenant ID string @@ -34,6 +47,7 @@ Tenant identifier (ID) of the user object in Azure AD. + User's Object ID string @@ -44,31 +58,36 @@ Object identifier (ID) of the user object in Azure AD. + Sign in name string - + TextBox + Email Address string Email address to use for signing in. TextBox + Account Enabled boolean Specifies whether the user's account is enabled. Specifies whether your account is enabled. + Password string Enter password Password + @@ -95,6 +114,7 @@ ) {8,16}$ # the length must be between 8 and 16 chars inclusive --> + Confirm New Password string @@ -104,41 +124,48 @@ + Password Policies string Password policies used by Azure AD to determine password strength, expiry etc. + client_id string Special parameter passed to EvoSTS. Special parameter passed to EvoSTS. + resource_id string Special parameter passed to EvoSTS. Special parameter passed to EvoSTS. + Subject string - + + AlternativeSecurityId string - + + MailNickName string Your mail nick name as stored in the Azure Active Directory. + Identity Provider string @@ -147,8 +174,9 @@ - + + Display Name string @@ -160,6 +188,7 @@ Your display name. TextBox + Email Address string @@ -172,11 +201,13 @@ + Alternate Email Addresses stringCollection Email addresses that can be used to contact the user. + UserPrincipalName string @@ -187,53 +218,65 @@ Your user name as stored in the Azure Active Directory. + UPN User Name string The user name for creating user principal name. + User is new boolean - + + Executed-SelfAsserted-Input string A claim that specifies whether attributes were collected from the user. + AuthenticationSource string Specifies whether the user was authenticated at Social IDP or local account. + + nca string Special parameter passed for local account authentication to login.microsoftonline.com. + grant_type string Special parameter passed for local account authentication to login.microsoftonline.com. + scope string Special parameter passed for local account authentication to login.microsoftonline.com. + objectIdFromSession boolean Parameter provided by the default session management provider to indicate that the object id has been retrieved from an SSO session. + isActiveMFASession boolean Parameter provided by the MFA session management to indicate that the user has an active MFA session. + + Given Name string @@ -245,6 +288,7 @@ Your given name (also known as first name). TextBox + Surname string @@ -256,7 +300,9 @@ Your surname (also known as family name or last name). TextBox + + @@ -267,6 +313,7 @@ + @@ -275,6 +322,7 @@ + @@ -286,6 +334,7 @@ + @@ -295,6 +344,7 @@ + @@ -303,6 +353,7 @@ + @@ -312,12 +363,15 @@ + LineMarkers, MetaRefresh + + ~/tenant/templates/AzureBlue/exception.cshtml @@ -327,6 +381,7 @@ Error page + ~/tenant/templates/AzureBlue/idpSelector.cshtml ~/common/default_page_error.html @@ -336,6 +391,7 @@ Sign in + ~/tenant/templates/AzureBlue/idpSelector.cshtml ~/common/default_page_error.html @@ -345,6 +401,7 @@ Sign up + ~/tenant/templates/AzureBlue/unified.cshtml ~/common/default_page_error.html @@ -353,6 +410,7 @@ Signin and Signup + ~/tenant/templates/AzureBlue/selfAsserted.cshtml ~/common/default_page_error.html @@ -361,6 +419,7 @@ Collect information from user page + ~/tenant/templates/AzureBlue/selfAsserted.cshtml ~/common/default_page_error.html @@ -369,6 +428,7 @@ Collect information from user page + ~/tenant/templates/AzureBlue/selfAsserted.cshtml ~/common/default_page_error.html @@ -377,6 +437,7 @@ Local account sign up page + ~/tenant/templates/AzureBlue/selfAsserted.cshtml ~/common/default_page_error.html @@ -385,6 +446,7 @@ Local account change password page + ~/tenant/templates/AzureBlue/selfAsserted.cshtml ~/common/default_page_error.html @@ -393,6 +455,7 @@ Collect information from user page + ~/tenant/templates/AzureBlue/selfAsserted.cshtml ~/common/default_page_error.html @@ -401,13 +464,16 @@ Collect information from user page + + + @@ -425,6 +491,7 @@ https://graph.facebook.com/oauth/access_token GET 0 + json @@ -450,6 +517,7 @@ + Local Account SignIn @@ -464,6 +532,7 @@ query email openid + false POST @@ -487,19 +556,24 @@ + Azure Active Directory + Azure Active Directory + + false + @@ -519,6 +593,7 @@ + @@ -531,12 +606,13 @@ OutputClaims, and if this is absent, Self-Asserted provider will prompt the user for otherMails. --> - < ReferenceId="AAD-Common" /> + + -IncludeTechnicalProfile Read + Read true @@ -545,6 +621,7 @@ IncludeTechnicalProfile Read + @@ -554,12 +631,14 @@ IncludeTechnicalProfile Read + false + @@ -576,6 +655,7 @@ IncludeTechnicalProfile Read + @@ -590,6 +670,7 @@ IncludeTechnicalProfile Read + Read @@ -603,6 +684,7 @@ IncludeTechnicalProfile Read + @@ -615,6 +697,7 @@ IncludeTechnicalProfile Read + Write @@ -627,10 +710,13 @@ IncludeTechnicalProfile Read + + + Write @@ -644,12 +730,14 @@ IncludeTechnicalProfile Read + + @@ -661,6 +749,7 @@ IncludeTechnicalProfile Read + @@ -670,11 +759,14 @@ IncludeTechnicalProfile Read + + Self Asserted + User ID signup @@ -701,6 +793,7 @@ IncludeTechnicalProfile Read + @@ -713,6 +806,7 @@ IncludeTechnicalProfile Read + User ID signup @@ -723,6 +817,7 @@ IncludeTechnicalProfile Read + @@ -731,6 +826,7 @@ IncludeTechnicalProfile Read + @@ -742,9 +838,11 @@ IncludeTechnicalProfile Read + Local Account + Email signup @@ -766,6 +864,7 @@ IncludeTechnicalProfile Read + @@ -776,6 +875,7 @@ IncludeTechnicalProfile Read + Local Account Signin @@ -801,6 +901,7 @@ IncludeTechnicalProfile Read + @@ -819,11 +920,13 @@ IncludeTechnicalProfile Read + + Change password (username) @@ -835,6 +938,7 @@ IncludeTechnicalProfile Read + @@ -844,8 +948,10 @@ IncludeTechnicalProfile Read + + Session Management @@ -853,6 +959,7 @@ IncludeTechnicalProfile Read Noop Session Management Provider + Session Mananagement Provider @@ -868,10 +975,12 @@ IncludeTechnicalProfile Read + + Session Mananagement Provider @@ -882,6 +991,7 @@ IncludeTechnicalProfile Read + Session Management Provider @@ -889,6 +999,7 @@ IncludeTechnicalProfile Read + Trustframework Policy Engine TechnicalProfiles @@ -901,6 +1012,7 @@ IncludeTechnicalProfile Read + Token Issuer @@ -922,9 +1034,12 @@ IncludeTechnicalProfile Read + + + @@ -934,6 +1049,7 @@ IncludeTechnicalProfile Read + @@ -947,6 +1063,7 @@ IncludeTechnicalProfile Read + @@ -960,6 +1077,7 @@ IncludeTechnicalProfile Read + @@ -974,6 +1092,7 @@ IncludeTechnicalProfile Read + @@ -1002,12 +1121,16 @@ IncludeTechnicalProfile Read + + + + @@ -1044,15 +1167,18 @@ IncludeTechnicalProfile Read + + + @@ -1069,5 +1195,6 @@ IncludeTechnicalProfile Read + \ No newline at end of file diff --git a/deployment/CustomPolicyTemplates/TRUSTFRAMEWORKEXTENSIONS.xml b/deployment/CustomPolicyTemplates/TRUSTFRAMEWORKEXTENSIONS.xml index fc880876..c1dc4cf0 100644 --- a/deployment/CustomPolicyTemplates/TRUSTFRAMEWORKEXTENSIONS.xml +++ b/deployment/CustomPolicyTemplates/TRUSTFRAMEWORKEXTENSIONS.xml @@ -1,4 +1,4 @@ - + <>.onmicrosoft.com B2C_1A_TrustFrameworkLocalization diff --git a/deployment/CustomPolicyTemplates/TRUSTFRAMEWORKLOCALIZATION.xml b/deployment/CustomPolicyTemplates/TRUSTFRAMEWORKLOCALIZATION.xml index 978a41d6..379933f7 100644 --- a/deployment/CustomPolicyTemplates/TRUSTFRAMEWORKLOCALIZATION.xml +++ b/deployment/CustomPolicyTemplates/TRUSTFRAMEWORKLOCALIZATION.xml @@ -1,4 +1,4 @@ - + <>.onmicrosoft.com B2C_1A_TrustFrameworkBase diff --git a/deployment/UploadCustomPolicies.ps1 b/deployment/UploadCustomPolicies.ps1 index f1e82419..78f45002 100644 --- a/deployment/UploadCustomPolicies.ps1 +++ b/deployment/UploadCustomPolicies.ps1 @@ -12,18 +12,16 @@ function Write-Title([string]$Title) { #getting the values we want to replace from the templates Write-Title "STEP 1: Getting values to use in the custom policies?" $B2cTenantName = Read-Host "What is the name of your b2c tenant?" -$B2cTenantObjectId = Read-Host "What is the object ID of your b2c tenant?" $ProxyIdentityExperienceFrameworkAppId = Read-Host "What is the application ID of the ProxyIdentityExperienceFramework application you created?" $IdentityExperienceFrameworkAppId = Read-Host "What is the application ID of the IdentityExperienceFramework application you created?" $FacebookId = Read-Host "What is the application ID of the Facebook application you created?" -$FacebookSecret = Read-Host "What is the value of your facebook applications secret?" # looping through each CustomPolicyTemplate and creating bases of them in CustomTemplates Write-Title "STEP 2: Creating template custom policies" Get-ChildItem ".\CustomPolicyTemplates\" | Foreach-Object { - ((Get-Content -path $_.FullName -Raw)) | Set-Content -path ("./CustomPolicy/"+$_.Name) + ((Get-Content -path $_.FullName -Raw)) | Set-Content -path (".\CustomPolicy\"+$_.Name) } @@ -32,17 +30,13 @@ Foreach-Object { Write-Title "STEP 3: Replacing values in template custom policies to generate finalised custom policies" Get-ChildItem ".\CustomPolicy\" | Foreach-Object { - ((Get-Content -path $_.FullName -Raw) -replace '<>', $B2cTenantName) | Set-Content -path ("./CustomPolicy/"+$_.Name) + ((Get-Content -path $_.FullName -Raw) -replace '<>', $B2cTenantName) | Set-Content -path (".\CustomPolicy\"+$_.Name) - ((Get-Content -path $_.FullName -Raw) -replace '<>', $B2cTenantObjectId) | Set-Content -path ("./CustomPolicy/"+$_.Name) - - ((Get-Content -path $_.FullName -Raw) -replace '<>', $ProxyIdentityExperienceFrameworkAppId) | Set-Content -path ("./CustomPolicy/"+$_.Name) - - ((Get-Content -path $_.FullName -Raw) -replace '<>', $IdentityExperienceFrameworkAppId) | Set-Content -path ("./CustomPolicy/"+$_.Name) + ((Get-Content -path $_.FullName -Raw) -replace '<>', $ProxyIdentityExperienceFrameworkAppId) | Set-Content -path (".\CustomPolicy\"+$_.Name) - ((Get-Content -path $_.FullName -Raw) -replace '<>', $FacebookId) | Set-Content -path ("./CustomPolicy/"+$_.Name) + ((Get-Content -path $_.FullName -Raw) -replace '<>', $IdentityExperienceFrameworkAppId) | Set-Content -path (".\CustomPolicy\"+$_.Name) - ((Get-Content -path $_.FullName -Raw) -replace '<>', $FacebookSecret) | Set-Content -path ("./CustomPolicy/"+$_.Name) + ((Get-Content -path $_.FullName -Raw) -replace '<>', $FacebookId) | Set-Content -path (".\CustomPolicy\"+$_.Name) } @@ -51,12 +45,29 @@ Foreach-Object { Write-Title "STEP 4: Uploading the custom policies to the b2c tenant" $B2cTenantDomain = Read-Host "What is your B2C tenants domain (e.g. mytenant.onmicrosoft.com)?" +Write-Host "Importing Module AzureADPreview" Import-Module AzureADPreview +Write-Host "Connecting to the tenant" Connect-AzureAD -Tenant $B2cTenantDomain + # Order matters in the uploads - do not modify the order -New-AzureADMSTrustFrameworkPolicy -InputFilePath "./CustomPolicy/TRUSTFRAMEWORKBASE.xml" -New-AzureADMSTrustFrameworkPolicy -InputFilePath "./CustomPolicy/TRUSTFRAMEWORKLOCALIZATION.xml" -New-AzureADMSTrustFrameworkPolicy -InputFilePath "./CustomPolicy/TRUSTFRAMEWORKEXTENSIONS.xml" -New-AzureADMSTrustFrameworkPolicy -InputFilePath "./CustomPolicy/SIGNUP_SIGNIN.xml" -New-AzureADMSTrustFrameworkPolicy -InputFilePath "./CustomPolicy/PROFILEEDIT.xml" -New-AzureADMSTrustFrameworkPolicy -InputFilePath "./CustomPolicy/PASSWORDRESET.xml" \ No newline at end of file +$currentDir = Get-Location +$currentDir = $currentDir.tostring() + +Write-Host "Uploading custom policy TRUSTFRAMEWORKBASE" +New-AzureADMSTrustFrameworkPolicy -InputFilePath ($currentDir+"\CustomPolicy\TRUSTFRAMEWORKBASE.xml") + +Write-Host "Uploading custom policy TRUSTFRAMEWORKLOCALIZATION" +New-AzureADMSTrustFrameworkPolicy -InputFilePath ($currentDir+"\CustomPolicy\TRUSTFRAMEWORKLOCALIZATION.xml") + +Write-Host "Uploading custom policy TRUSTFRAMEWORKEXTENSIONS" +New-AzureADMSTrustFrameworkPolicy -InputFilePath ($currentDir+"\CustomPolicy\TRUSTFRAMEWORKEXTENSIONS.xml") + +Write-Host "Uploading custom policy SIGNUP_SIGNIN" +New-AzureADMSTrustFrameworkPolicy -InputFilePath ($currentDir+"\CustomPolicy\SIGNUP_SIGNIN.xml") + +Write-Host "Uploading custom policy PROFILEEDIT" +New-AzureADMSTrustFrameworkPolicy -InputFilePath ($currentDir+"\CustomPolicy\PROFILEEDIT.xml") + +Write-Host "Uploading custom policy PASSWORDRESET" +New-AzureADMSTrustFrameworkPolicy -InputFilePath ($currentDir+"\CustomPolicy\PASSWORDRESET.xml") \ No newline at end of file From 4f703f8de6764e8174d74aa92be09eb0f2524381 Mon Sep 17 00:00:00 2001 From: DuyNguyen19993010 Date: Tue, 28 Jun 2022 17:45:25 +0100 Subject: [PATCH 011/285] Deploy configurations --- deployment/Cleanup.ps1 | 4 ++-- deployment/Deploy.ps1 | 4 ++-- deployment/azuredeploy.json | 3 +-- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/deployment/Cleanup.ps1 b/deployment/Cleanup.ps1 index 6382b457..54e93fc8 100644 --- a/deployment/Cleanup.ps1 +++ b/deployment/Cleanup.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "RB_cloudT2_MSLearnLTI", - [string]$AppName = "RB_cloudT2_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "DN_cloudT2_MSLearnLTI", + [string]$AppName = "DN_cloudT2_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null ) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 76cc91fd..7157066d 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "RB_cloudT2_MSLearnLTI", - [string]$AppName = "RB_cloudT2_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "DN_cloudT2_MSLearnLTI", + [string]$AppName = "DN_cloudT2_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null diff --git a/deployment/azuredeploy.json b/deployment/azuredeploy.json index 29e22aec..827310e1 100644 --- a/deployment/azuredeploy.json +++ b/deployment/azuredeploy.json @@ -20,7 +20,7 @@ } }, "variables": { - "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id),0,9)]", + "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, '80'),0,9)]", "functionList": [ "connect", "assignments", @@ -368,7 +368,6 @@ "enabledForDiskEncryption": "[variables('enabledForDiskEncryption')]", "enabledForTemplateDeployment": "[variables('enabledForTemplateDeployment')]", "enableSoftDelete": true, - "enablePurgeProtection": true, "tenantId": "[variables('tenantId')]", "accessPolicies": [ { From 6182be27a012b5fae22962903f968241e67fc165 Mon Sep 17 00:00:00 2001 From: DuyNguyen19993010 Date: Tue, 28 Jun 2022 19:32:03 +0100 Subject: [PATCH 012/285] 7072 port modified --- .../Edna.Platforms/Edna.Platforms.csproj | 2 +- client/.env.production | 16 ++++++++-------- client/src/Core/Auth/AppAuthConfig.ts | 2 +- deployment/Cleanup.ps1 | 4 ++-- deployment/Deploy.ps1 | 4 ++-- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/backend/Functions/Edna.Platforms/Edna.Platforms/Edna.Platforms.csproj b/backend/Functions/Edna.Platforms/Edna.Platforms/Edna.Platforms.csproj index eb74c3aa..1f50d138 100644 --- a/backend/Functions/Edna.Platforms/Edna.Platforms/Edna.Platforms.csproj +++ b/backend/Functions/Edna.Platforms/Edna.Platforms/Edna.Platforms.csproj @@ -6,7 +6,7 @@ - + diff --git a/client/.env.production b/client/.env.production index 4b3bcb57..87c9ff0e 100644 --- a/client/.env.production +++ b/client/.env.production @@ -1,10 +1,10 @@ GENERATE_SOURCEMAP='false' -REACT_APP_EDNA_PLATFORM_SERVICE_URL='https://platforms-korkom27p.azurewebsites.net/api' -REACT_APP_EDNA_USERS_SERVICE_URL='https://users-korkom27p.azurewebsites.net/api' -REACT_APP_EDNA_LEARN_CONTENT='https://learncontent-korkom27p.azurewebsites.net/api' -REACT_APP_EDNA_LINKS_SERVICE_URL='https://links-korkom27p.azurewebsites.net/api' -REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL='https://assignments-korkom27p.azurewebsites.net/api' +REACT_APP_EDNA_PLATFORM_SERVICE_URL='https://platforms-ixt7e3j5n.azurewebsites.net/api' +REACT_APP_EDNA_USERS_SERVICE_URL='https://users-ixt7e3j5n.azurewebsites.net/api' +REACT_APP_EDNA_LEARN_CONTENT='https://learncontent-ixt7e3j5n.azurewebsites.net/api' +REACT_APP_EDNA_LINKS_SERVICE_URL='https://links-ixt7e3j5n.azurewebsites.net/api' +REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL='https://assignments-ixt7e3j5n.azurewebsites.net/api' REACT_APP_EDNA_TENANT_ID='21510bb9-6414-46d0-9a07-1faf98f25937' -REACT_APP_EDNA_DEFAULT_SCOPE='api://af192e3d-919b-4d69-b11e-39979c65606d/user_impersonation' -REACT_APP_EDNA_MAIN_URL='https://learnclientkorkom27p.z33.web.core.windows.net/' -REACT_APP_EDNA_AAD_CLIENT_ID='af192e3d-919b-4d69-b11e-39979c65606d' +REACT_APP_EDNA_DEFAULT_SCOPE='api://763796ca-3c02-4097-a765-c3c1dac4ab4e/user_impersonation' +REACT_APP_EDNA_MAIN_URL='https://learnclientixt7e3j5n.z33.web.core.windows.net/' +REACT_APP_EDNA_AAD_CLIENT_ID='763796ca-3c02-4097-a765-c3c1dac4ab4e' diff --git a/client/src/Core/Auth/AppAuthConfig.ts b/client/src/Core/Auth/AppAuthConfig.ts index 3fceb238..46491ce6 100644 --- a/client/src/Core/Auth/AppAuthConfig.ts +++ b/client/src/Core/Auth/AppAuthConfig.ts @@ -18,7 +18,7 @@ const authLogCallback = (level: LogLevel, message: string, _containsPii: boolean const configuration: Configuration = { auth: { clientId: 'e5642ae2-5178-4b6f-9653-d80f6f47fcf0', // RB: don't hardcode - redirectUri: process.env.REACT_APP_EDNA_MAIN_URL!, + redirectUri: process.env.REACT_APP_EDNA_MAIN_URL!, authority: b2cPolicies.authorities.signUpSignIn.authority, navigateToLoginRequestUrl: true, knownAuthorities: [b2cPolicies.authorityDomain] diff --git a/deployment/Cleanup.ps1 b/deployment/Cleanup.ps1 index 54e93fc8..c1ea826f 100644 --- a/deployment/Cleanup.ps1 +++ b/deployment/Cleanup.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "DN_cloudT2_MSLearnLTI", - [string]$AppName = "DN_cloudT2_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "DN_cloudT3_MSLearnLTI", + [string]$AppName = "DN_cloudT3_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null ) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 7157066d..6d4c07ef 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "DN_cloudT2_MSLearnLTI", - [string]$AppName = "DN_cloudT2_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "DN_cloudT3_MSLearnLTI", + [string]$AppName = "DN_cloudT3_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null From c7c4ca6ee668056d4144cbd2ac4a70a40481900d Mon Sep 17 00:00:00 2001 From: Sundram Goyal Date: Wed, 29 Jun 2022 17:24:07 +0100 Subject: [PATCH 013/285] objectID and keyvaultfix --- deployment/Deploy.ps1 | 9 ++++++++- deployment/azuredeploy.json | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 59e33c72..9da2293d 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -193,8 +193,15 @@ process { #region Provision Resources inside Resource Group on Azure using ARM template Write-Title 'STEP #6 - Creating Resources in Azure' - + + [int]$azver0= (az version | ConvertFrom-Json | Select -ExpandProperty "azure-cli").Split(".")[0] + [int]$azver1= (az version | ConvertFrom-Json | Select -ExpandProperty "azure-cli").Split(".")[1] + if( $azver0 -ge 2 && $azver1 -ge 37){ + $userObjectId = az ad signed-in-user show --query id + } + else { $userObjectId = az ad signed-in-user show --query objectId + } #$userObjectId $templateFileName = "azuredeploy.json" diff --git a/deployment/azuredeploy.json b/deployment/azuredeploy.json index 29e22aec..ca56c788 100644 --- a/deployment/azuredeploy.json +++ b/deployment/azuredeploy.json @@ -20,7 +20,7 @@ } }, "variables": { - "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id),0,9)]", + "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, '5'),0,9)]", "functionList": [ "connect", "assignments", From 9b33e2628c8bb09d70f6e3bd7a82cc5eb68bac89 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Wed, 29 Jun 2022 17:31:01 +0100 Subject: [PATCH 014/285] Added functionality to create the encryption and signing keysets as well as generating their secrets --- deployment/CleanupCustomPolicies.ps1 | 12 ++ .../CustomPolicy/TRUSTFRAMEWORKEXTENSIONS.xml | 2 +- .../TRUSTFRAMEWORKEXTENSIONS.xml | 2 +- deployment/UploadCustomPolicies.ps1 | 145 ++++++++++++++++-- 4 files changed, 147 insertions(+), 14 deletions(-) diff --git a/deployment/CleanupCustomPolicies.ps1 b/deployment/CleanupCustomPolicies.ps1 index 2ba89856..57a6fb65 100644 --- a/deployment/CleanupCustomPolicies.ps1 +++ b/deployment/CleanupCustomPolicies.ps1 @@ -22,3 +22,15 @@ Remove-AzureADMSTrustFrameworkPolicy -Id B2C_1A_signup_signin Remove-AzureADMSTrustFrameworkPolicy -Id B2C_1A_TrustFrameworkBase Remove-AzureADMSTrustFrameworkPolicy -Id B2C_1A_TrustFrameworkExtensions Remove-AzureADMSTrustFrameworkPolicy -Id B2C_1A_TrustFrameworkLocalization + + +# Cleaning up the keysets from the b2c tenant +Write-Title "Cleaning up the keysets from the b2c tenant" +$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" +$headers.Add("Authorization", $access_token) + +$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets/B2C_1A_TokenSigningKeyContainer' -Method 'DELETE' -Headers $headers +$response | ConvertTo-Json + +$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets/B2C_1A_TokenEncryptionKeyContainer' -Method 'DELETE' -Headers $headers +$response | ConvertTo-Json \ No newline at end of file diff --git a/deployment/CustomPolicy/TRUSTFRAMEWORKEXTENSIONS.xml b/deployment/CustomPolicy/TRUSTFRAMEWORKEXTENSIONS.xml index 5f87e277..cba09ed7 100644 --- a/deployment/CustomPolicy/TRUSTFRAMEWORKEXTENSIONS.xml +++ b/deployment/CustomPolicy/TRUSTFRAMEWORKEXTENSIONS.xml @@ -29,7 +29,7 @@ https://login.microsoftonline.com/ - + diff --git a/deployment/CustomPolicyTemplates/TRUSTFRAMEWORKEXTENSIONS.xml b/deployment/CustomPolicyTemplates/TRUSTFRAMEWORKEXTENSIONS.xml index c1dc4cf0..f83e9a4b 100644 --- a/deployment/CustomPolicyTemplates/TRUSTFRAMEWORKEXTENSIONS.xml +++ b/deployment/CustomPolicyTemplates/TRUSTFRAMEWORKEXTENSIONS.xml @@ -29,7 +29,7 @@ https://login.microsoftonline.com/ - + diff --git a/deployment/UploadCustomPolicies.ps1 b/deployment/UploadCustomPolicies.ps1 index 78f45002..2503de77 100644 --- a/deployment/UploadCustomPolicies.ps1 +++ b/deployment/UploadCustomPolicies.ps1 @@ -1,32 +1,39 @@ -#region "Helper Functions" - #function for making clear and distinct titles function Write-Title([string]$Title) { Write-Host "`n`n=============================================================" Write-Host $Title Write-Host "=============================================================`n`n" } + +#region "Importing Modules" +Write-Title "Importing Modules" +Write-Host "Importing Module AzureADPreview" # REQUIRES THE PREVIEW VERSION +Import-Module AzureADPreview +Write-Host "Importing Module Microsoft.Graph.Identity.SignIns" +Import-Module Microsoft.Graph.Identity.SignIns #endregion -#getting the values we want to replace from the templates + +#region "STEP 1: getting the values we want to replace from the templates" Write-Title "STEP 1: Getting values to use in the custom policies?" $B2cTenantName = Read-Host "What is the name of your b2c tenant?" $ProxyIdentityExperienceFrameworkAppId = Read-Host "What is the application ID of the ProxyIdentityExperienceFramework application you created?" $IdentityExperienceFrameworkAppId = Read-Host "What is the application ID of the IdentityExperienceFramework application you created?" $FacebookId = Read-Host "What is the application ID of the Facebook application you created?" +#endregion -# looping through each CustomPolicyTemplate and creating bases of them in CustomTemplates +#region "STEP 2: looping through each CustomPolicyTemplate and creating bases of them in CustomTemplates" Write-Title "STEP 2: Creating template custom policies" Get-ChildItem ".\CustomPolicyTemplates\" | Foreach-Object { ((Get-Content -path $_.FullName -Raw)) | Set-Content -path (".\CustomPolicy\"+$_.Name) } +#endregion - -# looping through each CustomPolicy and replacing their placeholder values to generate the final custom policies +#region "STEP 3: looping through each CustomPolicy and replacing their placeholder values to generate the final custom policies" Write-Title "STEP 3: Replacing values in template custom policies to generate finalised custom policies" Get-ChildItem ".\CustomPolicy\" | Foreach-Object { @@ -39,16 +46,129 @@ Foreach-Object { ((Get-Content -path $_.FullName -Raw) -replace '<>', $FacebookId) | Set-Content -path (".\CustomPolicy\"+$_.Name) } +#endregion - -# Connecting to the b2c tenant and uploading the custom policies to the b2c tenant -Write-Title "STEP 4: Uploading the custom policies to the b2c tenant" +#region "STEP 4: Connecting to the b2c tenant" +Write-Title "STEP 4: Connecting to the b2c tenant" $B2cTenantDomain = Read-Host "What is your B2C tenants domain (e.g. mytenant.onmicrosoft.com)?" -Write-Host "Importing Module AzureADPreview" -Import-Module AzureADPreview Write-Host "Connecting to the tenant" Connect-AzureAD -Tenant $B2cTenantDomain +#endregion + +#region "STEP 5: Add signing and encryption keys for the IEF applications" +Write-Title "STEP 5: Adding signing and encryption keys for the IEF applications" + +#region "Getting the token to be used in the GET/POST requests" +# relevant docs: https://docs.microsoft.com/en-us/graph/auth-v2-service#4-get-an-access-token +Write-Host "Getting the token to be used in the GET/POST requests" + +$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" +$headers.Add("Content-Type", "application/x-www-form-urlencoded") + +$body = "client_id=a00baec5-65fc-4488-947f-8584625d47a5&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&client_secret=qlA8Q~~IUVTBB.snchHBe2V1f6o_6m6-nNOgba0i&grant_type=client_credentials" + +$response = Invoke-RestMethod 'https://login.microsoftonline.com/playltib2c.onmicrosoft.com/oauth2/v2.0/token' -Method 'POST' -Headers $headers -Body $body +$access_token = $response.access_token +#endregion + +[uint16] $num_months = Read-Host "How many months do you want the keys to be valid for? (must be greater than 0)" + +#region "STEP 5.A: Create the signing key" +Write-Title "STEP 5.A: Creating the Signing Key" + +#region "Creating the signing keyset (container)"" +Write-Host "`nCreating the signing keyset (container)`n" +$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" +$headers.Add("Authorization", $access_token) +$headers.Add("Content-Type", "application/json") + +$body = "{`"id`":`"B2C_1A_TokenSigningKeyContainer`"}" + +$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets' -Method 'POST' -Headers $headers -Body $body +$response | ConvertTo-Json +$signing_container_id = $response.id + +Write-Host "`nSuccessfully created the key signing container: "+$signing_container_id+"`n" +#endregion + +#region "Generating the signing key" +#calculating nbf (not before) and exp (expiry) tokens into the json required format of seconds past after 1970-01-01T00:00:00Z UTC +Write-Host "`nGenerating the signing key and uploading to the keyset`n" +$start_date = Get-Date -Date "1970-01-01 00:00:00Z" +$date = Get-Date +$nbf = [math]::floor(($date - $start_date).TotalSeconds) +$exp = [math]::floor($nbf + $num_months * 60 * 60 * 24 * 30) + + +$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" +$headers.Add("Authorization", $access_token) +$headers.Add("Content-Type", "application/json") + +$body = "{ +`n `"use`": `"sig`", +`n `"kty`": `"RSA`", +`n `"nbf`": "+$nbf+", +`n `"exp`": "+$exp+", +`n}" + +$response = Invoke-RestMethod ('https://graph.microsoft.com/beta/trustFramework/keySets/'+$signing_container_id+'/generateKey') -Method 'POST' -Headers $headers -Body $body +$response | ConvertTo-Json +Write-Host "Successfully generated the signing key" +#endregion + +#endregion + + +#region "STEP 5.B: Create the encryption key" +Write-Title "STEP 5.B: Creating the Signing Key" + +#region "Creating the encryption keyset (container)"" +Write-Host "`nCreating the signing keyset (container)`n" +$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" +$headers.Add("Authorization", $access_token) +$headers.Add("Content-Type", "application/json") + +$body = "{`"id`":`"B2C_1A_TokenEncryptionKeyContainer`"}" + +$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets' -Method 'POST' -Headers $headers -Body $body +$encryption_container_id = $response.id + +Write-Host "Successfully created the key encryption container: "+$encryption_container_id +#endregion + + +#region "Generating the encryption key" +#calculating nbf (not before) and exp (expiry) tokens into the json required format of seconds past after 1970-01-01T00:00:00Z UTC +Write-Host "`nGenerating the encryption key and uploading to the keyset`n" +$start_date = Get-Date -Date "1970-01-01 00:00:00Z" +$date = Get-Date +$nbf = [math]::floor(($date - $start_date).TotalSeconds) +$exp = [math]::floor((($date - $start_date).TotalSeconds) + $num_months * 60 * 60 * 24 * 30) + + +$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" +$headers.Add("Authorization", $access_token) +$headers.Add("Content-Type", "application/json") + +$body = "{ +`n `"use`": `"enc`", +`n `"kty`": `"RSA`", +`n `"nbf`": "+$nbf+", +`n `"exp`": "+$exp+", +`n}" + +$response = Invoke-RestMethod ('https://graph.microsoft.com/beta/trustFramework/keySets/'+$encryption_container_id+'/generateKey') -Method 'POST' -Headers $headers -Body $body +$response | ConvertTo-Json + +Write-Host "Successfully generated the encryption key" +#endregion + +#endregion + + +#region "STEP 6: uploading the custom policies to the b2c tenant" +Write-Title "STEP 6: Uploading the custom policies to the b2c tenant" # Order matters in the uploads - do not modify the order $currentDir = Get-Location @@ -70,4 +190,5 @@ Write-Host "Uploading custom policy PROFILEEDIT" New-AzureADMSTrustFrameworkPolicy -InputFilePath ($currentDir+"\CustomPolicy\PROFILEEDIT.xml") Write-Host "Uploading custom policy PASSWORDRESET" -New-AzureADMSTrustFrameworkPolicy -InputFilePath ($currentDir+"\CustomPolicy\PASSWORDRESET.xml") \ No newline at end of file +New-AzureADMSTrustFrameworkPolicy -InputFilePath ($currentDir+"\CustomPolicy\PASSWORDRESET.xml") +#endregion \ No newline at end of file From 0f489801e289a6dd7f75400ef99b25c99c3ceae5 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Thu, 30 Jun 2022 11:47:26 +0100 Subject: [PATCH 015/285] B2C setup script now takes sets up the AADAppSecret and CustomPolicyTemplates have been updated accordingly --- deployment/CustomPolicy/PASSWORDRESET.xml | 23 - deployment/CustomPolicy/PROFILEEDIT.xml | 22 - deployment/CustomPolicy/SIGNUP_SIGNIN.xml | 27 - .../CustomPolicy/TRUSTFRAMEWORKBASE.xml | 1204 ----------------- .../CustomPolicy/TRUSTFRAMEWORKEXTENSIONS.xml | 173 --- .../TRUSTFRAMEWORKLOCALIZATION.xml | 240 ---- .../TRUSTFRAMEWORKEXTENSIONS.xml | 2 +- deployment/UploadCustomPolicies.ps1 | 51 +- 8 files changed, 50 insertions(+), 1692 deletions(-) delete mode 100644 deployment/CustomPolicy/PASSWORDRESET.xml delete mode 100644 deployment/CustomPolicy/PROFILEEDIT.xml delete mode 100644 deployment/CustomPolicy/SIGNUP_SIGNIN.xml delete mode 100644 deployment/CustomPolicy/TRUSTFRAMEWORKBASE.xml delete mode 100644 deployment/CustomPolicy/TRUSTFRAMEWORKEXTENSIONS.xml delete mode 100644 deployment/CustomPolicy/TRUSTFRAMEWORKLOCALIZATION.xml diff --git a/deployment/CustomPolicy/PASSWORDRESET.xml b/deployment/CustomPolicy/PASSWORDRESET.xml deleted file mode 100644 index 35205ea0..00000000 --- a/deployment/CustomPolicy/PASSWORDRESET.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - playltib2c.onmicrosoft.com - B2C_1A_TrustFrameworkExtensions - - - - - PolicyProfile - - - - - - - - - - - - - - diff --git a/deployment/CustomPolicy/PROFILEEDIT.xml b/deployment/CustomPolicy/PROFILEEDIT.xml deleted file mode 100644 index 2d799c2b..00000000 --- a/deployment/CustomPolicy/PROFILEEDIT.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - playltib2c.onmicrosoft.com - B2C_1A_TrustFrameworkExtensions - - - - - PolicyProfile - - - - - - - - - - - - - diff --git a/deployment/CustomPolicy/SIGNUP_SIGNIN.xml b/deployment/CustomPolicy/SIGNUP_SIGNIN.xml deleted file mode 100644 index c7a660c2..00000000 --- a/deployment/CustomPolicy/SIGNUP_SIGNIN.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - playltib2c.onmicrosoft.com - B2C_1A_TrustFrameworkExtensions - - - - - PolicyProfile - - - - - - - - - - - - - - - - - - diff --git a/deployment/CustomPolicy/TRUSTFRAMEWORKBASE.xml b/deployment/CustomPolicy/TRUSTFRAMEWORKBASE.xml deleted file mode 100644 index 1fb2ab8c..00000000 --- a/deployment/CustomPolicy/TRUSTFRAMEWORKBASE.xml +++ /dev/null @@ -1,1204 +0,0 @@ - - - - - - - - - - - - - - Username - string - - TextBox - - - - - - - User's Object's Tenant ID - string - - - - - - Tenant identifier (ID) of the user object in Azure AD. - - - - User's Object ID - string - - - - - - Object identifier (ID) of the user object in Azure AD. - - - - - Sign in name - string - - TextBox - - - - Email Address - string - Email address to use for signing in. - TextBox - - - - Account Enabled - boolean - Specifies whether the user's account is enabled. - Specifies whether your account is enabled. - - - - Password - string - Enter password - Password - - - - - New Password - string - Enter new password - Password - - - - - - - - Confirm New Password - string - Confirm new password - Password - - - - - - - Password Policies - string - Password policies used by Azure AD to determine password strength, expiry etc. - - - - client_id - string - Special parameter passed to EvoSTS. - Special parameter passed to EvoSTS. - - - - resource_id - string - Special parameter passed to EvoSTS. - Special parameter passed to EvoSTS. - - - - Subject - string - - - - - - - - AlternativeSecurityId - string - - - - - MailNickName - string - Your mail nick name as stored in the Azure Active Directory. - - - - Identity Provider - string - - - - - - - - - - Display Name - string - - - - - - Your display name. - TextBox - - - - Email Address - string - - - - Email address that can be used to contact you. - TextBox - - - - - - - Alternate Email Addresses - stringCollection - Email addresses that can be used to contact the user. - - - - UserPrincipalName - string - - - - - - Your user name as stored in the Azure Active Directory. - - - - UPN User Name - string - The user name for creating user principal name. - - - - User is new - boolean - - - - - Executed-SelfAsserted-Input - string - A claim that specifies whether attributes were collected from the user. - - - - AuthenticationSource - string - Specifies whether the user was authenticated at Social IDP or local account. - - - - - - nca - string - Special parameter passed for local account authentication to login.microsoftonline.com. - - - - grant_type - string - Special parameter passed for local account authentication to login.microsoftonline.com. - - - - scope - string - Special parameter passed for local account authentication to login.microsoftonline.com. - - - - objectIdFromSession - boolean - Parameter provided by the default session management provider to indicate that the object id has been retrieved from an SSO session. - - - - isActiveMFASession - boolean - Parameter provided by the MFA session management to indicate that the user has an active MFA session. - - - - - - Given Name - string - - - - - - Your given name (also known as first name). - TextBox - - - - Surname - string - - - - - - Your surname (also known as family name or last name). - TextBox - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LineMarkers, MetaRefresh - - - - - - - - ~/tenant/templates/AzureBlue/exception.cshtml - ~/common/default_page_error.html - urn:com:microsoft:aad:b2c:elements:contract:globalexception:1.2.1 - - Error page - - - - - ~/tenant/templates/AzureBlue/idpSelector.cshtml - ~/common/default_page_error.html - urn:com:microsoft:aad:b2c:elements:contract:providerselection:1.2.1 - - Idp selection page - Sign in - - - - - ~/tenant/templates/AzureBlue/idpSelector.cshtml - ~/common/default_page_error.html - urn:com:microsoft:aad:b2c:elements:contract:providerselection:1.2.1 - - Idp selection page - Sign up - - - - - ~/tenant/templates/AzureBlue/unified.cshtml - ~/common/default_page_error.html - urn:com:microsoft:aad:b2c:elements:contract:unifiedssp:2.1.5 - - Signin and Signup - - - - - ~/tenant/templates/AzureBlue/selfAsserted.cshtml - ~/common/default_page_error.html - urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.7 - - Collect information from user page - - - - - ~/tenant/templates/AzureBlue/selfAsserted.cshtml - ~/common/default_page_error.html - urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.7 - - Collect information from user page - - - - - ~/tenant/templates/AzureBlue/selfAsserted.cshtml - ~/common/default_page_error.html - urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.7 - - Local account sign up page - - - - - ~/tenant/templates/AzureBlue/selfAsserted.cshtml - ~/common/default_page_error.html - urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.7 - - Local account change password page - - - - - ~/tenant/templates/AzureBlue/selfAsserted.cshtml - ~/common/default_page_error.html - urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.7 - - Collect information from user page - - - - - ~/tenant/templates/AzureBlue/selfAsserted.cshtml - ~/common/default_page_error.html - urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.7 - - Collect information from user page - - - - - - - - - - - - facebook.com - Facebook - - - - Facebook - - - facebook - https://www.facebook.com/dialog/oauth - https://graph.facebook.com/oauth/access_token - GET - 0 - - - json - - - - - - - - - - - - - - - - - - - - - - - - - - Local Account SignIn - - - Local Account SignIn - - - https://sts.windows.net/ - https://login.microsoftonline.com/{tenant}/.well-known/openid-configuration - https://login.microsoftonline.com/{tenant}/oauth2/token - id_token - query - email openid - - - - false - POST - - - - - - - - - - - - - - - - - - - - - - - Azure Active Directory - - - - Azure Active Directory - - - - - - - - false - - - - - - - Write - true - - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Read - true - - - - - - - - - - - - - - - - - - - - - false - - - - - - - - Write - true - - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - Read - true - - false - - - - - - - - - - - - - - - - - - - - - - - - Write - true - - false - - - - - - - - - - - - - - - - Write - false - true - - false - - - - - - - - - - - - - - - - - - Read - true - - false - - - - - - - - - - - - - - - - - - - - Self Asserted - - - - User ID signup - - - api.socialccountsignup - - - - - - - - - - - - - - - - - - - - - - - - - - - - - User ID signup - - - api.selfasserted.profileupdate - - false - - - - - - - - - - - - - - - - - - - - - - - - - Local Account - - - - Email signup - - - IpAddress - api.localaccountsignup - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Local Account Signin - - - SignUpWithLogonEmailExchange - Email - api.localaccountsignin - true - - false - - - - - - - - - - - - - - - - - - Reset password using email address - - - IpAddress - api.localaccountpasswordreset - - - - - false - - - - - - - - - - - - - - Change password (username) - - - api.localaccountpasswordreset - - - - - - - - - - - - - - - - - - - - - - Session Management - - - Noop Session Management Provider - - - - - Session Mananagement Provider - - - - - - - - - - - - - - - - - - - - - Session Mananagement Provider - - - true - - - - - - - - - Session Management Provider - - - - - - - Trustframework Policy Engine TechnicalProfiles - - - Trustframework Policy Engine Default Technical Profile - - - {service:te} - - - - - - - Token Issuer - - - JWT Issuer - - JWT - - {service:te} - objectId - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - objectId - SkipThisOrchestrationStep - - - - - - - - - - - - - authenticationSource - localAccountAuthentication - SkipThisOrchestrationStep - - - - - - - - - - - - objectId - SkipThisOrchestrationStep - - - - - - - - - - - - authenticationSource - socialIdpAuthentication - SkipThisOrchestrationStep - - - - - - - - - - - objectId - SkipThisOrchestrationStep - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - authenticationSource - localAccountAuthentication - SkipThisOrchestrationStep - - - - - - - - - - authenticationSource - socialIdpAuthentication - SkipThisOrchestrationStep - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/deployment/CustomPolicy/TRUSTFRAMEWORKEXTENSIONS.xml b/deployment/CustomPolicy/TRUSTFRAMEWORKEXTENSIONS.xml deleted file mode 100644 index cba09ed7..00000000 --- a/deployment/CustomPolicy/TRUSTFRAMEWORKEXTENSIONS.xml +++ /dev/null @@ -1,173 +0,0 @@ - - - playltib2c.onmicrosoft.com - B2C_1A_TrustFrameworkLocalization - - - - - commonaad - Common AAD - - - Multi-Tenant AAD - Login with your Contoso account - - - https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration - - ce332c27-6a9b-4bfe-abf8-8584c9cebbcc - code - openid profile - form_post - POST - false - true - - - - https://login.microsoftonline.com/ - - - - - - - - - - - - - - - - - - - - - - - - - - Facebook - - - - 550369626723173>> - email public_profile - https://graph.facebook.com/me?fields=id,first_name,last_name,name,email - - - - - - Local Account SignIn - - - - d210807a-4877-48f3-8f30-2c56687f13f4 - bb59a14f-263b-4a95-8d23-06f842008e14 - - - - - - - - - - - - - - - - - - - - - - - - - - - objectId - SkipThisOrchestrationStep - - - - - - - - - - - - - authenticationSource - localAccountAuthentication - SkipThisOrchestrationStep - - - - - - - - - - - objectId - SkipThisOrchestrationStep - - - - - - - - - - - authenticationSource - socialIdpAuthentication - SkipThisOrchestrationStep - - - - - - - - - - - objectId - SkipThisOrchestrationStep - - - - - - - - - - - - - - - - diff --git a/deployment/CustomPolicy/TRUSTFRAMEWORKLOCALIZATION.xml b/deployment/CustomPolicy/TRUSTFRAMEWORKLOCALIZATION.xml deleted file mode 100644 index aa82ebd9..00000000 --- a/deployment/CustomPolicy/TRUSTFRAMEWORKLOCALIZATION.xml +++ /dev/null @@ -1,240 +0,0 @@ - - - playltib2c.onmicrosoft.com - B2C_1A_TrustFrameworkBase - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - en - - - - Email Address - Sign in - Sign in with your social account - Sign in with your {0} - Password - Please enter your password - Please enter your {0} - Please enter a valid {0} - Sign up now - Sign up with {0} or {1} - Sign up with {0}, {1}, or {2} - Forgot your password? - Sign in - OR - Don't have an account? - We are having trouble signing you in. Please try again later. - - Facebook - Your password is incorrect. - Your password is incorrect. - Your password has expired. - We can't seem to find your account. - Looks like you used an old password. - Invalid username or password. - Your account has been locked. Contact your support person to unlock it, then try again. - Your account is temporarily locked to prevent unauthorized use. Try again later. - There are too many requests at this moment. Please wait for some time and try again. - - - - - - Email Address - Email address that can be used to contact you. - Please enter a valid email address. - New Password - Enter new password - 8-16 characters, containing 3 out of 4 of the following: Lowercase characters, uppercase characters, digits (0-9), and one or more of the following symbols: @ # $ % ^ & * - _ + = [ ] { } | \ : ' , ? / ` ~ " ( ) ; . - Confirm New Password - Confirm new password - 8-16 characters, containing 3 out of 4 of the following: Lowercase characters, uppercase characters, digits (0-9), and one or more of the following symbols: @ # $ % ^ & * - _ + = [ ] { } | \ : ' , ? / ` ~ " ( ) ; . - Display Name - Your display name. - Surname - Your surname (also known as family name or last name). - Given Name - Your given name (also known as first name). - Create - One or more fields are filled out incorrectly. Please check your entries and try again. - The password entry fields do not match. Please enter the same password in both fields and try again. - A required field is missing. Please fill out all required fields and try again. - What is this? - Please provide the following details. - Please wait - This information is required. - Cancel - Change e-mail - Send new code - Send verification code - Verify code - That code is expired. Please request a new code. - You've made too many incorrect attempts. Please try again later. - That code is incorrect. Please try again. - We are having trouble verifying your email address. Please enter a valid email address and try again. - There have been too many requests to verify this email address. Please wait a while, then try again. - Verification code has been sent to your inbox. Please copy it to the input box below. - Verification code - Verification is necessary. Please click Send button. - E-mail address verified. You can now continue. - There are too many requests at this moment. Please wait for some time and try again. - Claim not verified: {0} - A user with the specified ID already exists. Please choose a different one. - Incorrect pattern for: {0} - {0} has invalid input. - Missing required element: {0} - Error in validation by: {0} - - - - - - Email Address - Email address that can be used to contact you. - Please enter a valid email address. - Display Name - Your display name. - Surname - Your surname (also known as family name or last name). - Given Name - Your given name (also known as first name). - Create - Cancel - You are already registered, please press the back button and sign in instead. - - - - - - Email Address - Email address that can be used to contact you. - Please enter a valid email address. - New Password - Enter new password - 8-16 characters, containing 3 out of 4 of the following: Lowercase characters, uppercase characters, digits (0-9), and one or more of the following symbols: @ # $ % ^ & * - _ + = [ ] { } | \ : ' , ? / ` ~ " ( ) ; . - Confirm New Password - Confirm new password - 8-16 characters, containing 3 out of 4 of the following: Lowercase characters, uppercase characters, digits (0-9), and one or more of the following symbols: @ # $ % ^ & * - _ + = [ ] { } | \ : ' , ? / ` ~ " ( ) ; . - The password entry fields do not match. Please enter the same password in both fields and try again. - One or more fields are filled out incorrectly. Please check your entries and try again. - Continue - Cancel - An account could not be found for the provided user ID. - Your account has been locked. Contact your support person to unlock it, then try again. - This information is required. - Change e-mail - Send new code - Send verification code - Verify code - That code is expired. Please request a new code. - You've made too many incorrect attempts. Please try again later. - That code is incorrect. Please try again. - We are having trouble verifying your email address. Please enter a valid email address and try again. - There have been too many requests to verify this email address. Please wait a while, then try again. - Verification code has been sent to your inbox. Please copy it to the input box below. - Verification code - Verification is necessary. Please click Send button. - E-mail address verified. You can now continue. - There are too many requests at this moment. Please wait for some time and try again. - Claim not verified: {0} - A user with the specified ID already exists. Please choose a different one. - Incorrect pattern for: {0} - {0} has invalid input. - Missing required element: {0} - Error in validation by: {0} - - - - - - Sign in - Local Account Signin - Facebook - - - - - - Email Address - Password - Continue - Cancel - Your password is incorrect. - Your password is incorrect. - Your password has expired. - We can't seem to find your account. - Looks like you used an old password. - Invalid username or password. - Your account has been locked. Contact your support person to unlock it, then try again. - Your account is temporarily locked to prevent unauthorized use. Try again later. - There are too many requests at this moment. Please wait for some time and try again. - - - - - - Display Name - Your display name. - Surname - Your surname (also known as family name or last name). - Given Name - Your given name (also known as first name). - Continue - Cancel - - - - - - - - - - diff --git a/deployment/CustomPolicyTemplates/TRUSTFRAMEWORKEXTENSIONS.xml b/deployment/CustomPolicyTemplates/TRUSTFRAMEWORKEXTENSIONS.xml index f83e9a4b..1a2e4705 100644 --- a/deployment/CustomPolicyTemplates/TRUSTFRAMEWORKEXTENSIONS.xml +++ b/deployment/CustomPolicyTemplates/TRUSTFRAMEWORKEXTENSIONS.xml @@ -16,7 +16,7 @@ https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration - ce332c27-6a9b-4bfe-abf8-8584c9cebbcc + <> code openid profile form_post diff --git a/deployment/UploadCustomPolicies.ps1 b/deployment/UploadCustomPolicies.ps1 index 2503de77..281588f3 100644 --- a/deployment/UploadCustomPolicies.ps1 +++ b/deployment/UploadCustomPolicies.ps1 @@ -21,6 +21,7 @@ $B2cTenantName = Read-Host "What is the name of your b2c tenant?" $ProxyIdentityExperienceFrameworkAppId = Read-Host "What is the application ID of the ProxyIdentityExperienceFramework application you created?" $IdentityExperienceFrameworkAppId = Read-Host "What is the application ID of the IdentityExperienceFramework application you created?" $FacebookId = Read-Host "What is the application ID of the Facebook application you created?" +$MultitenantAppID = Read-Host "What is the application ID of the Azure AD multi-tenant application that you registered earlier?" #endregion @@ -45,6 +46,8 @@ Foreach-Object { ((Get-Content -path $_.FullName -Raw) -replace '<>', $FacebookId) | Set-Content -path (".\CustomPolicy\"+$_.Name) + ((Get-Content -path $_.FullName -Raw) -replace '<>', $MultitenantAppID) | Set-Content -path (".\CustomPolicy\"+$_.Name) + } #endregion @@ -113,7 +116,7 @@ $body = "{ `n}" $response = Invoke-RestMethod ('https://graph.microsoft.com/beta/trustFramework/keySets/'+$signing_container_id+'/generateKey') -Method 'POST' -Headers $headers -Body $body -$response | ConvertTo-Json + Write-Host "Successfully generated the signing key" #endregion @@ -159,11 +162,55 @@ $body = "{ `n}" $response = Invoke-RestMethod ('https://graph.microsoft.com/beta/trustFramework/keySets/'+$encryption_container_id+'/generateKey') -Method 'POST' -Headers $headers -Body $body -$response | ConvertTo-Json Write-Host "Successfully generated the encryption key" #endregion + +#region "STEP 5.C: Create the AADSecret keyset"" +Write-Title "STEP 5.B: Creating the AADAppSecret Key" + +#region "Creating the AADAppSecret keyset (container)"" +Write-Host "`nCreating the AADAppSecret keyset (container)`n" +$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" +$headers.Add("Authorization", $access_token) +$headers.Add("Content-Type", "application/json") + +$body = "{`"id`":`"B2C_1A_AADAppSecret`"}" + +$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets' -Method 'POST' -Headers $headers -Body $body +$AADAppSecret_container_id = $response.id + +Write-Host "Successfully created the key AADAppSecret container: "+$AADAppSecret_container_id +#endregion +Write-Host "`nCreating the AADAppSecret keyset (container)`n" + +#region "Uploading the AADAppSecret key" +$clientSecret = Read-Host "What is the client secret that you recorded earlier?" + +#calculating nbf (not before) and exp (expiry) tokens into the json required format of seconds past after 1970-01-01T00:00:00Z UTC +Write-Host "`nGenerating the AADAppSecret key and uploading to the keyset`n" +$start_date = Get-Date -Date "1970-01-01 00:00:00Z" +$date = Get-Date +$nbf = [math]::floor(($date - $start_date).TotalSeconds) +$exp = [math]::floor((($date - $start_date).TotalSeconds) + $num_months * 60 * 60 * 24 * 30) + +#uploading the AADAppSecret key +$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" +$headers.Add("Content-Type", "text/plain") + +$body = "{ +`n `"use`": `"sig`", +`n `"k`": `""+$clientSecret+"`", +`n `"nbf`": "+$nbf+", +`n `"exp`": "+$exp+" +`n}" + +$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets/'+$AADAppSecret_container_id+'/uploadSecret?Authorization='+$access_token+'&Content-type=application/json' -Method 'POST' -Headers $headers -Body $body + +Write-Host "Successfully uploaded the AADAppSecret key" +#endregion + #endregion From c0159aa2b170c7b5274138b7b6646b2b9cfdc8ab Mon Sep 17 00:00:00 2001 From: Tianchen Zhang Date: Thu, 30 Jun 2022 14:24:31 +0100 Subject: [PATCH 016/285] Automated B2C deployment script --- deployment/B2CDeployment.ps1 | 136 +++++++++++++++++++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 deployment/B2CDeployment.ps1 diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 new file mode 100644 index 00000000..9b575a4d --- /dev/null +++ b/deployment/B2CDeployment.ps1 @@ -0,0 +1,136 @@ +$ErrorActionPreference = "Stop" + +function Write-Title([string]$Title) { + Write-Host "`n`n=============================================================" + Write-Host $Title + Write-Host "=============================================================`n`n" +} + +# A Create Active Directory application +$TenantName = Read-Host "Please enter your B2C tenant name" +$ADTenantName = Read-Host "Please enter your AD tenant name" + +Write-Title "STEP 1: Create AD application" +az login --tenant "$ADTenantName.onmicrosoft.com" --allow-no-subscriptions --only-show-errors > $null +$ADAppName = Read-Host "Please enter the name of the AD application" +$ADAppManifest = @" + { + "idToken": [ + { + "name": "email", + "essential": false, + }, + { + "name": "family_name", + "essential": false, + }, + { + "name": "given_name", + "essential": false, + } + ], + "accessToken": [], + "saml2Token": [] + } +"@ | ConvertFrom-Json +ConvertTo-Json -InputObject $ADAppManifest | Out-File -FilePath "manifest.json" +$ADClientID = (az ad app create --display-name $ADAppName --sign-in-audience AzureADandPersonalMicrosoftAccount --web-redirect-uris https://$TenantName.b2clogin.com/$TenantName.onmicrosoft.com/oauth2/authresp --optional-claims "@manifest.json" --query appId --output tsv --only-show-errors) + +# Create client secret +Write-Host "Creating the client secret for $ADAppName" +$ADClientSecretName = Read-Host "Please enter the name of the client secret" +$ADClientSecretDuration = 1 +$ADClientSecret = (az ad app credential reset --id $ADClientID --append --display-name $ADClientSecretName --years $ADClientSecretDuration --query password --output tsv --only-show-errors) +Write-Host "Please do protect the following client secret." +Write-Host "Client secret for $ADAppName`: $ADClientSecret" + +# grant permissions for the AD app +Write-Host "Granting permissions to the AD application" +$profilePermission = "14dad69e-099b-42c9-810b-d002981feec1=Scope" +$emailPermission = "64a6cdd6-aab1-4aaf-94b8-3cc8405e90d0=Scope" +az ad sp create --id $ADClientID --only-show-errors > $null +az ad app permission grant --id $ADClientID --api 00000003-0000-0000-c000-000000000000 --scope "email profile" --only-show-errors > $null +az ad app permission add --id $ADClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $emailPermission $profilePermission --only-show-errors + +Remove-Item manifest.json + +################### + +# B login +Write-Title "STEP 2: Logging into the B2C Tenant" +az login --tenant "$TenantName.onmicrosoft.com" --allow-no-subscriptions --only-show-errors > $null + +################### + +# C Create the web app +Write-Title "STEP 3: Creating the B2C Web application" +$B2cAppName = Read-Host "Please enter the name of the web application" +$WebClientID = (az ad app create --display-name $B2cAppName --sign-in-audience AzureADandPersonalMicrosoftAccount --web-redirect-uris https://jwt.ms --enable-access-token-issuance true --enable-id-token-issuance true --query appId --output tsv --only-show-errors) + +# create client secret +Write-Host "Creating the client secret for $B2cAppName" +$WebClientSecretName = Read-Host "Please enter the name of the client secret" +$WebClientSecretDuration = 1 +$WebClientSecret = (az ad app credential reset --id $WebClientID --append --display-name $WebClientSecretName --years $WebClientSecretDuration --query password --output tsv --only-show-errors) +Write-Host "Please do protect the following client secret." +Write-Host "Client secret for $B2cAppName`: $WebClientSecret" + +# set permissions for the web app +Write-Host "Granting permissions to the B2C Web application" +$openidPermission = "37f7f235-527c-4136-accd-4a02d197296e=Scope" +$offlineAccessPermission = "7427e0e9-2fba-42fe-b0c0-848c9e6a8182=Scope" +az ad sp create --id $WebClientID --only-show-errors > $null +az ad app permission grant --id $WebClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null +az ad app permission add --id $WebClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors + + +################### + +# D Create IdentityExperienceFramework app +Write-Title "STEP 4: Creating the Identity Experience Framework application" +$IEFAppName = "IdentityExperienceFramework" +$IEFClientID = (az ad app create --display-name $IEFAppName --sign-in-audience AzureADMyOrg --web-redirect-uris https://$TenantName.b2clogin.com/$TenantName.onmicrosoft.com --query appId --output tsv --only-show-errors) + +# set permissions for the IEF app +Write-Host "Granting permissions to the IEF application" +az ad sp create --id $IEFClientID --only-show-errors > $null +az ad app permission grant --id $IEFClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null +az ad app permission add --id $IEFClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors + +# expose the user_impersonation API +Write-Host "Exposing the user_impersonation API" +az ad app update --id $IEFClientID --identifier-uris "https://playltib2c.onmicrosoft.com/$IEFClientID" --only-show-errors +$IEFAppInfo = (az ad app show --id $IEFClientID --only-show-errors | ConvertFrom-Json) +$IEFAppApiInfo = $IEFAppInfo.api +$IEFScopeGUID = [guid]::NewGuid() +$UserImpersonationScope = @" + { + "adminConsentDescription": "Allow the application to access IdentityExperienceFramework on behalf of the signed-in user.", + "adminConsentDisplayName": "Access IdentityExperienceFramework", + "id": "$IEFScopeGUID", + "isEnabled": true, + "type": "Admin", + "userConsentDescription": null, + "userConsentDisplayName": null, + "value": "user_impersonation" + } +"@ | ConvertFrom-Json +$IEFAppApiInfo.oauth2PermissionScopes += $UserImpersonationScope +ConvertTo-Json -InputObject $IEFAppApiInfo | Out-File -FilePath "userImpersonationScope.json" +az ad app update --id $IEFClientID --set api=@userImpersonationScope.json --only-show-errors + +Remove-Item userImpersonationScope.json + +################### + +# E Create ProxyIEF app +Write-Title "STEP 5: Creating the Proxy Identity Experience Framework application" +$ProxyIEFAppName = "ProxyIdentityExperienceFramework" +$ProxyIEFClientID = (az ad app create --display-name $ProxyIEFAppName --sign-in-audience AzureADMyOrg --public-client-redirect-uris myapp://auth --is-fallback-public-client true --query appId --output tsv --only-show-errors) + +Write-Host "Granting permissions to the Proxy IEF application" +az ad sp create --id $ProxyIEFClientID --only-show-errors > $null +az ad app permission grant --id $ProxyIEFClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null +az ad app permission add --id $ProxyIEFClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors +az ad app permission grant --id $ProxyIEFClientID --api $IEFClientID --scope "user_impersonation" --only-show-errors > $null +az ad app permission add --id $ProxyIEFClientID --api $IEFClientID --api-permissions "$IEFScopeGUID=Scope" --only-show-errors \ No newline at end of file From 729840028c961d40e8718f1092eeb3a7fad51f48 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Thu, 30 Jun 2022 17:08:16 +0100 Subject: [PATCH 017/285] Integrated Dan's and Tianchens scripts for setting up the b2c and debugged issues that arose --- deployment/B2CDeployment.ps1 | 366 ++++- deployment/CustomPolicy/.gitkeep | 0 deployment/CustomPolicy/PASSWORDRESET.xml | 24 + deployment/CustomPolicy/PROFILEEDIT.xml | 23 + deployment/CustomPolicy/SIGNUP_SIGNIN.xml | 28 + .../CustomPolicy/TRUSTFRAMEWORKBASE.xml | 1205 +++++++++++++++++ .../CustomPolicy/TRUSTFRAMEWORKEXTENSIONS.xml | 174 +++ .../TRUSTFRAMEWORKLOCALIZATION.xml | 241 ++++ deployment/UploadCustomPolicies.ps1 | 241 ---- 9 files changed, 2001 insertions(+), 301 deletions(-) create mode 100644 deployment/CustomPolicy/.gitkeep create mode 100644 deployment/CustomPolicy/PASSWORDRESET.xml create mode 100644 deployment/CustomPolicy/PROFILEEDIT.xml create mode 100644 deployment/CustomPolicy/SIGNUP_SIGNIN.xml create mode 100644 deployment/CustomPolicy/TRUSTFRAMEWORKBASE.xml create mode 100644 deployment/CustomPolicy/TRUSTFRAMEWORKEXTENSIONS.xml create mode 100644 deployment/CustomPolicy/TRUSTFRAMEWORKLOCALIZATION.xml delete mode 100644 deployment/UploadCustomPolicies.ps1 diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 9b575a4d..56e6e65a 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -1,79 +1,97 @@ $ErrorActionPreference = "Stop" +#region "Helper Functions" +#function for making clear and distinct titles function Write-Title([string]$Title) { Write-Host "`n`n=============================================================" Write-Host $Title Write-Host "=============================================================`n`n" } -# A Create Active Directory application -$TenantName = Read-Host "Please enter your B2C tenant name" +#function for making coloured outputs +function Write-Color($Color, [string]$Text) { + process{Write-Host $Text -ForegroundColor $Color} +} +#endregion + +#region "Importing Modules" +Write-Title "Importing Modules" +Write-Host "Importing Module AzureADPreview" # REQUIRES THE PREVIEW VERSION +Import-Module AzureADPreview +# Write-Host "Importing Module Microsoft.Graph.Identity.SignIns" +# Import-Module Microsoft.Graph.Identity.SignIns +#endregion + +#region "STEP 1: Create Active Directory application" +$B2cTenantName = Read-Host "Please enter your B2C tenant name" $ADTenantName = Read-Host "Please enter your AD tenant name" Write-Title "STEP 1: Create AD application" +Write-Host "Please login via the pop-up window that has launched in your browser" az login --tenant "$ADTenantName.onmicrosoft.com" --allow-no-subscriptions --only-show-errors > $null -$ADAppName = Read-Host "Please enter the name of the AD application" -$ADAppManifest = @" - { - "idToken": [ - { - "name": "email", - "essential": false, - }, - { - "name": "family_name", - "essential": false, - }, - { - "name": "given_name", - "essential": false, - } - ], - "accessToken": [], - "saml2Token": [] - } -"@ | ConvertFrom-Json -ConvertTo-Json -InputObject $ADAppManifest | Out-File -FilePath "manifest.json" -$ADClientID = (az ad app create --display-name $ADAppName --sign-in-audience AzureADandPersonalMicrosoftAccount --web-redirect-uris https://$TenantName.b2clogin.com/$TenantName.onmicrosoft.com/oauth2/authresp --optional-claims "@manifest.json" --query appId --output tsv --only-show-errors) +$ADAppName = Read-Host "Please give a name for the AD application to be created" +$ADAppManifest = "{ + `"idToken`": [ + { + `"name`": `"email`", + `"essential`": false + }, + { + `"name`": `"family_name`", + `"essential`": false + }, + { + `"name`": `"given_name`", + `"essential`": false + } + ], + `"accessToken`": [], + `"saml2Token`": [] +}" +Out-File -FilePath "manifest.json" -InputObject $ADAppManifest +$MultiTenantAppID = (az ad app create --display-name $ADAppName --sign-in-audience AzureADandPersonalMicrosoftAccount --web-redirect-uris https://$B2cTenantName.b2clogin.com/$B2cTenantName.onmicrosoft.com/oauth2/authresp --optional-claims "@manifest.json" --query appId --output tsv --only-show-errors) # Create client secret Write-Host "Creating the client secret for $ADAppName" -$ADClientSecretName = Read-Host "Please enter the name of the client secret" +$ADClientSecretName = Read-Host "Please give a name for the client secret to be created" $ADClientSecretDuration = 1 -$ADClientSecret = (az ad app credential reset --id $ADClientID --append --display-name $ADClientSecretName --years $ADClientSecretDuration --query password --output tsv --only-show-errors) -Write-Host "Please do protect the following client secret." -Write-Host "Client secret for $ADAppName`: $ADClientSecret" +$ADClientSecret = (az ad app credential reset --id $MultiTenantAppID --append --display-name $ADClientSecretName --years $ADClientSecretDuration --query password --output tsv --only-show-errors) +Write-Color "green" "Please take a moment to make a note of and protect the following client secret; as you will not be able to access it again." +Write-Color "green" "Client secret for $ADAppName`: $ADClientSecret" +Read-Host "Press enter when ready to continue after recording the client secret" # grant permissions for the AD app Write-Host "Granting permissions to the AD application" $profilePermission = "14dad69e-099b-42c9-810b-d002981feec1=Scope" $emailPermission = "64a6cdd6-aab1-4aaf-94b8-3cc8405e90d0=Scope" -az ad sp create --id $ADClientID --only-show-errors > $null -az ad app permission grant --id $ADClientID --api 00000003-0000-0000-c000-000000000000 --scope "email profile" --only-show-errors > $null -az ad app permission add --id $ADClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $emailPermission $profilePermission --only-show-errors +az ad sp create --id $MultiTenantAppID --only-show-errors > $null +az ad app permission grant --id $MultiTenantAppID --api 00000003-0000-0000-c000-000000000000 --scope "email profile" --only-show-errors > $null +az ad app permission add --id $MultiTenantAppID --api 00000003-0000-0000-c000-000000000000 --api-permissions $emailPermission $profilePermission --only-show-errors Remove-Item manifest.json +#endregion -################### -# B login +#region "STEP 2: login" Write-Title "STEP 2: Logging into the B2C Tenant" -az login --tenant "$TenantName.onmicrosoft.com" --allow-no-subscriptions --only-show-errors > $null +Write-Host "Please login via the pop-up window that has launched in your browser" +az login --tenant "$B2cTenantName.onmicrosoft.com" --allow-no-subscriptions --only-show-errors > $null +#endregion -################### -# C Create the web app +#region "STEP 3: Create the web app" Write-Title "STEP 3: Creating the B2C Web application" -$B2cAppName = Read-Host "Please enter the name of the web application" +$B2cAppName = Read-Host "Please give a name for the web application to be created" $WebClientID = (az ad app create --display-name $B2cAppName --sign-in-audience AzureADandPersonalMicrosoftAccount --web-redirect-uris https://jwt.ms --enable-access-token-issuance true --enable-id-token-issuance true --query appId --output tsv --only-show-errors) # create client secret Write-Host "Creating the client secret for $B2cAppName" -$WebClientSecretName = Read-Host "Please enter the name of the client secret" +$WebClientSecretName = Read-Host "Please give a the name for the client secret to be created" $WebClientSecretDuration = 1 $WebClientSecret = (az ad app credential reset --id $WebClientID --append --display-name $WebClientSecretName --years $WebClientSecretDuration --query password --output tsv --only-show-errors) -Write-Host "Please do protect the following client secret." -Write-Host "Client secret for $B2cAppName`: $WebClientSecret" +Write-Color "green" "Please take a moment to make a note of and protect the following client secret; as you will not be able to access it again." +Write-Color "green" "Client secret for $B2cAppName`: $WebClientSecret" +Read-Host "Press enter when ready to continue after recording the client secret" # set permissions for the web app Write-Host "Granting permissions to the B2C Web application" @@ -82,14 +100,13 @@ $offlineAccessPermission = "7427e0e9-2fba-42fe-b0c0-848c9e6a8182=Scope" az ad sp create --id $WebClientID --only-show-errors > $null az ad app permission grant --id $WebClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null az ad app permission add --id $WebClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors +#endregion -################### - -# D Create IdentityExperienceFramework app +#region "STEP 4: Create IdentityExperienceFramework app" Write-Title "STEP 4: Creating the Identity Experience Framework application" $IEFAppName = "IdentityExperienceFramework" -$IEFClientID = (az ad app create --display-name $IEFAppName --sign-in-audience AzureADMyOrg --web-redirect-uris https://$TenantName.b2clogin.com/$TenantName.onmicrosoft.com --query appId --output tsv --only-show-errors) +$IEFClientID = (az ad app create --display-name $IEFAppName --sign-in-audience AzureADMyOrg --web-redirect-uris https://$B2cTenantName.b2clogin.com/$B2cTenantName.onmicrosoft.com --query appId --output tsv --only-show-errors) # set permissions for the IEF app Write-Host "Granting permissions to the IEF application" @@ -103,27 +120,25 @@ az ad app update --id $IEFClientID --identifier-uris "https://playltib2c.onmicro $IEFAppInfo = (az ad app show --id $IEFClientID --only-show-errors | ConvertFrom-Json) $IEFAppApiInfo = $IEFAppInfo.api $IEFScopeGUID = [guid]::NewGuid() -$UserImpersonationScope = @" - { - "adminConsentDescription": "Allow the application to access IdentityExperienceFramework on behalf of the signed-in user.", - "adminConsentDisplayName": "Access IdentityExperienceFramework", - "id": "$IEFScopeGUID", - "isEnabled": true, - "type": "Admin", - "userConsentDescription": null, - "userConsentDisplayName": null, - "value": "user_impersonation" - } -"@ | ConvertFrom-Json +$UserImpersonationScope = "{ + `"adminConsentDescription`": `"Allow the application to access IdentityExperienceFramework on behalf of the signed-in user.`", + `"adminConsentDisplayName`": `"Access IdentityExperienceFramework`", + `"id`": `"$IEFScopeGUID`", + `"isEnabled`": true, + `"type`": `"Admin`", + `"userConsentDescription`": null, + `"userConsentDisplayName`": null, + `"value`": `"user_impersonation`" +}" | ConvertFrom-Json $IEFAppApiInfo.oauth2PermissionScopes += $UserImpersonationScope ConvertTo-Json -InputObject $IEFAppApiInfo | Out-File -FilePath "userImpersonationScope.json" az ad app update --id $IEFClientID --set api=@userImpersonationScope.json --only-show-errors Remove-Item userImpersonationScope.json +#endregion -################### -# E Create ProxyIEF app +#region "STEP 5: Create ProxyIEF app" Write-Title "STEP 5: Creating the Proxy Identity Experience Framework application" $ProxyIEFAppName = "ProxyIdentityExperienceFramework" $ProxyIEFClientID = (az ad app create --display-name $ProxyIEFAppName --sign-in-audience AzureADMyOrg --public-client-redirect-uris myapp://auth --is-fallback-public-client true --query appId --output tsv --only-show-errors) @@ -133,4 +148,235 @@ az ad sp create --id $ProxyIEFClientID --only-show-errors > $null az ad app permission grant --id $ProxyIEFClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null az ad app permission add --id $ProxyIEFClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors az ad app permission grant --id $ProxyIEFClientID --api $IEFClientID --scope "user_impersonation" --only-show-errors > $null -az ad app permission add --id $ProxyIEFClientID --api $IEFClientID --api-permissions "$IEFScopeGUID=Scope" --only-show-errors \ No newline at end of file +az ad app permission add --id $ProxyIEFClientID --api $IEFClientID --api-permissions "$IEFScopeGUID=Scope" --only-show-errors +#endregion + + +#region "STEP 6: getting the values we want to replace from the templates" +Write-Title "STEP 6: Getting values to use in the custom policies?" +$HasFaceBookApp = "" +while($HasFaceBookApp -ne "Y" -and $HasFaceBookApp -ne "N"){ + $HasFaceBookApp = Read-Host "Do you have a facebook application set up that you'd like to link? (y/n)" +} +$FacebookId = "00000000-0000-0000-0000-000000000000" #default to meaningless placeholder value if app isn't set up +if($HasFaceBookApp -eq "y"){ + $FacebookId = Read-Host "What is the application ID of the Facebook application you created?" +} +#endregion + + +#region "STEP 7: looping through each CustomPolicyTemplate and creating bases of them in CustomTemplates" +Write-Title "STEP 7: Creating template custom policies" +Get-ChildItem ".\CustomPolicyTemplates\" | +Foreach-Object { + ((Get-Content -path $_.FullName -Raw)) | Set-Content -path (".\CustomPolicy\"+$_.Name) +} +#endregion + + +#region "STEP 8: looping through each CustomPolicy and replacing their placeholder values to generate the final custom policies" +Write-Title "STEP 8: Replacing values in template custom policies to generate finalised custom policies" +Get-ChildItem ".\CustomPolicy\" | +Foreach-Object { + ((Get-Content -path $_.FullName -Raw) -replace '<>', $B2cTenantName) | Set-Content -path (".\CustomPolicy\"+$_.Name) + + ((Get-Content -path $_.FullName -Raw) -replace '<>', $ProxyIEFClientID) | Set-Content -path (".\CustomPolicy\"+$_.Name) + + ((Get-Content -path $_.FullName -Raw) -replace '<>', $IEFClientID) | Set-Content -path (".\CustomPolicy\"+$_.Name) + + ((Get-Content -path $_.FullName -Raw) -replace '<>', $FacebookId) | Set-Content -path (".\CustomPolicy\"+$_.Name) + + ((Get-Content -path $_.FullName -Raw) -replace '<>', $MultitenantAppID) | Set-Content -path (".\CustomPolicy\"+$_.Name) + +} +#endregion + +#region "STEP 9: Add signing and encryption keys for the IEF applications" +Write-Title "STEP 9: Adding signing and encryption keys for the IEF applications" + +#region "Getting the token to be used in the GET/POST requests" +# relevant docs: https://docs.microsoft.com/en-us/graph/auth-v2-service#4-get-an-access-token +Write-Host "Getting the token to be used in the GET/POST requests" + +$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" +$headers.Add("Content-Type", "application/x-www-form-urlencoded") + +$body = "client_id=a00baec5-65fc-4488-947f-8584625d47a5&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&client_secret=qlA8Q~~IUVTBB.snchHBe2V1f6o_6m6-nNOgba0i&grant_type=client_credentials" + +$response = Invoke-RestMethod 'https://login.microsoftonline.com/playltib2c.onmicrosoft.com/oauth2/v2.0/token' -Method 'POST' -Headers $headers -Body $body +$access_token = $response.access_token +$access_token = "Bearer " + $access_token +#endregion + +$num_months = 0 +while($num_months -le 0){ + [uint16] $num_months = Read-Host "How many months do you want the keys to be valid for? (must be greater than 0)" +} + +#region "STEP 9.A: Create the signing key" +Write-Title "STEP 9.A: Creating the Signing Key" + +#region "Creating the signing keyset (container)"" +Write-Host "`nCreating the signing keyset (container)`n" +$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" +$headers.Add("Authorization", $access_token) +$headers.Add("Content-Type", "application/json") + +$body = "{`"id`":`"B2C_1A_TokenSigningKeyContainer`"}" + +$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets' -Method 'POST' -Headers $headers -Body $body +$response | ConvertTo-Json +$signing_container_id = $response.id + +Write-Host "`nSuccessfully created the key signing container: "+$signing_container_id+"`n" +#endregion + +#region "Generating the signing key" +#calculating nbf (not before) and exp (expiry) tokens into the json required format of seconds past after 1970-01-01T00:00:00Z UTC +Write-Host "`nGenerating the signing key and uploading to the keyset`n" +$start_date = Get-Date -Date "1970-01-01 00:00:00Z" +$date = Get-Date +$nbf = [math]::floor(($date - $start_date).TotalSeconds) +$exp = [math]::floor($nbf + $num_months * 60 * 60 * 24 * 30) + + +$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" +$headers.Add("Authorization", $access_token) +$headers.Add("Content-Type", "application/json") + +$body = "{ +`n `"use`": `"sig`", +`n `"kty`": `"RSA`", +`n `"nbf`": "+$nbf+", +`n `"exp`": "+$exp+", +`n}" + +$response = Invoke-RestMethod ('https://graph.microsoft.com/beta/trustFramework/keySets/'+$signing_container_id+'/generateKey') -Method 'POST' -Headers $headers -Body $body + +Write-Host "Successfully generated the signing key" +#endregion + +#endregion + + +#region "STEP 9.B: Create the encryption key" +Write-Title "STEP 9.B: Creating the Signing Key" + +#region "Creating the encryption keyset (container)"" +Write-Host "`nCreating the signing keyset (container)`n" +$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" +$headers.Add("Authorization", $access_token) +$headers.Add("Content-Type", "application/json") + +$body = "{`"id`":`"B2C_1A_TokenEncryptionKeyContainer`"}" + +$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets' -Method 'POST' -Headers $headers -Body $body +$encryption_container_id = $response.id + +Write-Host "Successfully created the key encryption container: $encryption_container_id" +#endregion + + +#region "Generating the encryption key" +#calculating nbf (not before) and exp (expiry) tokens into the json required format of seconds past after 1970-01-01T00:00:00Z UTC +Write-Host "`nGenerating the encryption key and uploading to the keyset`n" +$start_date = Get-Date -Date "1970-01-01 00:00:00Z" +$date = Get-Date +$nbf = [math]::floor(($date - $start_date).TotalSeconds) +$exp = [math]::floor((($date - $start_date).TotalSeconds) + $num_months * 60 * 60 * 24 * 30) + + +$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" +$headers.Add("Authorization", $access_token) +$headers.Add("Content-Type", "application/json") + +$body = "{ +`n `"use`": `"enc`", +`n `"kty`": `"RSA`", +`n `"nbf`": "+$nbf+", +`n `"exp`": "+$exp+", +`n}" + +$response = Invoke-RestMethod ("https://graph.microsoft.com/beta/trustFramework/keySets/$encryption_container_id/generateKey") -Method 'POST' -Headers $headers -Body $body + +Write-Host "Successfully generated the encryption key" +#endregion +#endregion + + +#region "STEP 9.C: Create the AADSecret keyset"" +Write-Title "STEP 9.C: Creating the AADAppSecret Key" + +#region "Creating the AADAppSecret keyset (container)"" +Write-Host "`nCreating the AADAppSecret keyset (container)`n" +$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" +$headers.Add("Authorization", $access_token) +$headers.Add("Content-Type", "application/json") + +$body = "{`"id`":`"B2C_1A_AADAppSecret`"}" + +$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets' -Method 'POST' -Headers $headers -Body $body +$AADAppSecret_container_id = $response.id + +Write-Host "Successfully created the key AADAppSecret container: $AADAppSecret_container_id" +#endregion + +#region "Uploading the AADAppSecret key" + +#calculating nbf (not before) and exp (expiry) tokens into the json required format of seconds past after 1970-01-01T00:00:00Z UTC +Write-Host "`nGenerating the AADAppSecret key and uploading to the keyset`n" +$start_date = Get-Date -Date "1970-01-01 00:00:00Z" +$date = Get-Date +$nbf = [math]::floor(($date - $start_date).TotalSeconds) +$exp = [math]::floor((($date - $start_date).TotalSeconds) + $num_months * 60 * 60 * 24 * 30) + +#uploading the AADAppSecret key +$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" +$headers.Add("Authorization", $access_token) +$headers.Add("Content-Type", "application/json") + +$body = "{ +`n `"use`": `"sig`", +`n `"k`": `""+$ADClientSecret+"`", +`n `"nbf`": "+$nbf+", +`n `"exp`": "+$exp+" +`n}" + +$response = Invoke-RestMethod "https://graph.microsoft.com/beta/trustFramework/keySets/$AADAppSecret_container_id/uploadSecret" -Method 'POST' -Headers $headers -Body $body + +Write-Host "Successfully uploaded the AADAppSecret key" +#endregion + +#endregion +#endregion + +#region "STEP 10: Connecting to the b2c tenant" +Write-Title "STEP 10: Connecting to the b2c tenant" + +$B2cTenantDomain = $B2cTenantName+".onmicrosoft.com" +Write-Host "Connecting to the tenant" +Connect-AzureAD -Tenant $B2cTenantDomain +#endregion + +#region "STEP 11: uploading the custom policies to the b2c tenant" +Write-Title "STEP 11: Uploading the custom policies to the b2c tenant" + +# Order matters in the uploads - do not modify the order +Write-Host "Uploading custom policy TRUSTFRAMEWORKBASE" +New-AzureADMSTrustFrameworkPolicy -InputFilePath ($currentDir+"\CustomPolicy\TRUSTFRAMEWORKBASE.xml") + +Write-Host "Uploading custom policy TRUSTFRAMEWORKLOCALIZATION" +New-AzureADMSTrustFrameworkPolicy -InputFilePath ($currentDir+"\CustomPolicy\TRUSTFRAMEWORKLOCALIZATION.xml") + +Write-Host "Uploading custom policy TRUSTFRAMEWORKEXTENSIONS" +New-AzureADMSTrustFrameworkPolicy -InputFilePath ($currentDir+"\CustomPolicy\TRUSTFRAMEWORKEXTENSIONS.xml") + +Write-Host "Uploading custom policy SIGNUP_SIGNIN" +New-AzureADMSTrustFrameworkPolicy -InputFilePath ($currentDir+"\CustomPolicy\SIGNUP_SIGNIN.xml") + +Write-Host "Uploading custom policy PROFILEEDIT" +New-AzureADMSTrustFrameworkPolicy -InputFilePath ($currentDir+"\CustomPolicy\PROFILEEDIT.xml") + +Write-Host "Uploading custom policy PASSWORDRESET" +New-AzureADMSTrustFrameworkPolicy -InputFilePath ($currentDir+"\CustomPolicy\PASSWORDRESET.xml") +#endregion \ No newline at end of file diff --git a/deployment/CustomPolicy/.gitkeep b/deployment/CustomPolicy/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/deployment/CustomPolicy/PASSWORDRESET.xml b/deployment/CustomPolicy/PASSWORDRESET.xml new file mode 100644 index 00000000..01a2d563 --- /dev/null +++ b/deployment/CustomPolicy/PASSWORDRESET.xml @@ -0,0 +1,24 @@ + + + playltib2c.onmicrosoft.com + B2C_1A_TrustFrameworkExtensions + + + + + PolicyProfile + + + + + + + + + + + + + + + diff --git a/deployment/CustomPolicy/PROFILEEDIT.xml b/deployment/CustomPolicy/PROFILEEDIT.xml new file mode 100644 index 00000000..8575e469 --- /dev/null +++ b/deployment/CustomPolicy/PROFILEEDIT.xml @@ -0,0 +1,23 @@ + + + playltib2c.onmicrosoft.com + B2C_1A_TrustFrameworkExtensions + + + + + PolicyProfile + + + + + + + + + + + + + + diff --git a/deployment/CustomPolicy/SIGNUP_SIGNIN.xml b/deployment/CustomPolicy/SIGNUP_SIGNIN.xml new file mode 100644 index 00000000..f07ea966 --- /dev/null +++ b/deployment/CustomPolicy/SIGNUP_SIGNIN.xml @@ -0,0 +1,28 @@ + + + playltib2c.onmicrosoft.com + B2C_1A_TrustFrameworkExtensions + + + + + PolicyProfile + + + + + + + + + + + + + + + + + + + diff --git a/deployment/CustomPolicy/TRUSTFRAMEWORKBASE.xml b/deployment/CustomPolicy/TRUSTFRAMEWORKBASE.xml new file mode 100644 index 00000000..7888832f --- /dev/null +++ b/deployment/CustomPolicy/TRUSTFRAMEWORKBASE.xml @@ -0,0 +1,1205 @@ + + + + + + + + + + + + + + Username + string + + TextBox + + + + + + + User's Object's Tenant ID + string + + + + + + Tenant identifier (ID) of the user object in Azure AD. + + + + User's Object ID + string + + + + + + Object identifier (ID) of the user object in Azure AD. + + + + + Sign in name + string + + TextBox + + + + Email Address + string + Email address to use for signing in. + TextBox + + + + Account Enabled + boolean + Specifies whether the user's account is enabled. + Specifies whether your account is enabled. + + + + Password + string + Enter password + Password + + + + + New Password + string + Enter new password + Password + + + + + + + + Confirm New Password + string + Confirm new password + Password + + + + + + + Password Policies + string + Password policies used by Azure AD to determine password strength, expiry etc. + + + + client_id + string + Special parameter passed to EvoSTS. + Special parameter passed to EvoSTS. + + + + resource_id + string + Special parameter passed to EvoSTS. + Special parameter passed to EvoSTS. + + + + Subject + string + + + + + + + + AlternativeSecurityId + string + + + + + MailNickName + string + Your mail nick name as stored in the Azure Active Directory. + + + + Identity Provider + string + + + + + + + + + + Display Name + string + + + + + + Your display name. + TextBox + + + + Email Address + string + + + + Email address that can be used to contact you. + TextBox + + + + + + + Alternate Email Addresses + stringCollection + Email addresses that can be used to contact the user. + + + + UserPrincipalName + string + + + + + + Your user name as stored in the Azure Active Directory. + + + + UPN User Name + string + The user name for creating user principal name. + + + + User is new + boolean + + + + + Executed-SelfAsserted-Input + string + A claim that specifies whether attributes were collected from the user. + + + + AuthenticationSource + string + Specifies whether the user was authenticated at Social IDP or local account. + + + + + + nca + string + Special parameter passed for local account authentication to login.microsoftonline.com. + + + + grant_type + string + Special parameter passed for local account authentication to login.microsoftonline.com. + + + + scope + string + Special parameter passed for local account authentication to login.microsoftonline.com. + + + + objectIdFromSession + boolean + Parameter provided by the default session management provider to indicate that the object id has been retrieved from an SSO session. + + + + isActiveMFASession + boolean + Parameter provided by the MFA session management to indicate that the user has an active MFA session. + + + + + + Given Name + string + + + + + + Your given name (also known as first name). + TextBox + + + + Surname + string + + + + + + Your surname (also known as family name or last name). + TextBox + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LineMarkers, MetaRefresh + + + + + + + + ~/tenant/templates/AzureBlue/exception.cshtml + ~/common/default_page_error.html + urn:com:microsoft:aad:b2c:elements:contract:globalexception:1.2.1 + + Error page + + + + + ~/tenant/templates/AzureBlue/idpSelector.cshtml + ~/common/default_page_error.html + urn:com:microsoft:aad:b2c:elements:contract:providerselection:1.2.1 + + Idp selection page + Sign in + + + + + ~/tenant/templates/AzureBlue/idpSelector.cshtml + ~/common/default_page_error.html + urn:com:microsoft:aad:b2c:elements:contract:providerselection:1.2.1 + + Idp selection page + Sign up + + + + + ~/tenant/templates/AzureBlue/unified.cshtml + ~/common/default_page_error.html + urn:com:microsoft:aad:b2c:elements:contract:unifiedssp:2.1.5 + + Signin and Signup + + + + + ~/tenant/templates/AzureBlue/selfAsserted.cshtml + ~/common/default_page_error.html + urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.7 + + Collect information from user page + + + + + ~/tenant/templates/AzureBlue/selfAsserted.cshtml + ~/common/default_page_error.html + urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.7 + + Collect information from user page + + + + + ~/tenant/templates/AzureBlue/selfAsserted.cshtml + ~/common/default_page_error.html + urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.7 + + Local account sign up page + + + + + ~/tenant/templates/AzureBlue/selfAsserted.cshtml + ~/common/default_page_error.html + urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.7 + + Local account change password page + + + + + ~/tenant/templates/AzureBlue/selfAsserted.cshtml + ~/common/default_page_error.html + urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.7 + + Collect information from user page + + + + + ~/tenant/templates/AzureBlue/selfAsserted.cshtml + ~/common/default_page_error.html + urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.7 + + Collect information from user page + + + + + + + + + + + + facebook.com + Facebook + + + + Facebook + + + facebook + https://www.facebook.com/dialog/oauth + https://graph.facebook.com/oauth/access_token + GET + 0 + + + json + + + + + + + + + + + + + + + + + + + + + + + + + + Local Account SignIn + + + Local Account SignIn + + + https://sts.windows.net/ + https://login.microsoftonline.com/{tenant}/.well-known/openid-configuration + https://login.microsoftonline.com/{tenant}/oauth2/token + id_token + query + email openid + + + + false + POST + + + + + + + + + + + + + + + + + + + + + + + Azure Active Directory + + + + Azure Active Directory + + + + + + + + false + + + + + + + Write + true + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Read + true + + + + + + + + + + + + + + + + + + + + + false + + + + + + + + Write + true + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + Read + true + + false + + + + + + + + + + + + + + + + + + + + + + + + Write + true + + false + + + + + + + + + + + + + + + + Write + false + true + + false + + + + + + + + + + + + + + + + + + Read + true + + false + + + + + + + + + + + + + + + + + + + + Self Asserted + + + + User ID signup + + + api.socialccountsignup + + + + + + + + + + + + + + + + + + + + + + + + + + + + + User ID signup + + + api.selfasserted.profileupdate + + false + + + + + + + + + + + + + + + + + + + + + + + + + Local Account + + + + Email signup + + + IpAddress + api.localaccountsignup + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Local Account Signin + + + SignUpWithLogonEmailExchange + Email + api.localaccountsignin + true + + false + + + + + + + + + + + + + + + + + + Reset password using email address + + + IpAddress + api.localaccountpasswordreset + + + + + false + + + + + + + + + + + + + + Change password (username) + + + api.localaccountpasswordreset + + + + + + + + + + + + + + + + + + + + + + Session Management + + + Noop Session Management Provider + + + + + Session Mananagement Provider + + + + + + + + + + + + + + + + + + + + + Session Mananagement Provider + + + true + + + + + + + + + Session Management Provider + + + + + + + Trustframework Policy Engine TechnicalProfiles + + + Trustframework Policy Engine Default Technical Profile + + + {service:te} + + + + + + + Token Issuer + + + JWT Issuer + + JWT + + {service:te} + objectId + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + objectId + SkipThisOrchestrationStep + + + + + + + + + + + + + authenticationSource + localAccountAuthentication + SkipThisOrchestrationStep + + + + + + + + + + + + objectId + SkipThisOrchestrationStep + + + + + + + + + + + + authenticationSource + socialIdpAuthentication + SkipThisOrchestrationStep + + + + + + + + + + + objectId + SkipThisOrchestrationStep + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + authenticationSource + localAccountAuthentication + SkipThisOrchestrationStep + + + + + + + + + + authenticationSource + socialIdpAuthentication + SkipThisOrchestrationStep + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deployment/CustomPolicy/TRUSTFRAMEWORKEXTENSIONS.xml b/deployment/CustomPolicy/TRUSTFRAMEWORKEXTENSIONS.xml new file mode 100644 index 00000000..e45762ca --- /dev/null +++ b/deployment/CustomPolicy/TRUSTFRAMEWORKEXTENSIONS.xml @@ -0,0 +1,174 @@ + + + playltib2c.onmicrosoft.com + B2C_1A_TrustFrameworkLocalization + + + + + commonaad + Common AAD + + + Multi-Tenant AAD + Login with your Contoso account + + + https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration + + 6e404160-e0be-467d-a01b-abd3727c65d0 + code + openid profile + form_post + POST + false + true + + + + https://login.microsoftonline.com/ + + + + + + + + + + + + + + + + + + + + + + + + + + Facebook + + + + 00000000-0000-0000-0000-000000000000>> + email public_profile + https://graph.facebook.com/me?fields=id,first_name,last_name,name,email + + + + + + Local Account SignIn + + + + 13cdb70c-6773-461e-be3a-88a1288d6168 + 4e1bcf14-9398-4a12-b4a8-a13a26b65bc0 + + + + + + + + + + + + + + + + + + + + + + + + + + + objectId + SkipThisOrchestrationStep + + + + + + + + + + + + + authenticationSource + localAccountAuthentication + SkipThisOrchestrationStep + + + + + + + + + + + objectId + SkipThisOrchestrationStep + + + + + + + + + + + authenticationSource + socialIdpAuthentication + SkipThisOrchestrationStep + + + + + + + + + + + objectId + SkipThisOrchestrationStep + + + + + + + + + + + + + + + + + diff --git a/deployment/CustomPolicy/TRUSTFRAMEWORKLOCALIZATION.xml b/deployment/CustomPolicy/TRUSTFRAMEWORKLOCALIZATION.xml new file mode 100644 index 00000000..55e981be --- /dev/null +++ b/deployment/CustomPolicy/TRUSTFRAMEWORKLOCALIZATION.xml @@ -0,0 +1,241 @@ + + + playltib2c.onmicrosoft.com + B2C_1A_TrustFrameworkBase + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + en + + + + Email Address + Sign in + Sign in with your social account + Sign in with your {0} + Password + Please enter your password + Please enter your {0} + Please enter a valid {0} + Sign up now + Sign up with {0} or {1} + Sign up with {0}, {1}, or {2} + Forgot your password? + Sign in + OR + Don't have an account? + We are having trouble signing you in. Please try again later. + + Facebook + Your password is incorrect. + Your password is incorrect. + Your password has expired. + We can't seem to find your account. + Looks like you used an old password. + Invalid username or password. + Your account has been locked. Contact your support person to unlock it, then try again. + Your account is temporarily locked to prevent unauthorized use. Try again later. + There are too many requests at this moment. Please wait for some time and try again. + + + + + + Email Address + Email address that can be used to contact you. + Please enter a valid email address. + New Password + Enter new password + 8-16 characters, containing 3 out of 4 of the following: Lowercase characters, uppercase characters, digits (0-9), and one or more of the following symbols: @ # $ % ^ & * - _ + = [ ] { } | \ : ' , ? / ` ~ " ( ) ; . + Confirm New Password + Confirm new password + 8-16 characters, containing 3 out of 4 of the following: Lowercase characters, uppercase characters, digits (0-9), and one or more of the following symbols: @ # $ % ^ & * - _ + = [ ] { } | \ : ' , ? / ` ~ " ( ) ; . + Display Name + Your display name. + Surname + Your surname (also known as family name or last name). + Given Name + Your given name (also known as first name). + Create + One or more fields are filled out incorrectly. Please check your entries and try again. + The password entry fields do not match. Please enter the same password in both fields and try again. + A required field is missing. Please fill out all required fields and try again. + What is this? + Please provide the following details. + Please wait + This information is required. + Cancel + Change e-mail + Send new code + Send verification code + Verify code + That code is expired. Please request a new code. + You've made too many incorrect attempts. Please try again later. + That code is incorrect. Please try again. + We are having trouble verifying your email address. Please enter a valid email address and try again. + There have been too many requests to verify this email address. Please wait a while, then try again. + Verification code has been sent to your inbox. Please copy it to the input box below. + Verification code + Verification is necessary. Please click Send button. + E-mail address verified. You can now continue. + There are too many requests at this moment. Please wait for some time and try again. + Claim not verified: {0} + A user with the specified ID already exists. Please choose a different one. + Incorrect pattern for: {0} + {0} has invalid input. + Missing required element: {0} + Error in validation by: {0} + + + + + + Email Address + Email address that can be used to contact you. + Please enter a valid email address. + Display Name + Your display name. + Surname + Your surname (also known as family name or last name). + Given Name + Your given name (also known as first name). + Create + Cancel + You are already registered, please press the back button and sign in instead. + + + + + + Email Address + Email address that can be used to contact you. + Please enter a valid email address. + New Password + Enter new password + 8-16 characters, containing 3 out of 4 of the following: Lowercase characters, uppercase characters, digits (0-9), and one or more of the following symbols: @ # $ % ^ & * - _ + = [ ] { } | \ : ' , ? / ` ~ " ( ) ; . + Confirm New Password + Confirm new password + 8-16 characters, containing 3 out of 4 of the following: Lowercase characters, uppercase characters, digits (0-9), and one or more of the following symbols: @ # $ % ^ & * - _ + = [ ] { } | \ : ' , ? / ` ~ " ( ) ; . + The password entry fields do not match. Please enter the same password in both fields and try again. + One or more fields are filled out incorrectly. Please check your entries and try again. + Continue + Cancel + An account could not be found for the provided user ID. + Your account has been locked. Contact your support person to unlock it, then try again. + This information is required. + Change e-mail + Send new code + Send verification code + Verify code + That code is expired. Please request a new code. + You've made too many incorrect attempts. Please try again later. + That code is incorrect. Please try again. + We are having trouble verifying your email address. Please enter a valid email address and try again. + There have been too many requests to verify this email address. Please wait a while, then try again. + Verification code has been sent to your inbox. Please copy it to the input box below. + Verification code + Verification is necessary. Please click Send button. + E-mail address verified. You can now continue. + There are too many requests at this moment. Please wait for some time and try again. + Claim not verified: {0} + A user with the specified ID already exists. Please choose a different one. + Incorrect pattern for: {0} + {0} has invalid input. + Missing required element: {0} + Error in validation by: {0} + + + + + + Sign in + Local Account Signin + Facebook + + + + + + Email Address + Password + Continue + Cancel + Your password is incorrect. + Your password is incorrect. + Your password has expired. + We can't seem to find your account. + Looks like you used an old password. + Invalid username or password. + Your account has been locked. Contact your support person to unlock it, then try again. + Your account is temporarily locked to prevent unauthorized use. Try again later. + There are too many requests at this moment. Please wait for some time and try again. + + + + + + Display Name + Your display name. + Surname + Your surname (also known as family name or last name). + Given Name + Your given name (also known as first name). + Continue + Cancel + + + + + + + + + + + diff --git a/deployment/UploadCustomPolicies.ps1 b/deployment/UploadCustomPolicies.ps1 deleted file mode 100644 index 281588f3..00000000 --- a/deployment/UploadCustomPolicies.ps1 +++ /dev/null @@ -1,241 +0,0 @@ -#function for making clear and distinct titles -function Write-Title([string]$Title) { - Write-Host "`n`n=============================================================" - Write-Host $Title - Write-Host "=============================================================`n`n" -} - -#region "Importing Modules" -Write-Title "Importing Modules" -Write-Host "Importing Module AzureADPreview" # REQUIRES THE PREVIEW VERSION -Import-Module AzureADPreview -Write-Host "Importing Module Microsoft.Graph.Identity.SignIns" -Import-Module Microsoft.Graph.Identity.SignIns -#endregion - - - -#region "STEP 1: getting the values we want to replace from the templates" -Write-Title "STEP 1: Getting values to use in the custom policies?" -$B2cTenantName = Read-Host "What is the name of your b2c tenant?" -$ProxyIdentityExperienceFrameworkAppId = Read-Host "What is the application ID of the ProxyIdentityExperienceFramework application you created?" -$IdentityExperienceFrameworkAppId = Read-Host "What is the application ID of the IdentityExperienceFramework application you created?" -$FacebookId = Read-Host "What is the application ID of the Facebook application you created?" -$MultitenantAppID = Read-Host "What is the application ID of the Azure AD multi-tenant application that you registered earlier?" -#endregion - - -#region "STEP 2: looping through each CustomPolicyTemplate and creating bases of them in CustomTemplates" -Write-Title "STEP 2: Creating template custom policies" -Get-ChildItem ".\CustomPolicyTemplates\" | -Foreach-Object { - ((Get-Content -path $_.FullName -Raw)) | Set-Content -path (".\CustomPolicy\"+$_.Name) -} -#endregion - - -#region "STEP 3: looping through each CustomPolicy and replacing their placeholder values to generate the final custom policies" -Write-Title "STEP 3: Replacing values in template custom policies to generate finalised custom policies" -Get-ChildItem ".\CustomPolicy\" | -Foreach-Object { - ((Get-Content -path $_.FullName -Raw) -replace '<>', $B2cTenantName) | Set-Content -path (".\CustomPolicy\"+$_.Name) - - ((Get-Content -path $_.FullName -Raw) -replace '<>', $ProxyIdentityExperienceFrameworkAppId) | Set-Content -path (".\CustomPolicy\"+$_.Name) - - ((Get-Content -path $_.FullName -Raw) -replace '<>', $IdentityExperienceFrameworkAppId) | Set-Content -path (".\CustomPolicy\"+$_.Name) - - ((Get-Content -path $_.FullName -Raw) -replace '<>', $FacebookId) | Set-Content -path (".\CustomPolicy\"+$_.Name) - - ((Get-Content -path $_.FullName -Raw) -replace '<>', $MultitenantAppID) | Set-Content -path (".\CustomPolicy\"+$_.Name) - -} -#endregion - -#region "STEP 4: Connecting to the b2c tenant" -Write-Title "STEP 4: Connecting to the b2c tenant" - -$B2cTenantDomain = Read-Host "What is your B2C tenants domain (e.g. mytenant.onmicrosoft.com)?" -Write-Host "Connecting to the tenant" -Connect-AzureAD -Tenant $B2cTenantDomain -#endregion - -#region "STEP 5: Add signing and encryption keys for the IEF applications" -Write-Title "STEP 5: Adding signing and encryption keys for the IEF applications" - -#region "Getting the token to be used in the GET/POST requests" -# relevant docs: https://docs.microsoft.com/en-us/graph/auth-v2-service#4-get-an-access-token -Write-Host "Getting the token to be used in the GET/POST requests" - -$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" -$headers.Add("Content-Type", "application/x-www-form-urlencoded") - -$body = "client_id=a00baec5-65fc-4488-947f-8584625d47a5&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&client_secret=qlA8Q~~IUVTBB.snchHBe2V1f6o_6m6-nNOgba0i&grant_type=client_credentials" - -$response = Invoke-RestMethod 'https://login.microsoftonline.com/playltib2c.onmicrosoft.com/oauth2/v2.0/token' -Method 'POST' -Headers $headers -Body $body -$access_token = $response.access_token -#endregion - -[uint16] $num_months = Read-Host "How many months do you want the keys to be valid for? (must be greater than 0)" - -#region "STEP 5.A: Create the signing key" -Write-Title "STEP 5.A: Creating the Signing Key" - -#region "Creating the signing keyset (container)"" -Write-Host "`nCreating the signing keyset (container)`n" -$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" -$headers.Add("Authorization", $access_token) -$headers.Add("Content-Type", "application/json") - -$body = "{`"id`":`"B2C_1A_TokenSigningKeyContainer`"}" - -$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets' -Method 'POST' -Headers $headers -Body $body -$response | ConvertTo-Json -$signing_container_id = $response.id - -Write-Host "`nSuccessfully created the key signing container: "+$signing_container_id+"`n" -#endregion - -#region "Generating the signing key" -#calculating nbf (not before) and exp (expiry) tokens into the json required format of seconds past after 1970-01-01T00:00:00Z UTC -Write-Host "`nGenerating the signing key and uploading to the keyset`n" -$start_date = Get-Date -Date "1970-01-01 00:00:00Z" -$date = Get-Date -$nbf = [math]::floor(($date - $start_date).TotalSeconds) -$exp = [math]::floor($nbf + $num_months * 60 * 60 * 24 * 30) - - -$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" -$headers.Add("Authorization", $access_token) -$headers.Add("Content-Type", "application/json") - -$body = "{ -`n `"use`": `"sig`", -`n `"kty`": `"RSA`", -`n `"nbf`": "+$nbf+", -`n `"exp`": "+$exp+", -`n}" - -$response = Invoke-RestMethod ('https://graph.microsoft.com/beta/trustFramework/keySets/'+$signing_container_id+'/generateKey') -Method 'POST' -Headers $headers -Body $body - -Write-Host "Successfully generated the signing key" -#endregion - -#endregion - - -#region "STEP 5.B: Create the encryption key" -Write-Title "STEP 5.B: Creating the Signing Key" - -#region "Creating the encryption keyset (container)"" -Write-Host "`nCreating the signing keyset (container)`n" -$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" -$headers.Add("Authorization", $access_token) -$headers.Add("Content-Type", "application/json") - -$body = "{`"id`":`"B2C_1A_TokenEncryptionKeyContainer`"}" - -$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets' -Method 'POST' -Headers $headers -Body $body -$encryption_container_id = $response.id - -Write-Host "Successfully created the key encryption container: "+$encryption_container_id -#endregion - - -#region "Generating the encryption key" -#calculating nbf (not before) and exp (expiry) tokens into the json required format of seconds past after 1970-01-01T00:00:00Z UTC -Write-Host "`nGenerating the encryption key and uploading to the keyset`n" -$start_date = Get-Date -Date "1970-01-01 00:00:00Z" -$date = Get-Date -$nbf = [math]::floor(($date - $start_date).TotalSeconds) -$exp = [math]::floor((($date - $start_date).TotalSeconds) + $num_months * 60 * 60 * 24 * 30) - - -$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" -$headers.Add("Authorization", $access_token) -$headers.Add("Content-Type", "application/json") - -$body = "{ -`n `"use`": `"enc`", -`n `"kty`": `"RSA`", -`n `"nbf`": "+$nbf+", -`n `"exp`": "+$exp+", -`n}" - -$response = Invoke-RestMethod ('https://graph.microsoft.com/beta/trustFramework/keySets/'+$encryption_container_id+'/generateKey') -Method 'POST' -Headers $headers -Body $body - -Write-Host "Successfully generated the encryption key" -#endregion - - -#region "STEP 5.C: Create the AADSecret keyset"" -Write-Title "STEP 5.B: Creating the AADAppSecret Key" - -#region "Creating the AADAppSecret keyset (container)"" -Write-Host "`nCreating the AADAppSecret keyset (container)`n" -$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" -$headers.Add("Authorization", $access_token) -$headers.Add("Content-Type", "application/json") - -$body = "{`"id`":`"B2C_1A_AADAppSecret`"}" - -$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets' -Method 'POST' -Headers $headers -Body $body -$AADAppSecret_container_id = $response.id - -Write-Host "Successfully created the key AADAppSecret container: "+$AADAppSecret_container_id -#endregion -Write-Host "`nCreating the AADAppSecret keyset (container)`n" - -#region "Uploading the AADAppSecret key" -$clientSecret = Read-Host "What is the client secret that you recorded earlier?" - -#calculating nbf (not before) and exp (expiry) tokens into the json required format of seconds past after 1970-01-01T00:00:00Z UTC -Write-Host "`nGenerating the AADAppSecret key and uploading to the keyset`n" -$start_date = Get-Date -Date "1970-01-01 00:00:00Z" -$date = Get-Date -$nbf = [math]::floor(($date - $start_date).TotalSeconds) -$exp = [math]::floor((($date - $start_date).TotalSeconds) + $num_months * 60 * 60 * 24 * 30) - -#uploading the AADAppSecret key -$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" -$headers.Add("Content-Type", "text/plain") - -$body = "{ -`n `"use`": `"sig`", -`n `"k`": `""+$clientSecret+"`", -`n `"nbf`": "+$nbf+", -`n `"exp`": "+$exp+" -`n}" - -$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets/'+$AADAppSecret_container_id+'/uploadSecret?Authorization='+$access_token+'&Content-type=application/json' -Method 'POST' -Headers $headers -Body $body - -Write-Host "Successfully uploaded the AADAppSecret key" -#endregion - -#endregion - - -#region "STEP 6: uploading the custom policies to the b2c tenant" -Write-Title "STEP 6: Uploading the custom policies to the b2c tenant" - -# Order matters in the uploads - do not modify the order -$currentDir = Get-Location -$currentDir = $currentDir.tostring() - -Write-Host "Uploading custom policy TRUSTFRAMEWORKBASE" -New-AzureADMSTrustFrameworkPolicy -InputFilePath ($currentDir+"\CustomPolicy\TRUSTFRAMEWORKBASE.xml") - -Write-Host "Uploading custom policy TRUSTFRAMEWORKLOCALIZATION" -New-AzureADMSTrustFrameworkPolicy -InputFilePath ($currentDir+"\CustomPolicy\TRUSTFRAMEWORKLOCALIZATION.xml") - -Write-Host "Uploading custom policy TRUSTFRAMEWORKEXTENSIONS" -New-AzureADMSTrustFrameworkPolicy -InputFilePath ($currentDir+"\CustomPolicy\TRUSTFRAMEWORKEXTENSIONS.xml") - -Write-Host "Uploading custom policy SIGNUP_SIGNIN" -New-AzureADMSTrustFrameworkPolicy -InputFilePath ($currentDir+"\CustomPolicy\SIGNUP_SIGNIN.xml") - -Write-Host "Uploading custom policy PROFILEEDIT" -New-AzureADMSTrustFrameworkPolicy -InputFilePath ($currentDir+"\CustomPolicy\PROFILEEDIT.xml") - -Write-Host "Uploading custom policy PASSWORDRESET" -New-AzureADMSTrustFrameworkPolicy -InputFilePath ($currentDir+"\CustomPolicy\PASSWORDRESET.xml") -#endregion \ No newline at end of file From 7d182bcf0c11db17acf59f887a8a8af0e14cfd06 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Thu, 30 Jun 2022 17:26:48 +0100 Subject: [PATCH 018/285] Extracted nbf and exp calculation into a helper function --- deployment/B2CDeployment.ps1 | 32 +- deployment/CustomPolicy/PASSWORDRESET.xml | 24 - deployment/CustomPolicy/PROFILEEDIT.xml | 23 - deployment/CustomPolicy/SIGNUP_SIGNIN.xml | 28 - .../CustomPolicy/TRUSTFRAMEWORKBASE.xml | 1205 ----------------- .../CustomPolicy/TRUSTFRAMEWORKEXTENSIONS.xml | 174 --- .../TRUSTFRAMEWORKLOCALIZATION.xml | 241 ---- 7 files changed, 18 insertions(+), 1709 deletions(-) delete mode 100644 deployment/CustomPolicy/PASSWORDRESET.xml delete mode 100644 deployment/CustomPolicy/PROFILEEDIT.xml delete mode 100644 deployment/CustomPolicy/SIGNUP_SIGNIN.xml delete mode 100644 deployment/CustomPolicy/TRUSTFRAMEWORKBASE.xml delete mode 100644 deployment/CustomPolicy/TRUSTFRAMEWORKEXTENSIONS.xml delete mode 100644 deployment/CustomPolicy/TRUSTFRAMEWORKLOCALIZATION.xml diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 56e6e65a..8c90eaa3 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -12,6 +12,14 @@ function Write-Title([string]$Title) { function Write-Color($Color, [string]$Text) { process{Write-Host $Text -ForegroundColor $Color} } + +function getNbfExp($num_months){ + $start_date = Get-Date -Date "1970-01-01 00:00:00Z" + $date = Get-Date + $nbf = [math]::floor(($date - $start_date).TotalSeconds) + $exp = [math]::floor((($date - $start_date).TotalSeconds) + $num_months * 60 * 60 * 24 * 30) + return $nbf, $exp +} #endregion #region "Importing Modules" @@ -234,10 +242,9 @@ Write-Host "`nSuccessfully created the key signing container: "+$signing_contain #region "Generating the signing key" #calculating nbf (not before) and exp (expiry) tokens into the json required format of seconds past after 1970-01-01T00:00:00Z UTC Write-Host "`nGenerating the signing key and uploading to the keyset`n" -$start_date = Get-Date -Date "1970-01-01 00:00:00Z" -$date = Get-Date -$nbf = [math]::floor(($date - $start_date).TotalSeconds) -$exp = [math]::floor($nbf + $num_months * 60 * 60 * 24 * 30) +$arr = getNbfExp($num_months) +$nbf = $arr[0] +$exp = $arr[1] $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" @@ -280,11 +287,9 @@ Write-Host "Successfully created the key encryption container: $encryption_conta #region "Generating the encryption key" #calculating nbf (not before) and exp (expiry) tokens into the json required format of seconds past after 1970-01-01T00:00:00Z UTC Write-Host "`nGenerating the encryption key and uploading to the keyset`n" -$start_date = Get-Date -Date "1970-01-01 00:00:00Z" -$date = Get-Date -$nbf = [math]::floor(($date - $start_date).TotalSeconds) -$exp = [math]::floor((($date - $start_date).TotalSeconds) + $num_months * 60 * 60 * 24 * 30) - +$arr = getNbfExp($num_months) +$nbf = $arr[0] +$exp = $arr[1] $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $headers.Add("Authorization", $access_token) @@ -325,10 +330,9 @@ Write-Host "Successfully created the key AADAppSecret container: $AADAppSecret_c #calculating nbf (not before) and exp (expiry) tokens into the json required format of seconds past after 1970-01-01T00:00:00Z UTC Write-Host "`nGenerating the AADAppSecret key and uploading to the keyset`n" -$start_date = Get-Date -Date "1970-01-01 00:00:00Z" -$date = Get-Date -$nbf = [math]::floor(($date - $start_date).TotalSeconds) -$exp = [math]::floor((($date - $start_date).TotalSeconds) + $num_months * 60 * 60 * 24 * 30) +$arr = getNbfExp($num_months) +$nbf = $arr[0] +$exp = $arr[1] #uploading the AADAppSecret key $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" @@ -354,7 +358,7 @@ Write-Host "Successfully uploaded the AADAppSecret key" Write-Title "STEP 10: Connecting to the b2c tenant" $B2cTenantDomain = $B2cTenantName+".onmicrosoft.com" -Write-Host "Connecting to the tenant" +Write-Host "Connecting to the tenant, please login via the popup Window" Connect-AzureAD -Tenant $B2cTenantDomain #endregion diff --git a/deployment/CustomPolicy/PASSWORDRESET.xml b/deployment/CustomPolicy/PASSWORDRESET.xml deleted file mode 100644 index 01a2d563..00000000 --- a/deployment/CustomPolicy/PASSWORDRESET.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - playltib2c.onmicrosoft.com - B2C_1A_TrustFrameworkExtensions - - - - - PolicyProfile - - - - - - - - - - - - - - - diff --git a/deployment/CustomPolicy/PROFILEEDIT.xml b/deployment/CustomPolicy/PROFILEEDIT.xml deleted file mode 100644 index 8575e469..00000000 --- a/deployment/CustomPolicy/PROFILEEDIT.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - playltib2c.onmicrosoft.com - B2C_1A_TrustFrameworkExtensions - - - - - PolicyProfile - - - - - - - - - - - - - - diff --git a/deployment/CustomPolicy/SIGNUP_SIGNIN.xml b/deployment/CustomPolicy/SIGNUP_SIGNIN.xml deleted file mode 100644 index f07ea966..00000000 --- a/deployment/CustomPolicy/SIGNUP_SIGNIN.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - playltib2c.onmicrosoft.com - B2C_1A_TrustFrameworkExtensions - - - - - PolicyProfile - - - - - - - - - - - - - - - - - - - diff --git a/deployment/CustomPolicy/TRUSTFRAMEWORKBASE.xml b/deployment/CustomPolicy/TRUSTFRAMEWORKBASE.xml deleted file mode 100644 index 7888832f..00000000 --- a/deployment/CustomPolicy/TRUSTFRAMEWORKBASE.xml +++ /dev/null @@ -1,1205 +0,0 @@ - - - - - - - - - - - - - - Username - string - - TextBox - - - - - - - User's Object's Tenant ID - string - - - - - - Tenant identifier (ID) of the user object in Azure AD. - - - - User's Object ID - string - - - - - - Object identifier (ID) of the user object in Azure AD. - - - - - Sign in name - string - - TextBox - - - - Email Address - string - Email address to use for signing in. - TextBox - - - - Account Enabled - boolean - Specifies whether the user's account is enabled. - Specifies whether your account is enabled. - - - - Password - string - Enter password - Password - - - - - New Password - string - Enter new password - Password - - - - - - - - Confirm New Password - string - Confirm new password - Password - - - - - - - Password Policies - string - Password policies used by Azure AD to determine password strength, expiry etc. - - - - client_id - string - Special parameter passed to EvoSTS. - Special parameter passed to EvoSTS. - - - - resource_id - string - Special parameter passed to EvoSTS. - Special parameter passed to EvoSTS. - - - - Subject - string - - - - - - - - AlternativeSecurityId - string - - - - - MailNickName - string - Your mail nick name as stored in the Azure Active Directory. - - - - Identity Provider - string - - - - - - - - - - Display Name - string - - - - - - Your display name. - TextBox - - - - Email Address - string - - - - Email address that can be used to contact you. - TextBox - - - - - - - Alternate Email Addresses - stringCollection - Email addresses that can be used to contact the user. - - - - UserPrincipalName - string - - - - - - Your user name as stored in the Azure Active Directory. - - - - UPN User Name - string - The user name for creating user principal name. - - - - User is new - boolean - - - - - Executed-SelfAsserted-Input - string - A claim that specifies whether attributes were collected from the user. - - - - AuthenticationSource - string - Specifies whether the user was authenticated at Social IDP or local account. - - - - - - nca - string - Special parameter passed for local account authentication to login.microsoftonline.com. - - - - grant_type - string - Special parameter passed for local account authentication to login.microsoftonline.com. - - - - scope - string - Special parameter passed for local account authentication to login.microsoftonline.com. - - - - objectIdFromSession - boolean - Parameter provided by the default session management provider to indicate that the object id has been retrieved from an SSO session. - - - - isActiveMFASession - boolean - Parameter provided by the MFA session management to indicate that the user has an active MFA session. - - - - - - Given Name - string - - - - - - Your given name (also known as first name). - TextBox - - - - Surname - string - - - - - - Your surname (also known as family name or last name). - TextBox - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LineMarkers, MetaRefresh - - - - - - - - ~/tenant/templates/AzureBlue/exception.cshtml - ~/common/default_page_error.html - urn:com:microsoft:aad:b2c:elements:contract:globalexception:1.2.1 - - Error page - - - - - ~/tenant/templates/AzureBlue/idpSelector.cshtml - ~/common/default_page_error.html - urn:com:microsoft:aad:b2c:elements:contract:providerselection:1.2.1 - - Idp selection page - Sign in - - - - - ~/tenant/templates/AzureBlue/idpSelector.cshtml - ~/common/default_page_error.html - urn:com:microsoft:aad:b2c:elements:contract:providerselection:1.2.1 - - Idp selection page - Sign up - - - - - ~/tenant/templates/AzureBlue/unified.cshtml - ~/common/default_page_error.html - urn:com:microsoft:aad:b2c:elements:contract:unifiedssp:2.1.5 - - Signin and Signup - - - - - ~/tenant/templates/AzureBlue/selfAsserted.cshtml - ~/common/default_page_error.html - urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.7 - - Collect information from user page - - - - - ~/tenant/templates/AzureBlue/selfAsserted.cshtml - ~/common/default_page_error.html - urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.7 - - Collect information from user page - - - - - ~/tenant/templates/AzureBlue/selfAsserted.cshtml - ~/common/default_page_error.html - urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.7 - - Local account sign up page - - - - - ~/tenant/templates/AzureBlue/selfAsserted.cshtml - ~/common/default_page_error.html - urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.7 - - Local account change password page - - - - - ~/tenant/templates/AzureBlue/selfAsserted.cshtml - ~/common/default_page_error.html - urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.7 - - Collect information from user page - - - - - ~/tenant/templates/AzureBlue/selfAsserted.cshtml - ~/common/default_page_error.html - urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.7 - - Collect information from user page - - - - - - - - - - - - facebook.com - Facebook - - - - Facebook - - - facebook - https://www.facebook.com/dialog/oauth - https://graph.facebook.com/oauth/access_token - GET - 0 - - - json - - - - - - - - - - - - - - - - - - - - - - - - - - Local Account SignIn - - - Local Account SignIn - - - https://sts.windows.net/ - https://login.microsoftonline.com/{tenant}/.well-known/openid-configuration - https://login.microsoftonline.com/{tenant}/oauth2/token - id_token - query - email openid - - - - false - POST - - - - - - - - - - - - - - - - - - - - - - - Azure Active Directory - - - - Azure Active Directory - - - - - - - - false - - - - - - - Write - true - - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Read - true - - - - - - - - - - - - - - - - - - - - - false - - - - - - - - Write - true - - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - Read - true - - false - - - - - - - - - - - - - - - - - - - - - - - - Write - true - - false - - - - - - - - - - - - - - - - Write - false - true - - false - - - - - - - - - - - - - - - - - - Read - true - - false - - - - - - - - - - - - - - - - - - - - Self Asserted - - - - User ID signup - - - api.socialccountsignup - - - - - - - - - - - - - - - - - - - - - - - - - - - - - User ID signup - - - api.selfasserted.profileupdate - - false - - - - - - - - - - - - - - - - - - - - - - - - - Local Account - - - - Email signup - - - IpAddress - api.localaccountsignup - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Local Account Signin - - - SignUpWithLogonEmailExchange - Email - api.localaccountsignin - true - - false - - - - - - - - - - - - - - - - - - Reset password using email address - - - IpAddress - api.localaccountpasswordreset - - - - - false - - - - - - - - - - - - - - Change password (username) - - - api.localaccountpasswordreset - - - - - - - - - - - - - - - - - - - - - - Session Management - - - Noop Session Management Provider - - - - - Session Mananagement Provider - - - - - - - - - - - - - - - - - - - - - Session Mananagement Provider - - - true - - - - - - - - - Session Management Provider - - - - - - - Trustframework Policy Engine TechnicalProfiles - - - Trustframework Policy Engine Default Technical Profile - - - {service:te} - - - - - - - Token Issuer - - - JWT Issuer - - JWT - - {service:te} - objectId - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - objectId - SkipThisOrchestrationStep - - - - - - - - - - - - - authenticationSource - localAccountAuthentication - SkipThisOrchestrationStep - - - - - - - - - - - - objectId - SkipThisOrchestrationStep - - - - - - - - - - - - authenticationSource - socialIdpAuthentication - SkipThisOrchestrationStep - - - - - - - - - - - objectId - SkipThisOrchestrationStep - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - authenticationSource - localAccountAuthentication - SkipThisOrchestrationStep - - - - - - - - - - authenticationSource - socialIdpAuthentication - SkipThisOrchestrationStep - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/deployment/CustomPolicy/TRUSTFRAMEWORKEXTENSIONS.xml b/deployment/CustomPolicy/TRUSTFRAMEWORKEXTENSIONS.xml deleted file mode 100644 index e45762ca..00000000 --- a/deployment/CustomPolicy/TRUSTFRAMEWORKEXTENSIONS.xml +++ /dev/null @@ -1,174 +0,0 @@ - - - playltib2c.onmicrosoft.com - B2C_1A_TrustFrameworkLocalization - - - - - commonaad - Common AAD - - - Multi-Tenant AAD - Login with your Contoso account - - - https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration - - 6e404160-e0be-467d-a01b-abd3727c65d0 - code - openid profile - form_post - POST - false - true - - - - https://login.microsoftonline.com/ - - - - - - - - - - - - - - - - - - - - - - - - - - Facebook - - - - 00000000-0000-0000-0000-000000000000>> - email public_profile - https://graph.facebook.com/me?fields=id,first_name,last_name,name,email - - - - - - Local Account SignIn - - - - 13cdb70c-6773-461e-be3a-88a1288d6168 - 4e1bcf14-9398-4a12-b4a8-a13a26b65bc0 - - - - - - - - - - - - - - - - - - - - - - - - - - - objectId - SkipThisOrchestrationStep - - - - - - - - - - - - - authenticationSource - localAccountAuthentication - SkipThisOrchestrationStep - - - - - - - - - - - objectId - SkipThisOrchestrationStep - - - - - - - - - - - authenticationSource - socialIdpAuthentication - SkipThisOrchestrationStep - - - - - - - - - - - objectId - SkipThisOrchestrationStep - - - - - - - - - - - - - - - - - diff --git a/deployment/CustomPolicy/TRUSTFRAMEWORKLOCALIZATION.xml b/deployment/CustomPolicy/TRUSTFRAMEWORKLOCALIZATION.xml deleted file mode 100644 index 55e981be..00000000 --- a/deployment/CustomPolicy/TRUSTFRAMEWORKLOCALIZATION.xml +++ /dev/null @@ -1,241 +0,0 @@ - - - playltib2c.onmicrosoft.com - B2C_1A_TrustFrameworkBase - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - en - - - - Email Address - Sign in - Sign in with your social account - Sign in with your {0} - Password - Please enter your password - Please enter your {0} - Please enter a valid {0} - Sign up now - Sign up with {0} or {1} - Sign up with {0}, {1}, or {2} - Forgot your password? - Sign in - OR - Don't have an account? - We are having trouble signing you in. Please try again later. - - Facebook - Your password is incorrect. - Your password is incorrect. - Your password has expired. - We can't seem to find your account. - Looks like you used an old password. - Invalid username or password. - Your account has been locked. Contact your support person to unlock it, then try again. - Your account is temporarily locked to prevent unauthorized use. Try again later. - There are too many requests at this moment. Please wait for some time and try again. - - - - - - Email Address - Email address that can be used to contact you. - Please enter a valid email address. - New Password - Enter new password - 8-16 characters, containing 3 out of 4 of the following: Lowercase characters, uppercase characters, digits (0-9), and one or more of the following symbols: @ # $ % ^ & * - _ + = [ ] { } | \ : ' , ? / ` ~ " ( ) ; . - Confirm New Password - Confirm new password - 8-16 characters, containing 3 out of 4 of the following: Lowercase characters, uppercase characters, digits (0-9), and one or more of the following symbols: @ # $ % ^ & * - _ + = [ ] { } | \ : ' , ? / ` ~ " ( ) ; . - Display Name - Your display name. - Surname - Your surname (also known as family name or last name). - Given Name - Your given name (also known as first name). - Create - One or more fields are filled out incorrectly. Please check your entries and try again. - The password entry fields do not match. Please enter the same password in both fields and try again. - A required field is missing. Please fill out all required fields and try again. - What is this? - Please provide the following details. - Please wait - This information is required. - Cancel - Change e-mail - Send new code - Send verification code - Verify code - That code is expired. Please request a new code. - You've made too many incorrect attempts. Please try again later. - That code is incorrect. Please try again. - We are having trouble verifying your email address. Please enter a valid email address and try again. - There have been too many requests to verify this email address. Please wait a while, then try again. - Verification code has been sent to your inbox. Please copy it to the input box below. - Verification code - Verification is necessary. Please click Send button. - E-mail address verified. You can now continue. - There are too many requests at this moment. Please wait for some time and try again. - Claim not verified: {0} - A user with the specified ID already exists. Please choose a different one. - Incorrect pattern for: {0} - {0} has invalid input. - Missing required element: {0} - Error in validation by: {0} - - - - - - Email Address - Email address that can be used to contact you. - Please enter a valid email address. - Display Name - Your display name. - Surname - Your surname (also known as family name or last name). - Given Name - Your given name (also known as first name). - Create - Cancel - You are already registered, please press the back button and sign in instead. - - - - - - Email Address - Email address that can be used to contact you. - Please enter a valid email address. - New Password - Enter new password - 8-16 characters, containing 3 out of 4 of the following: Lowercase characters, uppercase characters, digits (0-9), and one or more of the following symbols: @ # $ % ^ & * - _ + = [ ] { } | \ : ' , ? / ` ~ " ( ) ; . - Confirm New Password - Confirm new password - 8-16 characters, containing 3 out of 4 of the following: Lowercase characters, uppercase characters, digits (0-9), and one or more of the following symbols: @ # $ % ^ & * - _ + = [ ] { } | \ : ' , ? / ` ~ " ( ) ; . - The password entry fields do not match. Please enter the same password in both fields and try again. - One or more fields are filled out incorrectly. Please check your entries and try again. - Continue - Cancel - An account could not be found for the provided user ID. - Your account has been locked. Contact your support person to unlock it, then try again. - This information is required. - Change e-mail - Send new code - Send verification code - Verify code - That code is expired. Please request a new code. - You've made too many incorrect attempts. Please try again later. - That code is incorrect. Please try again. - We are having trouble verifying your email address. Please enter a valid email address and try again. - There have been too many requests to verify this email address. Please wait a while, then try again. - Verification code has been sent to your inbox. Please copy it to the input box below. - Verification code - Verification is necessary. Please click Send button. - E-mail address verified. You can now continue. - There are too many requests at this moment. Please wait for some time and try again. - Claim not verified: {0} - A user with the specified ID already exists. Please choose a different one. - Incorrect pattern for: {0} - {0} has invalid input. - Missing required element: {0} - Error in validation by: {0} - - - - - - Sign in - Local Account Signin - Facebook - - - - - - Email Address - Password - Continue - Cancel - Your password is incorrect. - Your password is incorrect. - Your password has expired. - We can't seem to find your account. - Looks like you used an old password. - Invalid username or password. - Your account has been locked. Contact your support person to unlock it, then try again. - Your account is temporarily locked to prevent unauthorized use. Try again later. - There are too many requests at this moment. Please wait for some time and try again. - - - - - - Display Name - Your display name. - Surname - Your surname (also known as family name or last name). - Given Name - Your given name (also known as first name). - Continue - Cancel - - - - - - - - - - - From 912f086efd3fb214ed95728ce821ddb850e8cb8d Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Fri, 1 Jul 2022 11:52:26 +0100 Subject: [PATCH 019/285] Made multiplatform by removing reliance on powershell modules and replacing with http requests --- deployment/B2CDeployment.ps1 | 54 +++++++++++++++++++++--------------- 1 file changed, 32 insertions(+), 22 deletions(-) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 8c90eaa3..06efb37b 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -23,9 +23,9 @@ function getNbfExp($num_months){ #endregion #region "Importing Modules" -Write-Title "Importing Modules" -Write-Host "Importing Module AzureADPreview" # REQUIRES THE PREVIEW VERSION -Import-Module AzureADPreview +# Write-Title "Importing Modules" +# Write-Host "Importing Module AzureADPreview" # REQUIRES THE PREVIEW VERSION +# Import-Module AzureADPreview # Write-Host "Importing Module Microsoft.Graph.Identity.SignIns" # Import-Module Microsoft.Graph.Identity.SignIns #endregion @@ -224,7 +224,8 @@ while($num_months -le 0){ #region "STEP 9.A: Create the signing key" Write-Title "STEP 9.A: Creating the Signing Key" -#region "Creating the signing keyset (container)"" +#region "Creating the signing keyset (container)" +#reference: https://docs.microsoft.com/en-us/graph/api/trustframework-post-keysets?view=graph-rest-beta&tabs=http Write-Host "`nCreating the signing keyset (container)`n" $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $headers.Add("Authorization", $access_token) @@ -240,6 +241,7 @@ Write-Host "`nSuccessfully created the key signing container: "+$signing_contain #endregion #region "Generating the signing key" +#reference: https://docs.microsoft.com/en-us/graph/api/trustframeworkkeyset-generatekey?view=graph-rest-beta&tabs=http #calculating nbf (not before) and exp (expiry) tokens into the json required format of seconds past after 1970-01-01T00:00:00Z UTC Write-Host "`nGenerating the signing key and uploading to the keyset`n" $arr = getNbfExp($num_months) @@ -269,7 +271,8 @@ Write-Host "Successfully generated the signing key" #region "STEP 9.B: Create the encryption key" Write-Title "STEP 9.B: Creating the Signing Key" -#region "Creating the encryption keyset (container)"" +#region "Creating the encryption keyset (container)" +#reference: https://docs.microsoft.com/en-us/graph/api/trustframework-post-keysets?view=graph-rest-beta&tabs=http Write-Host "`nCreating the signing keyset (container)`n" $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $headers.Add("Authorization", $access_token) @@ -285,6 +288,7 @@ Write-Host "Successfully created the key encryption container: $encryption_conta #region "Generating the encryption key" +#reference: https://docs.microsoft.com/en-us/graph/api/trustframeworkkeyset-generatekey?view=graph-rest-beta&tabs=http #calculating nbf (not before) and exp (expiry) tokens into the json required format of seconds past after 1970-01-01T00:00:00Z UTC Write-Host "`nGenerating the encryption key and uploading to the keyset`n" $arr = getNbfExp($num_months) @@ -309,10 +313,11 @@ Write-Host "Successfully generated the encryption key" #endregion -#region "STEP 9.C: Create the AADSecret keyset"" +#region "STEP 9.C: Create the AADSecret keyset" Write-Title "STEP 9.C: Creating the AADAppSecret Key" -#region "Creating the AADAppSecret keyset (container)"" +#region "Creating the AADAppSecret keyset (container)" +#reference: https://docs.microsoft.com/en-us/graph/api/trustframework-post-keysets?view=graph-rest-beta&tabs=http Write-Host "`nCreating the AADAppSecret keyset (container)`n" $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $headers.Add("Authorization", $access_token) @@ -327,7 +332,7 @@ Write-Host "Successfully created the key AADAppSecret container: $AADAppSecret_c #endregion #region "Uploading the AADAppSecret key" - +#reference: https://docs.microsoft.com/en-us/graph/api/trustframeworkkeyset-uploadsecret?view=graph-rest-beta&tabs=https #calculating nbf (not before) and exp (expiry) tokens into the json required format of seconds past after 1970-01-01T00:00:00Z UTC Write-Host "`nGenerating the AADAppSecret key and uploading to the keyset`n" $arr = getNbfExp($num_months) @@ -354,33 +359,38 @@ Write-Host "Successfully uploaded the AADAppSecret key" #endregion #endregion -#region "STEP 10: Connecting to the b2c tenant" -Write-Title "STEP 10: Connecting to the b2c tenant" -$B2cTenantDomain = $B2cTenantName+".onmicrosoft.com" -Write-Host "Connecting to the tenant, please login via the popup Window" -Connect-AzureAD -Tenant $B2cTenantDomain -#endregion +#region "STEP 10: uploading the custom policies to the b2c tenant" +#reference: https://docs.microsoft.com/en-us/graph/api/trustframework-post-trustframeworkpolicy?view=graph-rest-beta + +Write-Title "STEP 10: Uploading the custom policies to the b2c tenant" -#region "STEP 11: uploading the custom policies to the b2c tenant" -Write-Title "STEP 11: Uploading the custom policies to the b2c tenant" +$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" +$headers.Add("Authorization", $access_token) +$headers.Add("Content-Type", "application/xml") # Order matters in the uploads - do not modify the order Write-Host "Uploading custom policy TRUSTFRAMEWORKBASE" -New-AzureADMSTrustFrameworkPolicy -InputFilePath ($currentDir+"\CustomPolicy\TRUSTFRAMEWORKBASE.xml") +[string] $body = Get-Content "./CustomPolicy/TRUSTFRAMEWORKBASE.xml" +$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies' -Method 'POST' -Headers $headers -Body $body Write-Host "Uploading custom policy TRUSTFRAMEWORKLOCALIZATION" -New-AzureADMSTrustFrameworkPolicy -InputFilePath ($currentDir+"\CustomPolicy\TRUSTFRAMEWORKLOCALIZATION.xml") +[string] $body = Get-Content "./CustomPolicy/TRUSTFRAMEWORKLOCALIZATION.xml" +$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies' -Method 'POST' -Headers $headers -Body $body Write-Host "Uploading custom policy TRUSTFRAMEWORKEXTENSIONS" -New-AzureADMSTrustFrameworkPolicy -InputFilePath ($currentDir+"\CustomPolicy\TRUSTFRAMEWORKEXTENSIONS.xml") +[string] $body = Get-Content "./CustomPolicy/TRUSTFRAMEWORKEXTENSIONS.xml" +$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies' -Method 'POST' -Headers $headers -Body $body Write-Host "Uploading custom policy SIGNUP_SIGNIN" -New-AzureADMSTrustFrameworkPolicy -InputFilePath ($currentDir+"\CustomPolicy\SIGNUP_SIGNIN.xml") +[string] $body = Get-Content "./CustomPolicy/SIGNUP_SIGNIN.xml" +$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies' -Method 'POST' -Headers $headers -Body $body Write-Host "Uploading custom policy PROFILEEDIT" -New-AzureADMSTrustFrameworkPolicy -InputFilePath ($currentDir+"\CustomPolicy\PROFILEEDIT.xml") +[string] $body = Get-Content "./CustomPolicy/PROFILEEDIT.xml" +$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies' -Method 'POST' -Headers $headers -Body $body Write-Host "Uploading custom policy PASSWORDRESET" -New-AzureADMSTrustFrameworkPolicy -InputFilePath ($currentDir+"\CustomPolicy\PASSWORDRESET.xml") +[string] $body = Get-Content "./CustomPolicy/PASSWORDRESET.xml" +$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies' -Method 'POST' -Headers $headers -Body $body #endregion \ No newline at end of file From 5988fad64ac76fd38e25e8838c152ff987bd41e1 Mon Sep 17 00:00:00 2001 From: Lilin Huang Date: Fri, 1 Jul 2022 12:09:47 +0100 Subject: [PATCH 020/285] keyVaultFix on Deploy.ps1 --- deployment/Deploy.ps1 | 11 +++++++++-- deployment/azuredeploy.json | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 9da2293d..1ec36738 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -173,7 +173,6 @@ process { Write-Host 'App Created Successfully' #endregion - #region Create New Resource Group in above Region Write-Title 'STEP #5 - Creating Resource Group' @@ -203,7 +202,15 @@ process { $userObjectId = az ad signed-in-user show --query objectId } #$userObjectId - + + [string]$dir = Get-Location + $dir = $dir + "/azuredeploy.json" + [string]$ran = Get-Random -Maximum 1000 + + $json = Get-Content $dir | ConvertFrom-Json + $json.variables.uniqueIdentifier = "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, $ran),0,9)]" + $json | ConvertTo-Json | Out-File $dir + $templateFileName = "azuredeploy.json" $deploymentName = "Deployment-$ExecutionStartTime" Write-Log -Message "Deploying ARM Template to Azure inside ResourceGroup: $ResourceGroupName with DeploymentName: $deploymentName, TemplateFile: $templateFileName, AppClientId: $($appinfo.appId), IdentifiedURI: $($appinfo.identifierUris)" diff --git a/deployment/azuredeploy.json b/deployment/azuredeploy.json index ca56c788..ae986250 100644 --- a/deployment/azuredeploy.json +++ b/deployment/azuredeploy.json @@ -20,7 +20,7 @@ } }, "variables": { - "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, '5'),0,9)]", + "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, '8'),0,9)]", "functionList": [ "connect", "assignments", From 8186859c3813c212bd919f0762041ad67425be3b Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Fri, 1 Jul 2022 12:11:46 +0100 Subject: [PATCH 021/285] Made multiplatform by removing reliance on powershell modules and replacing with http requests --- deployment/B2CDeployment.ps1 | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 06efb37b..7c66f7a5 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -202,6 +202,11 @@ Foreach-Object { #region "STEP 9: Add signing and encryption keys for the IEF applications" Write-Title "STEP 9: Adding signing and encryption keys for the IEF applications" +$num_months = 0 +while($num_months -le 0){ + [uint16] $num_months = Read-Host "How many months do you want the keys to be valid for? (must be greater than 0)" +} + #region "Getting the token to be used in the GET/POST requests" # relevant docs: https://docs.microsoft.com/en-us/graph/auth-v2-service#4-get-an-access-token Write-Host "Getting the token to be used in the GET/POST requests" @@ -216,11 +221,6 @@ $access_token = $response.access_token $access_token = "Bearer " + $access_token #endregion -$num_months = 0 -while($num_months -le 0){ - [uint16] $num_months = Read-Host "How many months do you want the keys to be valid for? (must be greater than 0)" -} - #region "STEP 9.A: Create the signing key" Write-Title "STEP 9.A: Creating the Signing Key" From e1ee72e82d951f8bfb519dcdb7d959f0b2a94d69 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Fri, 1 Jul 2022 13:37:45 +0100 Subject: [PATCH 022/285] Automatically post (upload) vs put (update) custom policy depending on its existence on the tenant --- deployment/B2CDeployment.ps1 | 126 ++++++++++-------- ...WORDRESET.xml => B2C_1A_PasswordReset.xml} | 0 ...PROFILEEDIT.xml => B2C_1A_ProfileEdit.xml} | 0 ...BASE.xml => B2C_1A_TrustFrameworkBase.xml} | 0 ...ml => B2C_1A_TrustFrameworkExtensions.xml} | 0 ... => B2C_1A_TrustFrameworkLocalization.xml} | 0 ...UP_SIGNIN.xml => B2C_1A_signup_signin.xml} | 0 7 files changed, 71 insertions(+), 55 deletions(-) rename deployment/CustomPolicyTemplates/{PASSWORDRESET.xml => B2C_1A_PasswordReset.xml} (100%) rename deployment/CustomPolicyTemplates/{PROFILEEDIT.xml => B2C_1A_ProfileEdit.xml} (100%) rename deployment/CustomPolicyTemplates/{TRUSTFRAMEWORKBASE.xml => B2C_1A_TrustFrameworkBase.xml} (100%) rename deployment/CustomPolicyTemplates/{TRUSTFRAMEWORKEXTENSIONS.xml => B2C_1A_TrustFrameworkExtensions.xml} (100%) rename deployment/CustomPolicyTemplates/{TRUSTFRAMEWORKLOCALIZATION.xml => B2C_1A_TrustFrameworkLocalization.xml} (100%) rename deployment/CustomPolicyTemplates/{SIGNUP_SIGNIN.xml => B2C_1A_signup_signin.xml} (100%) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 7c66f7a5..ad712bbe 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -12,22 +12,6 @@ function Write-Title([string]$Title) { function Write-Color($Color, [string]$Text) { process{Write-Host $Text -ForegroundColor $Color} } - -function getNbfExp($num_months){ - $start_date = Get-Date -Date "1970-01-01 00:00:00Z" - $date = Get-Date - $nbf = [math]::floor(($date - $start_date).TotalSeconds) - $exp = [math]::floor((($date - $start_date).TotalSeconds) + $num_months * 60 * 60 * 24 * 30) - return $nbf, $exp -} -#endregion - -#region "Importing Modules" -# Write-Title "Importing Modules" -# Write-Host "Importing Module AzureADPreview" # REQUIRES THE PREVIEW VERSION -# Import-Module AzureADPreview -# Write-Host "Importing Module Microsoft.Graph.Identity.SignIns" -# Import-Module Microsoft.Graph.Identity.SignIns #endregion #region "STEP 1: Create Active Directory application" @@ -163,7 +147,7 @@ az ad app permission add --id $ProxyIEFClientID --api $IEFClientID --api-permiss #region "STEP 6: getting the values we want to replace from the templates" Write-Title "STEP 6: Getting values to use in the custom policies?" $HasFaceBookApp = "" -while($HasFaceBookApp -ne "Y" -and $HasFaceBookApp -ne "N"){ +while($HasFaceBookApp -ne "y" -and $HasFaceBookApp -ne "n"){ $HasFaceBookApp = Read-Host "Do you have a facebook application set up that you'd like to link? (y/n)" } $FacebookId = "00000000-0000-0000-0000-000000000000" #default to meaningless placeholder value if app isn't set up @@ -175,8 +159,7 @@ if($HasFaceBookApp -eq "y"){ #region "STEP 7: looping through each CustomPolicyTemplate and creating bases of them in CustomTemplates" Write-Title "STEP 7: Creating template custom policies" -Get-ChildItem ".\CustomPolicyTemplates\" | -Foreach-Object { +Get-ChildItem ".\CustomPolicyTemplates\" | Foreach-Object { ((Get-Content -path $_.FullName -Raw)) | Set-Content -path (".\CustomPolicy\"+$_.Name) } #endregion @@ -184,23 +167,36 @@ Foreach-Object { #region "STEP 8: looping through each CustomPolicy and replacing their placeholder values to generate the final custom policies" Write-Title "STEP 8: Replacing values in template custom policies to generate finalised custom policies" -Get-ChildItem ".\CustomPolicy\" | -Foreach-Object { - ((Get-Content -path $_.FullName -Raw) -replace '<>', $B2cTenantName) | Set-Content -path (".\CustomPolicy\"+$_.Name) +Get-ChildItem ".\CustomPolicy\" | Foreach-Object { + #ignore the gitkeep + if($_.Name -ne ".gitkeep"){ + ((Get-Content -path $_.FullName -Raw) -replace '<>', $B2cTenantName) | Set-Content -path (".\CustomPolicy\"+$_.Name) - ((Get-Content -path $_.FullName -Raw) -replace '<>', $ProxyIEFClientID) | Set-Content -path (".\CustomPolicy\"+$_.Name) - - ((Get-Content -path $_.FullName -Raw) -replace '<>', $IEFClientID) | Set-Content -path (".\CustomPolicy\"+$_.Name) - - ((Get-Content -path $_.FullName -Raw) -replace '<>', $FacebookId) | Set-Content -path (".\CustomPolicy\"+$_.Name) + ((Get-Content -path $_.FullName -Raw) -replace '<>', $ProxyIEFClientID) | Set-Content -path (".\CustomPolicy\"+$_.Name) + + ((Get-Content -path $_.FullName -Raw) -replace '<>', $IEFClientID) | Set-Content -path (".\CustomPolicy\"+$_.Name) + + ((Get-Content -path $_.FullName -Raw) -replace '<>', $FacebookId) | Set-Content -path (".\CustomPolicy\"+$_.Name) - ((Get-Content -path $_.FullName -Raw) -replace '<>', $MultitenantAppID) | Set-Content -path (".\CustomPolicy\"+$_.Name) + ((Get-Content -path $_.FullName -Raw) -replace '<>', $MultitenantAppID) | Set-Content -path (".\CustomPolicy\"+$_.Name) + } } #endregion -#region "STEP 9: Add signing and encryption keys for the IEF applications" -Write-Title "STEP 9: Adding signing and encryption keys for the IEF applications" +#region "STEP 9: Add signing and encryption keys and AADAppSecret for the IEF applications" + +#region "Function for calculating the not before and expiry datetimes for the keys" +function getNbfExp($num_months){ + $start_date = Get-Date -Date "1970-01-01 00:00:00Z" + $date = Get-Date + $nbf = [math]::floor(($date - $start_date).TotalSeconds) + $exp = [math]::floor((($date - $start_date).TotalSeconds) + $num_months * 60 * 60 * 24 * 30) + return $nbf, $exp +} +#endregion + +Write-Title "STEP 9: Adding signing and encryption keys and AADAppSecret for the IEF applications" $num_months = 0 while($num_months -le 0){ @@ -359,38 +355,58 @@ Write-Host "Successfully uploaded the AADAppSecret key" #endregion #endregion - #region "STEP 10: uploading the custom policies to the b2c tenant" -#reference: https://docs.microsoft.com/en-us/graph/api/trustframework-post-trustframeworkpolicy?view=graph-rest-beta + +#region "Function for updating existing custom policy or uploading new custom policies" +function CustomPolicyUpdateOrUpload($customPolicyName, $customPolicies, $access_token) { + process{ + if($customPolicies -contains $customPolicyName){ + $updateCustomPolicy = "" + while($UpdateCustomPolicy -ne "y" -and $UpdateCustomPolicy -ne "n"){ + $UpdateCustomPolicy = Read-Host "$customPolicyName already exists, would you like to update it? ('y' recommended OR 'n') " + } + + if($UpdateCustomPolicy -eq "y"){ + #reference: https://docs.microsoft.com/en-us/graph/api/trustframework-put-trustframeworkpolicy?view=graph-rest-beta + $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" + $headers.Add("Content-Type", "application/xml") + $headers.Add("Authorization", $access_token) + [string] $body = Get-Content "./CustomPolicy/$customPolicyName.xml" + $response = Invoke-RestMethod ('https://graph.microsoft.com/beta/trustFramework/policies/'+$customPolicyName+'/$value') -Method 'PUT' -Headers $headers -Body $body + $response | ConvertTo-Json + } + } + else{ + #reference: https://docs.microsoft.com/en-us/graph/api/trustframework-post-trustframeworkpolicy?view=graph-rest-beta + Write-Host "$customPolicyName does not exist, so uploading it to a new custom policy on Azure" + $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" + $headers.Add("Authorization", $access_token) + $headers.Add("Content-Type", "application/xml") + [string] $body = Get-Content "./CustomPolicy/$customPolicyName.xml" + $response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies' -Method 'POST' -Headers $headers -Body $body + } + } +} +#endregion Write-Title "STEP 10: Uploading the custom policies to the b2c tenant" +#getting list of all users in the tenant +Write-Host "Getting the list of all custom policies in the tenant" $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $headers.Add("Authorization", $access_token) -$headers.Add("Content-Type", "application/xml") - -# Order matters in the uploads - do not modify the order -Write-Host "Uploading custom policy TRUSTFRAMEWORKBASE" -[string] $body = Get-Content "./CustomPolicy/TRUSTFRAMEWORKBASE.xml" -$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies' -Method 'POST' -Headers $headers -Body $body +$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies' -Method 'GET' -Headers $headers +$customPolicies = $response.value +$customPolicies = $customPolicies.id -Write-Host "Uploading custom policy TRUSTFRAMEWORKLOCALIZATION" -[string] $body = Get-Content "./CustomPolicy/TRUSTFRAMEWORKLOCALIZATION.xml" -$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies' -Method 'POST' -Headers $headers -Body $body -Write-Host "Uploading custom policy TRUSTFRAMEWORKEXTENSIONS" -[string] $body = Get-Content "./CustomPolicy/TRUSTFRAMEWORKEXTENSIONS.xml" -$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies' -Method 'POST' -Headers $headers -Body $body +Write-Host "Uploading/updating each of the custom policies" -Write-Host "Uploading custom policy SIGNUP_SIGNIN" -[string] $body = Get-Content "./CustomPolicy/SIGNUP_SIGNIN.xml" -$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies' -Method 'POST' -Headers $headers -Body $body - -Write-Host "Uploading custom policy PROFILEEDIT" -[string] $body = Get-Content "./CustomPolicy/PROFILEEDIT.xml" -$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies' -Method 'POST' -Headers $headers -Body $body - -Write-Host "Uploading custom policy PASSWORDRESET" -[string] $body = Get-Content "./CustomPolicy/PASSWORDRESET.xml" -$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies' -Method 'POST' -Headers $headers -Body $body +# Order matters in the uploads - do not modify the order +CustomPolicyUpdateOrUpload "B2C_1A_TrustFrameworkBase" $customPolicies $access_token +CustomPolicyUpdateOrUpload "B2C_1A_TrustFrameworkLocalization" $customPolicies $access_token +CustomPolicyUpdateOrUpload "B2C_1A_TrustFrameworkExtensions" $customPolicies $access_token +CustomPolicyUpdateOrUpload "B2C_1A_signup_signin" $customPolicies $access_token +CustomPolicyUpdateOrUpload "B2C_1A_ProfileEdit" $customPolicies $access_token +CustomPolicyUpdateOrUpload "B2C_1A_PasswordReset" $customPolicies $access_token #endregion \ No newline at end of file diff --git a/deployment/CustomPolicyTemplates/PASSWORDRESET.xml b/deployment/CustomPolicyTemplates/B2C_1A_PasswordReset.xml similarity index 100% rename from deployment/CustomPolicyTemplates/PASSWORDRESET.xml rename to deployment/CustomPolicyTemplates/B2C_1A_PasswordReset.xml diff --git a/deployment/CustomPolicyTemplates/PROFILEEDIT.xml b/deployment/CustomPolicyTemplates/B2C_1A_ProfileEdit.xml similarity index 100% rename from deployment/CustomPolicyTemplates/PROFILEEDIT.xml rename to deployment/CustomPolicyTemplates/B2C_1A_ProfileEdit.xml diff --git a/deployment/CustomPolicyTemplates/TRUSTFRAMEWORKBASE.xml b/deployment/CustomPolicyTemplates/B2C_1A_TrustFrameworkBase.xml similarity index 100% rename from deployment/CustomPolicyTemplates/TRUSTFRAMEWORKBASE.xml rename to deployment/CustomPolicyTemplates/B2C_1A_TrustFrameworkBase.xml diff --git a/deployment/CustomPolicyTemplates/TRUSTFRAMEWORKEXTENSIONS.xml b/deployment/CustomPolicyTemplates/B2C_1A_TrustFrameworkExtensions.xml similarity index 100% rename from deployment/CustomPolicyTemplates/TRUSTFRAMEWORKEXTENSIONS.xml rename to deployment/CustomPolicyTemplates/B2C_1A_TrustFrameworkExtensions.xml diff --git a/deployment/CustomPolicyTemplates/TRUSTFRAMEWORKLOCALIZATION.xml b/deployment/CustomPolicyTemplates/B2C_1A_TrustFrameworkLocalization.xml similarity index 100% rename from deployment/CustomPolicyTemplates/TRUSTFRAMEWORKLOCALIZATION.xml rename to deployment/CustomPolicyTemplates/B2C_1A_TrustFrameworkLocalization.xml diff --git a/deployment/CustomPolicyTemplates/SIGNUP_SIGNIN.xml b/deployment/CustomPolicyTemplates/B2C_1A_signup_signin.xml similarity index 100% rename from deployment/CustomPolicyTemplates/SIGNUP_SIGNIN.xml rename to deployment/CustomPolicyTemplates/B2C_1A_signup_signin.xml From e2c744e1ffc2898a3caccb8860b2c01974275540 Mon Sep 17 00:00:00 2001 From: Tianchen Zhang Date: Fri, 1 Jul 2022 15:35:00 +0100 Subject: [PATCH 023/285] fix: check existing service principals before creating --- deployment/B2CDeployment.ps1 | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index ad712bbe..8ab24882 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -21,7 +21,7 @@ $ADTenantName = Read-Host "Please enter your AD tenant name" Write-Title "STEP 1: Create AD application" Write-Host "Please login via the pop-up window that has launched in your browser" az login --tenant "$ADTenantName.onmicrosoft.com" --allow-no-subscriptions --only-show-errors > $null -$ADAppName = Read-Host "Please give a name for the AD application to be created" +$MultiTenantAppName = Read-Host "Please give a name for the AD application to be created" $ADAppManifest = "{ `"idToken`": [ { @@ -41,22 +41,25 @@ $ADAppManifest = "{ `"saml2Token`": [] }" Out-File -FilePath "manifest.json" -InputObject $ADAppManifest -$MultiTenantAppID = (az ad app create --display-name $ADAppName --sign-in-audience AzureADandPersonalMicrosoftAccount --web-redirect-uris https://$B2cTenantName.b2clogin.com/$B2cTenantName.onmicrosoft.com/oauth2/authresp --optional-claims "@manifest.json" --query appId --output tsv --only-show-errors) +$MultiTenantAppID = (az ad app create --display-name $MultiTenantAppName --sign-in-audience AzureADandPersonalMicrosoftAccount --web-redirect-uris https://$B2cTenantName.b2clogin.com/$B2cTenantName.onmicrosoft.com/oauth2/authresp --optional-claims "@manifest.json" --query appId --output tsv --only-show-errors) # Create client secret -Write-Host "Creating the client secret for $ADAppName" -$ADClientSecretName = Read-Host "Please give a name for the client secret to be created" -$ADClientSecretDuration = 1 -$ADClientSecret = (az ad app credential reset --id $MultiTenantAppID --append --display-name $ADClientSecretName --years $ADClientSecretDuration --query password --output tsv --only-show-errors) +Write-Host "Creating the client secret for $MultiTenantAppName" +$MultiTenantClientSecretName = Read-Host "Please give a name for the client secret to be created" +$MultiTenantClientSecretDuration = 1 +$MultiTenantClientSecret = (az ad app credential reset --id $MultiTenantAppID --append --display-name $MultiTenantClientSecretName --years $MultiTenantClientSecretDuration --query password --output tsv --only-show-errors) Write-Color "green" "Please take a moment to make a note of and protect the following client secret; as you will not be able to access it again." -Write-Color "green" "Client secret for $ADAppName`: $ADClientSecret" +Write-Color "green" "Client secret for $MultiTenantAppName`: $MultiTenantClientSecret" Read-Host "Press enter when ready to continue after recording the client secret" # grant permissions for the AD app Write-Host "Granting permissions to the AD application" $profilePermission = "14dad69e-099b-42c9-810b-d002981feec1=Scope" $emailPermission = "64a6cdd6-aab1-4aaf-94b8-3cc8405e90d0=Scope" -az ad sp create --id $MultiTenantAppID --only-show-errors > $null +$scope = (az ad sp show --id $MultiTenantAppID --only-show-errors 2>$null) +if ($null -eq $scope) { + az ad sp create --id $MultiTenantAppID --only-show-errors > $null +} az ad app permission grant --id $MultiTenantAppID --api 00000003-0000-0000-c000-000000000000 --scope "email profile" --only-show-errors > $null az ad app permission add --id $MultiTenantAppID --api 00000003-0000-0000-c000-000000000000 --api-permissions $emailPermission $profilePermission --only-show-errors @@ -89,7 +92,10 @@ Read-Host "Press enter when ready to continue after recording the client secret" Write-Host "Granting permissions to the B2C Web application" $openidPermission = "37f7f235-527c-4136-accd-4a02d197296e=Scope" $offlineAccessPermission = "7427e0e9-2fba-42fe-b0c0-848c9e6a8182=Scope" -az ad sp create --id $WebClientID --only-show-errors > $null +$scope = (az ad sp show --id $WebClientID --only-show-errors 2>$null) +if ($null -eq $scope) { + az ad sp create --id $WebClientID --only-show-errors > $null +} az ad app permission grant --id $WebClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null az ad app permission add --id $WebClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors #endregion @@ -102,7 +108,10 @@ $IEFClientID = (az ad app create --display-name $IEFAppName --sign-in-audience A # set permissions for the IEF app Write-Host "Granting permissions to the IEF application" -az ad sp create --id $IEFClientID --only-show-errors > $null +$scope = (az ad sp show --id $IEFClientID --only-show-errors 2>$null) +if ($null -eq $scope) { + az ad sp create --id $IEFClientID --only-show-errors > $null +} az ad app permission grant --id $IEFClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null az ad app permission add --id $IEFClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors @@ -136,7 +145,10 @@ $ProxyIEFAppName = "ProxyIdentityExperienceFramework" $ProxyIEFClientID = (az ad app create --display-name $ProxyIEFAppName --sign-in-audience AzureADMyOrg --public-client-redirect-uris myapp://auth --is-fallback-public-client true --query appId --output tsv --only-show-errors) Write-Host "Granting permissions to the Proxy IEF application" -az ad sp create --id $ProxyIEFClientID --only-show-errors > $null +$scope = (az ad sp show --id $ProxyIEFClientID --only-show-errors 2>$null) +if ($null -eq $scope) { + az ad sp create --id $ProxyIEFClientID --only-show-errors > $null +} az ad app permission grant --id $ProxyIEFClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null az ad app permission add --id $ProxyIEFClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors az ad app permission grant --id $ProxyIEFClientID --api $IEFClientID --scope "user_impersonation" --only-show-errors > $null @@ -342,7 +354,7 @@ $headers.Add("Content-Type", "application/json") $body = "{ `n `"use`": `"sig`", -`n `"k`": `""+$ADClientSecret+"`", +`n `"k`": `""+$MultiTenantClientSecret+"`", `n `"nbf`": "+$nbf+", `n `"exp`": "+$exp+" `n}" From 619994afa271ccb833258e14a322a54b77b7938e Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Fri, 1 Jul 2022 15:43:32 +0100 Subject: [PATCH 024/285] renamed Custom Policy Cleanup file to B2C Cleanup --- deployment/{CleanupCustomPolicies.ps1 => B2CCleanup.ps1} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename deployment/{CleanupCustomPolicies.ps1 => B2CCleanup.ps1} (100%) diff --git a/deployment/CleanupCustomPolicies.ps1 b/deployment/B2CCleanup.ps1 similarity index 100% rename from deployment/CleanupCustomPolicies.ps1 rename to deployment/B2CCleanup.ps1 From 7ccd6513011f2ca88dd70e90a2ce122ee7837e83 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Fri, 1 Jul 2022 15:53:09 +0100 Subject: [PATCH 025/285] Fixed code for deleting keysets using HTML requests syntax --- deployment/B2CCleanup.ps1 | 51 +++++++++++++++++++++++++++++------- deployment/B2CDeployment.ps1 | 4 +-- 2 files changed, 44 insertions(+), 11 deletions(-) diff --git a/deployment/B2CCleanup.ps1 b/deployment/B2CCleanup.ps1 index 57a6fb65..b57b6ace 100644 --- a/deployment/B2CCleanup.ps1 +++ b/deployment/B2CCleanup.ps1 @@ -9,20 +9,53 @@ function Write-Title([string]$Title) { #endregion -# Connecting to the b2c tenant and removing the custom policies already uploaded to the b2c tenant + + + + + +#region "Getting the token to be used in the HTML REQUESTS" +# relevant docs: https://docs.microsoft.com/en-us/graph/auth-v2-service#4-get-an-access-token +Write-Title "Getting the token to be used in the HTML REQUESTS" + +$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" +$headers.Add("Content-Type", "application/x-www-form-urlencoded") + +$body = "client_id=a00baec5-65fc-4488-947f-8584625d47a5&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&client_secret=qlA8Q~~IUVTBB.snchHBe2V1f6o_6m6-nNOgba0i&grant_type=client_credentials" + +$response = Invoke-RestMethod 'https://login.microsoftonline.com/playltib2c.onmicrosoft.com/oauth2/v2.0/token' -Method 'POST' -Headers $headers -Body $body +$access_token = $response.access_token +$access_token = "Bearer " + $access_token +#endregion + + +#region "Connecting to the b2c tenant and removing the custom policies already uploaded to the b2c tenant" +#reference: https://docs.microsoft.com/en-us/graph/api/trustframeworkpolicy-delete?view=graph-rest-beta&tabs=http Write-Title "Cleaning up the custom policies from the b2c tenant" $B2cTenantDomain = Read-Host "What is your B2C tenants domain (e.g. mytenant.onmicrosoft.com)?" -Import-Module AzureADPreview -Connect-AzureAD -Tenant $B2cTenantDomain -Remove-AzureADMSTrustFrameworkPolicy -Id B2C_1A_PasswordReset -Remove-AzureADMSTrustFrameworkPolicy -Id B2C_1A_ProfileEdit -Remove-AzureADMSTrustFrameworkPolicy -Id B2C_1A_signup_signin -Remove-AzureADMSTrustFrameworkPolicy -Id B2C_1A_TrustFrameworkBase -Remove-AzureADMSTrustFrameworkPolicy -Id B2C_1A_TrustFrameworkExtensions -Remove-AzureADMSTrustFrameworkPolicy -Id B2C_1A_TrustFrameworkLocalization +$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" +$headers.Add("Authorization", $access_token) + +Write-Host "Deleting B2C_1A_TrustFrameworkBase" +$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies/B2C_1A_TrustFrameworkBase' -Method 'DELETE' -Headers $headers +Write-Host "Deleting B2C_1A_TrustFrameworkLocalization" +$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies/B2C_1A_TrustFrameworkLocalization' -Method 'DELETE' -Headers $headers + +Write-Host "Deleting B2C_1A_TrustFrameworkExtensions" +$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies/B2C_1A_TrustFrameworkExtensions' -Method 'DELETE' -Headers $headers + +Write-Host "Deleting B2C_1A_signup_signin" +$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies/B2C_1A_signup_signin' -Method 'DELETE' -Headers $headers + +Write-Host "Deleting B2C_1A_ProfileEdit" +$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies/B2C_1A_ProfileEdit' -Method 'DELETE' -Headers $headers + +Write-Host "Deleting B2C_1A_PasswordReset" +$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies/B2C_1A_PasswordReset' -Method 'DELETE' -Headers $headers +#endregion # Cleaning up the keysets from the b2c tenant Write-Title "Cleaning up the keysets from the b2c tenant" diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 8ab24882..4075cdef 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -215,9 +215,9 @@ while($num_months -le 0){ [uint16] $num_months = Read-Host "How many months do you want the keys to be valid for? (must be greater than 0)" } -#region "Getting the token to be used in the GET/POST requests" +#region "Getting the token to be used in the HTML REQUESTS" # relevant docs: https://docs.microsoft.com/en-us/graph/auth-v2-service#4-get-an-access-token -Write-Host "Getting the token to be used in the GET/POST requests" +Write-Host "Getting the token to be used in the HTML REQUESTS" $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $headers.Add("Content-Type", "application/x-www-form-urlencoded") From 757c54426551596529efb37f57e6f38782fff4e8 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Fri, 1 Jul 2022 15:53:09 +0100 Subject: [PATCH 026/285] Fixed code for deleting the custom policies using HTML requests syntax --- deployment/B2CCleanup.ps1 | 51 +++++++++++++++++++++++++++++------- deployment/B2CDeployment.ps1 | 4 +-- 2 files changed, 44 insertions(+), 11 deletions(-) diff --git a/deployment/B2CCleanup.ps1 b/deployment/B2CCleanup.ps1 index 57a6fb65..b57b6ace 100644 --- a/deployment/B2CCleanup.ps1 +++ b/deployment/B2CCleanup.ps1 @@ -9,20 +9,53 @@ function Write-Title([string]$Title) { #endregion -# Connecting to the b2c tenant and removing the custom policies already uploaded to the b2c tenant + + + + + +#region "Getting the token to be used in the HTML REQUESTS" +# relevant docs: https://docs.microsoft.com/en-us/graph/auth-v2-service#4-get-an-access-token +Write-Title "Getting the token to be used in the HTML REQUESTS" + +$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" +$headers.Add("Content-Type", "application/x-www-form-urlencoded") + +$body = "client_id=a00baec5-65fc-4488-947f-8584625d47a5&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&client_secret=qlA8Q~~IUVTBB.snchHBe2V1f6o_6m6-nNOgba0i&grant_type=client_credentials" + +$response = Invoke-RestMethod 'https://login.microsoftonline.com/playltib2c.onmicrosoft.com/oauth2/v2.0/token' -Method 'POST' -Headers $headers -Body $body +$access_token = $response.access_token +$access_token = "Bearer " + $access_token +#endregion + + +#region "Connecting to the b2c tenant and removing the custom policies already uploaded to the b2c tenant" +#reference: https://docs.microsoft.com/en-us/graph/api/trustframeworkpolicy-delete?view=graph-rest-beta&tabs=http Write-Title "Cleaning up the custom policies from the b2c tenant" $B2cTenantDomain = Read-Host "What is your B2C tenants domain (e.g. mytenant.onmicrosoft.com)?" -Import-Module AzureADPreview -Connect-AzureAD -Tenant $B2cTenantDomain -Remove-AzureADMSTrustFrameworkPolicy -Id B2C_1A_PasswordReset -Remove-AzureADMSTrustFrameworkPolicy -Id B2C_1A_ProfileEdit -Remove-AzureADMSTrustFrameworkPolicy -Id B2C_1A_signup_signin -Remove-AzureADMSTrustFrameworkPolicy -Id B2C_1A_TrustFrameworkBase -Remove-AzureADMSTrustFrameworkPolicy -Id B2C_1A_TrustFrameworkExtensions -Remove-AzureADMSTrustFrameworkPolicy -Id B2C_1A_TrustFrameworkLocalization +$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" +$headers.Add("Authorization", $access_token) + +Write-Host "Deleting B2C_1A_TrustFrameworkBase" +$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies/B2C_1A_TrustFrameworkBase' -Method 'DELETE' -Headers $headers +Write-Host "Deleting B2C_1A_TrustFrameworkLocalization" +$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies/B2C_1A_TrustFrameworkLocalization' -Method 'DELETE' -Headers $headers + +Write-Host "Deleting B2C_1A_TrustFrameworkExtensions" +$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies/B2C_1A_TrustFrameworkExtensions' -Method 'DELETE' -Headers $headers + +Write-Host "Deleting B2C_1A_signup_signin" +$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies/B2C_1A_signup_signin' -Method 'DELETE' -Headers $headers + +Write-Host "Deleting B2C_1A_ProfileEdit" +$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies/B2C_1A_ProfileEdit' -Method 'DELETE' -Headers $headers + +Write-Host "Deleting B2C_1A_PasswordReset" +$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies/B2C_1A_PasswordReset' -Method 'DELETE' -Headers $headers +#endregion # Cleaning up the keysets from the b2c tenant Write-Title "Cleaning up the keysets from the b2c tenant" diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 8ab24882..4075cdef 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -215,9 +215,9 @@ while($num_months -le 0){ [uint16] $num_months = Read-Host "How many months do you want the keys to be valid for? (must be greater than 0)" } -#region "Getting the token to be used in the GET/POST requests" +#region "Getting the token to be used in the HTML REQUESTS" # relevant docs: https://docs.microsoft.com/en-us/graph/auth-v2-service#4-get-an-access-token -Write-Host "Getting the token to be used in the GET/POST requests" +Write-Host "Getting the token to be used in the HTML REQUESTS" $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $headers.Add("Content-Type", "application/x-www-form-urlencoded") From 1cc18c340e2d3a357d31a29895337eba247780cb Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Fri, 1 Jul 2022 15:56:59 +0100 Subject: [PATCH 027/285] Fixed code for deleting keysets using HTML requests syntax --- deployment/B2CCleanup.ps1 | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/deployment/B2CCleanup.ps1 b/deployment/B2CCleanup.ps1 index b57b6ace..9ec56ac6 100644 --- a/deployment/B2CCleanup.ps1 +++ b/deployment/B2CCleanup.ps1 @@ -57,13 +57,15 @@ Write-Host "Deleting B2C_1A_PasswordReset" $response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies/B2C_1A_PasswordReset' -Method 'DELETE' -Headers $headers #endregion -# Cleaning up the keysets from the b2c tenant +#region "Cleaning up the keysets from the b2c tenant" Write-Title "Cleaning up the keysets from the b2c tenant" $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $headers.Add("Authorization", $access_token) +Write-Host "Deleting B2C_1A_TokenSigningKeyContainer keyset" $response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets/B2C_1A_TokenSigningKeyContainer' -Method 'DELETE' -Headers $headers -$response | ConvertTo-Json - +Write-Host "Deleting B2C_1A_TokenEncryptionKeyContainer keyset" $response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets/B2C_1A_TokenEncryptionKeyContainer' -Method 'DELETE' -Headers $headers -$response | ConvertTo-Json \ No newline at end of file +Write-Host "Deleting B2C_1A_AADAppSecret keyset" +$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets/B2C_1A_AADAppSecret' -Method 'DELETE' -Headers $headers +#endregion \ No newline at end of file From 8e29ff353bad6eed97789b1547db4a0e17fa506d Mon Sep 17 00:00:00 2001 From: Tianchen Zhang Date: Fri, 1 Jul 2022 16:11:07 +0100 Subject: [PATCH 028/285] feat: store app info for cleanup --- deployment/B2CDeployment.ps1 | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 4075cdef..1f0e2eb5 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -14,6 +14,11 @@ function Write-Color($Color, [string]$Text) { } #endregion +#region "AppInfo CSV setup" +$AppInfoCSVPath = ".\AppInfo.csv" +Clear-Content $AppInfoCSVPath +#endregeion + #region "STEP 1: Create Active Directory application" $B2cTenantName = Read-Host "Please enter your B2C tenant name" $ADTenantName = Read-Host "Please enter your AD tenant name" @@ -43,6 +48,12 @@ $ADAppManifest = "{ Out-File -FilePath "manifest.json" -InputObject $ADAppManifest $MultiTenantAppID = (az ad app create --display-name $MultiTenantAppName --sign-in-audience AzureADandPersonalMicrosoftAccount --web-redirect-uris https://$B2cTenantName.b2clogin.com/$B2cTenantName.onmicrosoft.com/oauth2/authresp --optional-claims "@manifest.json" --query appId --output tsv --only-show-errors) +$MultiTenantAppInfo = @{ + AppID = $MultiTenantAppID + TenantID = $ADTenantName +} +$MultiTenantAppInfo | Export-Csv -Path $AppInfoCSVPath -NoTypeInformation -Append + # Create client secret Write-Host "Creating the client secret for $MultiTenantAppName" $MultiTenantClientSecretName = Read-Host "Please give a name for the client secret to be created" @@ -79,6 +90,12 @@ Write-Title "STEP 3: Creating the B2C Web application" $B2cAppName = Read-Host "Please give a name for the web application to be created" $WebClientID = (az ad app create --display-name $B2cAppName --sign-in-audience AzureADandPersonalMicrosoftAccount --web-redirect-uris https://jwt.ms --enable-access-token-issuance true --enable-id-token-issuance true --query appId --output tsv --only-show-errors) +$WebAppInfo = @{ + AppID = $WebClientID + TenantID = $B2cTenantName +} +$WebAppInfo | Export-Csv -Path $AppInfoCSVPath -NoTypeInformation -Append + # create client secret Write-Host "Creating the client secret for $B2cAppName" $WebClientSecretName = Read-Host "Please give a the name for the client secret to be created" @@ -106,6 +123,12 @@ Write-Title "STEP 4: Creating the Identity Experience Framework application" $IEFAppName = "IdentityExperienceFramework" $IEFClientID = (az ad app create --display-name $IEFAppName --sign-in-audience AzureADMyOrg --web-redirect-uris https://$B2cTenantName.b2clogin.com/$B2cTenantName.onmicrosoft.com --query appId --output tsv --only-show-errors) +$IEFAppInfo = @{ + AppID = $IEFClientID + TenantID = $B2cTenantName +} +$IEFClientID | Export-Csv -Path $AppInfoCSVPath -NoTypeInformation -Append + # set permissions for the IEF app Write-Host "Granting permissions to the IEF application" $scope = (az ad sp show --id $IEFClientID --only-show-errors 2>$null) @@ -144,6 +167,12 @@ Write-Title "STEP 5: Creating the Proxy Identity Experience Framework applicatio $ProxyIEFAppName = "ProxyIdentityExperienceFramework" $ProxyIEFClientID = (az ad app create --display-name $ProxyIEFAppName --sign-in-audience AzureADMyOrg --public-client-redirect-uris myapp://auth --is-fallback-public-client true --query appId --output tsv --only-show-errors) +$ProxyIEFAppInfo = @{ + AppID = $ProxyIEFClientID + TenantID = $B2cTenantName +} +$ProxyIEFAppInfo | Export-Csv -Path $AppInfoCSVPath -NoTypeInformation -Append + Write-Host "Granting permissions to the Proxy IEF application" $scope = (az ad sp show --id $ProxyIEFClientID --only-show-errors 2>$null) if ($null -eq $scope) { From 28f0735d2547d5a9334c306d3e79f989774cae09 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Fri, 1 Jul 2022 16:16:45 +0100 Subject: [PATCH 029/285] Modified B2CDeployment.ps1 to check if keyset exists before trying to upload to prevent collision based crashes --- deployment/.gitignore | 3 + deployment/B2CDeployment.ps1 | 180 ++++++++++++++++++++--------------- deployment/Cleanup.ps1 | 4 +- deployment/Deploy.ps1 | 4 +- 4 files changed, 109 insertions(+), 82 deletions(-) create mode 100644 deployment/.gitignore diff --git a/deployment/.gitignore b/deployment/.gitignore new file mode 100644 index 00000000..4aec943f --- /dev/null +++ b/deployment/.gitignore @@ -0,0 +1,3 @@ +_Temp* +CustomPolicy/* +manifest.json \ No newline at end of file diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 4075cdef..614eb306 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -229,56 +229,74 @@ $access_token = $response.access_token $access_token = "Bearer " + $access_token #endregion -#region "STEP 9.A: Create the signing key" -Write-Title "STEP 9.A: Creating the Signing Key" - -#region "Creating the signing keyset (container)" -#reference: https://docs.microsoft.com/en-us/graph/api/trustframework-post-keysets?view=graph-rest-beta&tabs=http -Write-Host "`nCreating the signing keyset (container)`n" +#region "Getting the list of all custom policies in the tenant; to check if each keyset already exists prior to creating it" +Write-Host "Getting the list of all custom policies in the tenant" $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $headers.Add("Authorization", $access_token) -$headers.Add("Content-Type", "application/json") - -$body = "{`"id`":`"B2C_1A_TokenSigningKeyContainer`"}" - -$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets' -Method 'POST' -Headers $headers -Body $body -$response | ConvertTo-Json -$signing_container_id = $response.id - -Write-Host "`nSuccessfully created the key signing container: "+$signing_container_id+"`n" +$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets' -Method 'GET' -Headers $headers +$keysets = $response.value +$keysets = $keysets.id +$keysets #endregion -#region "Generating the signing key" -#reference: https://docs.microsoft.com/en-us/graph/api/trustframeworkkeyset-generatekey?view=graph-rest-beta&tabs=http -#calculating nbf (not before) and exp (expiry) tokens into the json required format of seconds past after 1970-01-01T00:00:00Z UTC -Write-Host "`nGenerating the signing key and uploading to the keyset`n" -$arr = getNbfExp($num_months) -$nbf = $arr[0] -$exp = $arr[1] - - -$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" -$headers.Add("Authorization", $access_token) -$headers.Add("Content-Type", "application/json") - -$body = "{ -`n `"use`": `"sig`", -`n `"kty`": `"RSA`", -`n `"nbf`": "+$nbf+", -`n `"exp`": "+$exp+", -`n}" - -$response = Invoke-RestMethod ('https://graph.microsoft.com/beta/trustFramework/keySets/'+$signing_container_id+'/generateKey') -Method 'POST' -Headers $headers -Body $body - -Write-Host "Successfully generated the signing key" -#endregion +#region "STEP 9.A: Create the signing key" +Write-Title "STEP 9.A: Creating the Signing Key" +if($keysets -contains "B2C_1A_TokenSigningKeyContainer"){ + Write-Host "B2C_1A_TokenSigningKeyContainer already exists, so cannot upload it again. If this is not expected, please terminate this script and run B2CCleanup.ps1 first." +} +else{ + #region "Creating the signing keyset (container)" + #reference: https://docs.microsoft.com/en-us/graph/api/trustframework-post-keysets?view=graph-rest-beta&tabs=http + Write-Host "`nCreating the signing keyset (container)`n" + $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" + $headers.Add("Authorization", $access_token) + $headers.Add("Content-Type", "application/json") + + $body = "{`"id`":`"B2C_1A_TokenSigningKeyContainer`"}" + + $response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets' -Method 'POST' -Headers $headers -Body $body + $response | ConvertTo-Json + $signing_container_id = $response.id + + Write-Host "`nSuccessfully created the key signing container: "+$signing_container_id+"`n" + #endregion + + #region "Generating the signing key" + #reference: https://docs.microsoft.com/en-us/graph/api/trustframeworkkeyset-generatekey?view=graph-rest-beta&tabs=http + #calculating nbf (not before) and exp (expiry) tokens into the json required format of seconds past after 1970-01-01T00:00:00Z UTC + Write-Host "`nGenerating the signing key and uploading to the keyset`n" + $arr = getNbfExp($num_months) + $nbf = $arr[0] + $exp = $arr[1] + + + $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" + $headers.Add("Authorization", $access_token) + $headers.Add("Content-Type", "application/json") + + $body = "{ + `n `"use`": `"sig`", + `n `"kty`": `"RSA`", + `n `"nbf`": "+$nbf+", + `n `"exp`": "+$exp+", + `n}" + + $response = Invoke-RestMethod ('https://graph.microsoft.com/beta/trustFramework/keySets/'+$signing_container_id+'/generateKey') -Method 'POST' -Headers $headers -Body $body + + Write-Host "successfully generated and uploaded the signing key" + #endregion +} #endregion #region "STEP 9.B: Create the encryption key" Write-Title "STEP 9.B: Creating the Signing Key" +if($keysets -contains "B2C_1A_TokenSigningKeyContainer"){ + Write-Host "B2C_1A_TokenSigningKeyContainer already exists, so cannot upload it again. If this is not expected, please terminate this script and run B2CCleanup.ps1 first." +} +else{ #region "Creating the encryption keyset (container)" #reference: https://docs.microsoft.com/en-us/graph/api/trustframework-post-keysets?view=graph-rest-beta&tabs=http Write-Host "`nCreating the signing keyset (container)`n" @@ -316,7 +334,8 @@ $body = "{ $response = Invoke-RestMethod ("https://graph.microsoft.com/beta/trustFramework/keySets/$encryption_container_id/generateKey") -Method 'POST' -Headers $headers -Body $body -Write-Host "Successfully generated the encryption key" +Write-Host "Successfully generated and uploaded the encryption key" +} #endregion #endregion @@ -324,44 +343,49 @@ Write-Host "Successfully generated the encryption key" #region "STEP 9.C: Create the AADSecret keyset" Write-Title "STEP 9.C: Creating the AADAppSecret Key" -#region "Creating the AADAppSecret keyset (container)" -#reference: https://docs.microsoft.com/en-us/graph/api/trustframework-post-keysets?view=graph-rest-beta&tabs=http -Write-Host "`nCreating the AADAppSecret keyset (container)`n" -$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" -$headers.Add("Authorization", $access_token) -$headers.Add("Content-Type", "application/json") - -$body = "{`"id`":`"B2C_1A_AADAppSecret`"}" - -$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets' -Method 'POST' -Headers $headers -Body $body -$AADAppSecret_container_id = $response.id - -Write-Host "Successfully created the key AADAppSecret container: $AADAppSecret_container_id" -#endregion - -#region "Uploading the AADAppSecret key" -#reference: https://docs.microsoft.com/en-us/graph/api/trustframeworkkeyset-uploadsecret?view=graph-rest-beta&tabs=https -#calculating nbf (not before) and exp (expiry) tokens into the json required format of seconds past after 1970-01-01T00:00:00Z UTC -Write-Host "`nGenerating the AADAppSecret key and uploading to the keyset`n" -$arr = getNbfExp($num_months) -$nbf = $arr[0] -$exp = $arr[1] - -#uploading the AADAppSecret key -$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" -$headers.Add("Authorization", $access_token) -$headers.Add("Content-Type", "application/json") - -$body = "{ -`n `"use`": `"sig`", -`n `"k`": `""+$MultiTenantClientSecret+"`", -`n `"nbf`": "+$nbf+", -`n `"exp`": "+$exp+" -`n}" - -$response = Invoke-RestMethod "https://graph.microsoft.com/beta/trustFramework/keySets/$AADAppSecret_container_id/uploadSecret" -Method 'POST' -Headers $headers -Body $body - -Write-Host "Successfully uploaded the AADAppSecret key" +if($keysets -contains "B2C_1A_AADAppSecret"){ + Write-Host "B2C_1A_AADAppSecret already exists, so cannot upload it again. If this is not expected, please terminate this script and run B2CCleanup.ps1 first." +} +else{ + #region "Creating the AADAppSecret keyset (container)" + #reference: https://docs.microsoft.com/en-us/graph/api/trustframework-post-keysets?view=graph-rest-beta&tabs=http + Write-Host "`nCreating the AADAppSecret keyset (container)`n" + $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" + $headers.Add("Authorization", $access_token) + $headers.Add("Content-Type", "application/json") + + $body = "{`"id`":`"B2C_1A_AADAppSecret`"}" + + $response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets' -Method 'POST' -Headers $headers -Body $body + $AADAppSecret_container_id = $response.id + + Write-Host "Successfully created the key AADAppSecret container: $AADAppSecret_container_id" + #endregion + + #region "Uploading the AADAppSecret key" + #reference: https://docs.microsoft.com/en-us/graph/api/trustframeworkkeyset-uploadsecret?view=graph-rest-beta&tabs=https + #calculating nbf (not before) and exp (expiry) tokens into the json required format of seconds past after 1970-01-01T00:00:00Z UTC + Write-Host "`nGenerating the AADAppSecret key and uploading to the keyset`n" + $arr = getNbfExp($num_months) + $nbf = $arr[0] + $exp = $arr[1] + + #uploading the AADAppSecret key + $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" + $headers.Add("Authorization", $access_token) + $headers.Add("Content-Type", "application/json") + + $body = "{ + `n `"use`": `"sig`", + `n `"k`": `""+$MultiTenantClientSecret+"`", + `n `"nbf`": "+$nbf+", + `n `"exp`": "+$exp+" + `n}" + + $response = Invoke-RestMethod "https://graph.microsoft.com/beta/trustFramework/keySets/$AADAppSecret_container_id/uploadSecret" -Method 'POST' -Headers $headers -Body $body + + Write-Host "Successfully uploaded the AADAppSecret key" +} #endregion #endregion diff --git a/deployment/Cleanup.ps1 b/deployment/Cleanup.ps1 index 90d21780..a9e43c52 100644 --- a/deployment/Cleanup.ps1 +++ b/deployment/Cleanup.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "DM_Dev_MSLearnLTI6", - [string]$AppName = "DM-Dev-MS-Learn-Lti-Tool-App6", + [string]$ResourceGroupName = "MSLearnLTI", + [string]$AppName = "MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null ) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 491e6895..59e33c72 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "DM_Dev_MSLearnLTI6", - [string]$AppName = "DM-Dev-MS-Learn-Lti-Tool-App6", + [string]$ResourceGroupName = "MSLearnLTI", + [string]$AppName = "MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null From 243d8ebf78b48b354231d72359bc014be866bd42 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Fri, 1 Jul 2022 16:17:49 +0100 Subject: [PATCH 030/285] Modified B2CDeployment.ps1 to check if keyset exists before trying to upload to prevent collision based crashes --- deployment/B2CDeployment.ps1 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 614eb306..28264067 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -243,7 +243,7 @@ $keysets Write-Title "STEP 9.A: Creating the Signing Key" if($keysets -contains "B2C_1A_TokenSigningKeyContainer"){ - Write-Host "B2C_1A_TokenSigningKeyContainer already exists, so cannot upload it again. If this is not expected, please terminate this script and run B2CCleanup.ps1 first." + Read-Host "B2C_1A_TokenSigningKeyContainer already exists, so cannot upload it again. If this is not expected, please terminate this script and run B2CCleanup.ps1 first." } else{ #region "Creating the signing keyset (container)" @@ -294,7 +294,7 @@ else{ Write-Title "STEP 9.B: Creating the Signing Key" if($keysets -contains "B2C_1A_TokenSigningKeyContainer"){ - Write-Host "B2C_1A_TokenSigningKeyContainer already exists, so cannot upload it again. If this is not expected, please terminate this script and run B2CCleanup.ps1 first." + Read-Host "B2C_1A_TokenSigningKeyContainer already exists, so cannot upload it again. If this is not expected, please terminate this script and run B2CCleanup.ps1 first." } else{ #region "Creating the encryption keyset (container)" @@ -344,7 +344,7 @@ Write-Host "Successfully generated and uploaded the encryption key" Write-Title "STEP 9.C: Creating the AADAppSecret Key" if($keysets -contains "B2C_1A_AADAppSecret"){ - Write-Host "B2C_1A_AADAppSecret already exists, so cannot upload it again. If this is not expected, please terminate this script and run B2CCleanup.ps1 first." + Read-Host "B2C_1A_AADAppSecret already exists, so cannot upload it again. If this is not expected, please terminate this script and run B2CCleanup.ps1 first." } else{ #region "Creating the AADAppSecret keyset (container)" From c6301442937972655ebebaf82facc9a72b8773e1 Mon Sep 17 00:00:00 2001 From: Tianchen Zhang Date: Fri, 1 Jul 2022 16:22:37 +0100 Subject: [PATCH 031/285] fix: check if the csv file exists before cleaning it --- deployment/B2CDeployment.ps1 | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 1f0e2eb5..f8f19b38 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -16,7 +16,11 @@ function Write-Color($Color, [string]$Text) { #region "AppInfo CSV setup" $AppInfoCSVPath = ".\AppInfo.csv" -Clear-Content $AppInfoCSVPath +if (Test-Path $AppInfoCSVPath -PathType Leaf) { + Clear-Content $AppInfoCSVPath +} else { + New-Item $AppInfoCSVPath > $null +} #endregeion #region "STEP 1: Create Active Directory application" From 69c7094e782f69342557928271bd04d7c5129549 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Fri, 1 Jul 2022 16:53:16 +0100 Subject: [PATCH 032/285] Added AppInfo.csv to the .gitignore --- deployment/.gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/deployment/.gitignore b/deployment/.gitignore index 4aec943f..08ba3f02 100644 --- a/deployment/.gitignore +++ b/deployment/.gitignore @@ -1,3 +1,4 @@ _Temp* CustomPolicy/* -manifest.json \ No newline at end of file +manifest.json +AppInfo.csv \ No newline at end of file From 084cb298393d29d656ac542dedee4fcf4b436235 Mon Sep 17 00:00:00 2001 From: Tianchen Zhang Date: Fri, 1 Jul 2022 16:55:09 +0100 Subject: [PATCH 033/285] fix: using strings instead of csv --- deployment/B2CDeployment.ps1 | 24 ++++-------------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 79e8daef..0596d3bb 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -52,11 +52,7 @@ $ADAppManifest = "{ Out-File -FilePath "manifest.json" -InputObject $ADAppManifest $MultiTenantAppID = (az ad app create --display-name $MultiTenantAppName --sign-in-audience AzureADandPersonalMicrosoftAccount --web-redirect-uris https://$B2cTenantName.b2clogin.com/$B2cTenantName.onmicrosoft.com/oauth2/authresp --optional-claims "@manifest.json" --query appId --output tsv --only-show-errors) -$MultiTenantAppInfo = @{ - AppID = $MultiTenantAppID - TenantID = $ADTenantName -} -$MultiTenantAppInfo | Export-Csv -Path $AppInfoCSVPath -NoTypeInformation -Append +"$MultiTenantAppID,$ADTenantName" | Out-File -FilePath $AppInfoCSVPath -Append # Create client secret Write-Host "Creating the client secret for $MultiTenantAppName" @@ -94,11 +90,7 @@ Write-Title "STEP 3: Creating the B2C Web application" $B2cAppName = Read-Host "Please give a name for the web application to be created" $WebClientID = (az ad app create --display-name $B2cAppName --sign-in-audience AzureADandPersonalMicrosoftAccount --web-redirect-uris https://jwt.ms --enable-access-token-issuance true --enable-id-token-issuance true --query appId --output tsv --only-show-errors) -$WebAppInfo = @{ - AppID = $WebClientID - TenantID = $B2cTenantName -} -$WebAppInfo | Export-Csv -Path $AppInfoCSVPath -NoTypeInformation -Append +"$WebClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append # create client secret Write-Host "Creating the client secret for $B2cAppName" @@ -127,11 +119,7 @@ Write-Title "STEP 4: Creating the Identity Experience Framework application" $IEFAppName = "IdentityExperienceFramework" $IEFClientID = (az ad app create --display-name $IEFAppName --sign-in-audience AzureADMyOrg --web-redirect-uris https://$B2cTenantName.b2clogin.com/$B2cTenantName.onmicrosoft.com --query appId --output tsv --only-show-errors) -$IEFAppInfo = @{ - AppID = $IEFClientID - TenantID = $B2cTenantName -} -$IEFClientID | Export-Csv -Path $AppInfoCSVPath -NoTypeInformation -Append +"$IEFClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append # set permissions for the IEF app Write-Host "Granting permissions to the IEF application" @@ -171,11 +159,7 @@ Write-Title "STEP 5: Creating the Proxy Identity Experience Framework applicatio $ProxyIEFAppName = "ProxyIdentityExperienceFramework" $ProxyIEFClientID = (az ad app create --display-name $ProxyIEFAppName --sign-in-audience AzureADMyOrg --public-client-redirect-uris myapp://auth --is-fallback-public-client true --query appId --output tsv --only-show-errors) -$ProxyIEFAppInfo = @{ - AppID = $ProxyIEFClientID - TenantID = $B2cTenantName -} -$ProxyIEFAppInfo | Export-Csv -Path $AppInfoCSVPath -NoTypeInformation -Append +"$ProxyIEFClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append Write-Host "Granting permissions to the Proxy IEF application" $scope = (az ad sp show --id $ProxyIEFClientID --only-show-errors 2>$null) From 0cccd98ba01c1d10088b17c2ce7745452092f689 Mon Sep 17 00:00:00 2001 From: Tianchen Zhang Date: Fri, 1 Jul 2022 17:10:00 +0100 Subject: [PATCH 034/285] fix: always create new sp --- deployment/B2CDeployment.ps1 | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 0596d3bb..91d003bd 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -67,10 +67,7 @@ Read-Host "Press enter when ready to continue after recording the client secret" Write-Host "Granting permissions to the AD application" $profilePermission = "14dad69e-099b-42c9-810b-d002981feec1=Scope" $emailPermission = "64a6cdd6-aab1-4aaf-94b8-3cc8405e90d0=Scope" -$scope = (az ad sp show --id $MultiTenantAppID --only-show-errors 2>$null) -if ($null -eq $scope) { - az ad sp create --id $MultiTenantAppID --only-show-errors > $null -} +az ad sp create --id $MultiTenantAppID --only-show-errors 2>&1 > $null az ad app permission grant --id $MultiTenantAppID --api 00000003-0000-0000-c000-000000000000 --scope "email profile" --only-show-errors > $null az ad app permission add --id $MultiTenantAppID --api 00000003-0000-0000-c000-000000000000 --api-permissions $emailPermission $profilePermission --only-show-errors @@ -105,10 +102,7 @@ Read-Host "Press enter when ready to continue after recording the client secret" Write-Host "Granting permissions to the B2C Web application" $openidPermission = "37f7f235-527c-4136-accd-4a02d197296e=Scope" $offlineAccessPermission = "7427e0e9-2fba-42fe-b0c0-848c9e6a8182=Scope" -$scope = (az ad sp show --id $WebClientID --only-show-errors 2>$null) -if ($null -eq $scope) { - az ad sp create --id $WebClientID --only-show-errors > $null -} +az ad sp create --id $WebClientID --only-show-errors 2>&1 > $null az ad app permission grant --id $WebClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null az ad app permission add --id $WebClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors #endregion @@ -123,10 +117,7 @@ $IEFClientID = (az ad app create --display-name $IEFAppName --sign-in-audience A # set permissions for the IEF app Write-Host "Granting permissions to the IEF application" -$scope = (az ad sp show --id $IEFClientID --only-show-errors 2>$null) -if ($null -eq $scope) { - az ad sp create --id $IEFClientID --only-show-errors > $null -} +az ad sp create --id $IEFClientID --only-show-errors 2>&1 > $null az ad app permission grant --id $IEFClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null az ad app permission add --id $IEFClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors @@ -162,10 +153,7 @@ $ProxyIEFClientID = (az ad app create --display-name $ProxyIEFAppName --sign-in- "$ProxyIEFClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append Write-Host "Granting permissions to the Proxy IEF application" -$scope = (az ad sp show --id $ProxyIEFClientID --only-show-errors 2>$null) -if ($null -eq $scope) { - az ad sp create --id $ProxyIEFClientID --only-show-errors > $null -} +az ad sp create --id $ProxyIEFClientID --only-show-errors 2>&1 > $null az ad app permission grant --id $ProxyIEFClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null az ad app permission add --id $ProxyIEFClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors az ad app permission grant --id $ProxyIEFClientID --api $IEFClientID --scope "user_impersonation" --only-show-errors > $null From 4847adb670cbf3e8b5e1de4d25d51c6212b85d24 Mon Sep 17 00:00:00 2001 From: Tianchen Zhang Date: Fri, 1 Jul 2022 17:32:56 +0100 Subject: [PATCH 035/285] feat: cleanup for applications created --- deployment/B2CCleanup.ps1 | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/deployment/B2CCleanup.ps1 b/deployment/B2CCleanup.ps1 index 9ec56ac6..3c0579e4 100644 --- a/deployment/B2CCleanup.ps1 +++ b/deployment/B2CCleanup.ps1 @@ -8,10 +8,19 @@ function Write-Title([string]$Title) { } #endregion - - - - +$AppInfoCSVPath = ".\AppInfo.csv" +$AppInfo = Import-Csv -Path $AppInfoCSVPath -Header @("AppID", "TenantID") +$LastTenantID = "" +foreach ($info in $AppInfo) { + $id = $info.AppID + $tid = $info.TenantID + if ($tid -ne $LastTenantID) { + $LastTenantID = $tid + Write-Host "Please login via the pop-up window that has launched in your browser" + az login --tenant "$tid.onmicrosoft.com" --allow-no-subscriptions --only-show-errors > $null + } + az ad app delete --id $id --only-show-errors +} #region "Getting the token to be used in the HTML REQUESTS" From 057a3a7498ed7b228e049f95b6aede8d834f0f80 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Fri, 1 Jul 2022 17:33:22 +0100 Subject: [PATCH 036/285] Converted date to UTC time to fix issue with nbf --- deployment/B2CDeployment.ps1 | 1 + 1 file changed, 1 insertion(+) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 91d003bd..0674fa93 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -207,6 +207,7 @@ Get-ChildItem ".\CustomPolicy\" | Foreach-Object { function getNbfExp($num_months){ $start_date = Get-Date -Date "1970-01-01 00:00:00Z" $date = Get-Date + $date = $date.ToUniversalTime() $nbf = [math]::floor(($date - $start_date).TotalSeconds) $exp = [math]::floor((($date - $start_date).TotalSeconds) + $num_months * 60 * 60 * 24 * 30) return $nbf, $exp From 86fa7875d395e9e7adda59605648cf00a5133d71 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Fri, 1 Jul 2022 17:44:10 +0100 Subject: [PATCH 037/285] Modified output of the B2C deployment and cleanup scripts to be more useful to the user --- deployment/B2CCleanup.ps1 | 11 +++++++---- deployment/B2CDeployment.ps1 | 8 ++++---- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/deployment/B2CCleanup.ps1 b/deployment/B2CCleanup.ps1 index 3c0579e4..62a862a8 100644 --- a/deployment/B2CCleanup.ps1 +++ b/deployment/B2CCleanup.ps1 @@ -8,6 +8,8 @@ function Write-Title([string]$Title) { } #endregion +#region "Deleting the generated applications" +Write-Title "STEP 1: Deleting the generated applications" $AppInfoCSVPath = ".\AppInfo.csv" $AppInfo = Import-Csv -Path $AppInfoCSVPath -Header @("AppID", "TenantID") $LastTenantID = "" @@ -16,16 +18,17 @@ foreach ($info in $AppInfo) { $tid = $info.TenantID if ($tid -ne $LastTenantID) { $LastTenantID = $tid - Write-Host "Please login via the pop-up window that has launched in your browser" + Write-Host "Please login to $tid via the pop-up window that has launched in your browser" az login --tenant "$tid.onmicrosoft.com" --allow-no-subscriptions --only-show-errors > $null } + Write-Host "Deleting $id from $tid" az ad app delete --id $id --only-show-errors } - +#endregion #region "Getting the token to be used in the HTML REQUESTS" # relevant docs: https://docs.microsoft.com/en-us/graph/auth-v2-service#4-get-an-access-token -Write-Title "Getting the token to be used in the HTML REQUESTS" +Write-Title "STEP 2: Getting the token to be used in the HTML REQUESTS" $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $headers.Add("Content-Type", "application/x-www-form-urlencoded") @@ -40,7 +43,7 @@ $access_token = "Bearer " + $access_token #region "Connecting to the b2c tenant and removing the custom policies already uploaded to the b2c tenant" #reference: https://docs.microsoft.com/en-us/graph/api/trustframeworkpolicy-delete?view=graph-rest-beta&tabs=http -Write-Title "Cleaning up the custom policies from the b2c tenant" +Write-Title "STEP 3: Cleaning up the custom policies from the b2c tenant" $B2cTenantDomain = Read-Host "What is your B2C tenants domain (e.g. mytenant.onmicrosoft.com)?" diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 0674fa93..c87c029e 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -28,7 +28,7 @@ $B2cTenantName = Read-Host "Please enter your B2C tenant name" $ADTenantName = Read-Host "Please enter your AD tenant name" Write-Title "STEP 1: Create AD application" -Write-Host "Please login via the pop-up window that has launched in your browser" +Write-Host "Please login to $ADTenantName via the pop-up window that has launched in your browser" az login --tenant "$ADTenantName.onmicrosoft.com" --allow-no-subscriptions --only-show-errors > $null $MultiTenantAppName = Read-Host "Please give a name for the AD application to be created" $ADAppManifest = "{ @@ -77,7 +77,7 @@ Remove-Item manifest.json #region "STEP 2: login" Write-Title "STEP 2: Logging into the B2C Tenant" -Write-Host "Please login via the pop-up window that has launched in your browser" +Write-Host "Please login to $B2cTenantName via the pop-up window that has launched in your browser" az login --tenant "$B2cTenantName.onmicrosoft.com" --allow-no-subscriptions --only-show-errors > $null #endregion @@ -161,8 +161,8 @@ az ad app permission add --id $ProxyIEFClientID --api $IEFClientID --api-permiss #endregion -#region "STEP 6: getting the values we want to replace from the templates" -Write-Title "STEP 6: Getting values to use in the custom policies?" +#region "STEP 6: (Optional) linking facebook apps" +Write-Title "STEP 6: (Optional) linking facebook app" $HasFaceBookApp = "" while($HasFaceBookApp -ne "y" -and $HasFaceBookApp -ne "n"){ $HasFaceBookApp = Read-Host "Do you have a facebook application set up that you'd like to link? (y/n)" From ddefd8c73a916e40f134e356da28f70d0368e21a Mon Sep 17 00:00:00 2001 From: Tianchen Zhang Date: Mon, 4 Jul 2022 14:46:41 +0100 Subject: [PATCH 038/285] feat: create permission management app instead of hardcoding --- deployment/B2CDeployment.ps1 | 61 ++++++++++++++++++++++++++---------- 1 file changed, 44 insertions(+), 17 deletions(-) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index c87c029e..d5ef36c7 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -160,9 +160,36 @@ az ad app permission grant --id $ProxyIEFClientID --api $IEFClientID --scope "us az ad app permission add --id $ProxyIEFClientID --api $IEFClientID --api-permissions "$IEFScopeGUID=Scope" --only-show-errors #endregion +#region "STEP 6: Create Permission Management app" +Write-Title "STEP 6: Creating Permission Management application" +$PermissionAppName = Read-Host "Please give a name for the permission management application to be created" +$PermissionClientID = (az ad app create --display-name $PermissionAppName --sign-in-audience AzureADMyOrg --query appId --output tsv --only-show-errors) -#region "STEP 6: (Optional) linking facebook apps" -Write-Title "STEP 6: (Optional) linking facebook app" +"$PermissionClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append + +# create client secret +Write-Host "Creating the client secret for $PermissionAppName" +$PermissionClientSecretName = Read-Host "Please give a the name for the client secret to be created" +$PermissionClientSecretDuration = 1 +$PermissionClientSecret = (az ad app credential reset --id $PermissionClientID --append --display-name $PermissionClientSecretName --years $PermissionClientSecretDuration --query password --output tsv --only-show-errors) +Write-Color "green" "Please take a moment to make a note of and protect the following client secret; as you will not be able to access it again." +Write-Color "green" "Client secret for $PermissionAppName`: $PermissionClientSecret" +Read-Host "Press enter when ready to continue after recording the client secret" + +# set permissions for the web app +Write-Host "Granting permissions to the B2C Permission Management application" +$keysetRWPermission = "4a771c9a-1cf2-4609-b88e-3d3e02d539cd=Role" +$policyRWPermission = "79a677f7-b79d-40d0-a36a-3e6f8688dd7a=Role" +az ad sp create --id $PermissionClientID --only-show-errors 2>&1 > $null +az ad app permission grant --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null +az ad app permission add --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors +az ad app permission add --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $keysetRWPermission $policyRWPermission --only-show-errors +az ad app permission admin-consent --id $PermissionClientID --only-show-errors +#endregion + + +#region "STEP 7: (Optional) linking facebook apps" +Write-Title "STEP 7: (Optional) linking facebook app" $HasFaceBookApp = "" while($HasFaceBookApp -ne "y" -and $HasFaceBookApp -ne "n"){ $HasFaceBookApp = Read-Host "Do you have a facebook application set up that you'd like to link? (y/n)" @@ -174,16 +201,16 @@ if($HasFaceBookApp -eq "y"){ #endregion -#region "STEP 7: looping through each CustomPolicyTemplate and creating bases of them in CustomTemplates" -Write-Title "STEP 7: Creating template custom policies" +#region "STEP 8: looping through each CustomPolicyTemplate and creating bases of them in CustomTemplates" +Write-Title "STEP 8: Creating template custom policies" Get-ChildItem ".\CustomPolicyTemplates\" | Foreach-Object { ((Get-Content -path $_.FullName -Raw)) | Set-Content -path (".\CustomPolicy\"+$_.Name) } #endregion -#region "STEP 8: looping through each CustomPolicy and replacing their placeholder values to generate the final custom policies" -Write-Title "STEP 8: Replacing values in template custom policies to generate finalised custom policies" +#region "STEP 9: looping through each CustomPolicy and replacing their placeholder values to generate the final custom policies" +Write-Title "STEP 9: Replacing values in template custom policies to generate finalised custom policies" Get-ChildItem ".\CustomPolicy\" | Foreach-Object { #ignore the gitkeep if($_.Name -ne ".gitkeep"){ @@ -201,7 +228,7 @@ Get-ChildItem ".\CustomPolicy\" | Foreach-Object { } #endregion -#region "STEP 9: Add signing and encryption keys and AADAppSecret for the IEF applications" +#region "STEP 10: Add signing and encryption keys and AADAppSecret for the IEF applications" #region "Function for calculating the not before and expiry datetimes for the keys" function getNbfExp($num_months){ @@ -214,7 +241,7 @@ function getNbfExp($num_months){ } #endregion -Write-Title "STEP 9: Adding signing and encryption keys and AADAppSecret for the IEF applications" +Write-Title "STEP 10: Adding signing and encryption keys and AADAppSecret for the IEF applications" $num_months = 0 while($num_months -le 0){ @@ -228,7 +255,7 @@ Write-Host "Getting the token to be used in the HTML REQUESTS" $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $headers.Add("Content-Type", "application/x-www-form-urlencoded") -$body = "client_id=a00baec5-65fc-4488-947f-8584625d47a5&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&client_secret=qlA8Q~~IUVTBB.snchHBe2V1f6o_6m6-nNOgba0i&grant_type=client_credentials" +$body = "client_id=$PermissionClientID&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&client_secret=$PermissionClientSecret&grant_type=client_credentials" $response = Invoke-RestMethod 'https://login.microsoftonline.com/playltib2c.onmicrosoft.com/oauth2/v2.0/token' -Method 'POST' -Headers $headers -Body $body $access_token = $response.access_token @@ -245,8 +272,8 @@ $keysets = $keysets.id $keysets #endregion -#region "STEP 9.A: Create the signing key" -Write-Title "STEP 9.A: Creating the Signing Key" +#region "STEP 10.A: Create the signing key" +Write-Title "STEP 10.A: Creating the Signing Key" if($keysets -contains "B2C_1A_TokenSigningKeyContainer"){ Read-Host "B2C_1A_TokenSigningKeyContainer already exists, so cannot upload it again. If this is not expected, please terminate this script and run B2CCleanup.ps1 first." @@ -296,8 +323,8 @@ else{ #endregion -#region "STEP 9.B: Create the encryption key" -Write-Title "STEP 9.B: Creating the Signing Key" +#region "STEP 10.B: Create the encryption key" +Write-Title "STEP 10.B: Creating the Signing Key" if($keysets -contains "B2C_1A_TokenSigningKeyContainer"){ Read-Host "B2C_1A_TokenSigningKeyContainer already exists, so cannot upload it again. If this is not expected, please terminate this script and run B2CCleanup.ps1 first." @@ -346,8 +373,8 @@ Write-Host "Successfully generated and uploaded the encryption key" #endregion -#region "STEP 9.C: Create the AADSecret keyset" -Write-Title "STEP 9.C: Creating the AADAppSecret Key" +#region "STEP 10.C: Create the AADSecret keyset" +Write-Title "STEP 10.C: Creating the AADAppSecret Key" if($keysets -contains "B2C_1A_AADAppSecret"){ Read-Host "B2C_1A_AADAppSecret already exists, so cannot upload it again. If this is not expected, please terminate this script and run B2CCleanup.ps1 first." @@ -397,7 +424,7 @@ else{ #endregion #endregion -#region "STEP 10: uploading the custom policies to the b2c tenant" +#region "STEP 11: uploading the custom policies to the b2c tenant" #region "Function for updating existing custom policy or uploading new custom policies" function CustomPolicyUpdateOrUpload($customPolicyName, $customPolicies, $access_token) { @@ -431,7 +458,7 @@ function CustomPolicyUpdateOrUpload($customPolicyName, $customPolicies, $access_ } #endregion -Write-Title "STEP 10: Uploading the custom policies to the b2c tenant" +Write-Title "STEP 11: Uploading the custom policies to the b2c tenant" #getting list of all users in the tenant Write-Host "Getting the list of all custom policies in the tenant" From 82c934462f2c4496881bbc89a571b4e0197b60f4 Mon Sep 17 00:00:00 2001 From: Tianchen Zhang Date: Mon, 4 Jul 2022 15:19:10 +0100 Subject: [PATCH 039/285] feat: update b2c cleanup script to remove the permission management app --- deployment/B2CCleanup.ps1 | 45 +++++++++++++++++++----------------- deployment/B2CDeployment.ps1 | 5 ++++ 2 files changed, 29 insertions(+), 21 deletions(-) diff --git a/deployment/B2CCleanup.ps1 b/deployment/B2CCleanup.ps1 index 62a862a8..540c84cd 100644 --- a/deployment/B2CCleanup.ps1 +++ b/deployment/B2CCleanup.ps1 @@ -8,32 +8,17 @@ function Write-Title([string]$Title) { } #endregion -#region "Deleting the generated applications" -Write-Title "STEP 1: Deleting the generated applications" -$AppInfoCSVPath = ".\AppInfo.csv" -$AppInfo = Import-Csv -Path $AppInfoCSVPath -Header @("AppID", "TenantID") -$LastTenantID = "" -foreach ($info in $AppInfo) { - $id = $info.AppID - $tid = $info.TenantID - if ($tid -ne $LastTenantID) { - $LastTenantID = $tid - Write-Host "Please login to $tid via the pop-up window that has launched in your browser" - az login --tenant "$tid.onmicrosoft.com" --allow-no-subscriptions --only-show-errors > $null - } - Write-Host "Deleting $id from $tid" - az ad app delete --id $id --only-show-errors -} -#endregion - #region "Getting the token to be used in the HTML REQUESTS" # relevant docs: https://docs.microsoft.com/en-us/graph/auth-v2-service#4-get-an-access-token -Write-Title "STEP 2: Getting the token to be used in the HTML REQUESTS" +Write-Title "STEP 1: Getting the token to be used in the HTML REQUESTS" + +$PermissionClientID = Read-Host "Please enter the client ID of the permission management application" +$PermissionClientSecret = Read-Host "Please enter the client secret of the permission management application" -MaskInput $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $headers.Add("Content-Type", "application/x-www-form-urlencoded") -$body = "client_id=a00baec5-65fc-4488-947f-8584625d47a5&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&client_secret=qlA8Q~~IUVTBB.snchHBe2V1f6o_6m6-nNOgba0i&grant_type=client_credentials" +$body = "client_id=$PermissionClientID&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&client_secret=$PermissionClientSecret&grant_type=client_credentials" $response = Invoke-RestMethod 'https://login.microsoftonline.com/playltib2c.onmicrosoft.com/oauth2/v2.0/token' -Method 'POST' -Headers $headers -Body $body $access_token = $response.access_token @@ -43,7 +28,7 @@ $access_token = "Bearer " + $access_token #region "Connecting to the b2c tenant and removing the custom policies already uploaded to the b2c tenant" #reference: https://docs.microsoft.com/en-us/graph/api/trustframeworkpolicy-delete?view=graph-rest-beta&tabs=http -Write-Title "STEP 3: Cleaning up the custom policies from the b2c tenant" +Write-Title "STEP 2: Cleaning up the custom policies from the b2c tenant" $B2cTenantDomain = Read-Host "What is your B2C tenants domain (e.g. mytenant.onmicrosoft.com)?" @@ -80,4 +65,22 @@ Write-Host "Deleting B2C_1A_TokenEncryptionKeyContainer keyset" $response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets/B2C_1A_TokenEncryptionKeyContainer' -Method 'DELETE' -Headers $headers Write-Host "Deleting B2C_1A_AADAppSecret keyset" $response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets/B2C_1A_AADAppSecret' -Method 'DELETE' -Headers $headers +#endregion + +#region "Deleting the generated applications" +Write-Title "STEP 3: Deleting the generated applications" +$AppInfoCSVPath = ".\AppInfo.csv" +$AppInfo = Import-Csv -Path $AppInfoCSVPath -Header @("AppID", "TenantID") +$LastTenantID = "" +foreach ($info in $AppInfo) { + $id = $info.AppID + $tid = $info.TenantID + if ($tid -ne $LastTenantID) { + $LastTenantID = $tid + Write-Host "Please login to $tid via the pop-up window that has launched in your browser" + az login --tenant "$tid.onmicrosoft.com" --allow-no-subscriptions --only-show-errors > $null + } + Write-Host "Deleting $id from $tid" + az ad app delete --id $id --only-show-errors +} #endregion \ No newline at end of file diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index d5ef36c7..19f94d97 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -59,6 +59,7 @@ Write-Host "Creating the client secret for $MultiTenantAppName" $MultiTenantClientSecretName = Read-Host "Please give a name for the client secret to be created" $MultiTenantClientSecretDuration = 1 $MultiTenantClientSecret = (az ad app credential reset --id $MultiTenantAppID --append --display-name $MultiTenantClientSecretName --years $MultiTenantClientSecretDuration --query password --output tsv --only-show-errors) +Write-Color "green" "Client ID for $MultiTenantAppName`: $MultiTenantAppID" Write-Color "green" "Please take a moment to make a note of and protect the following client secret; as you will not be able to access it again." Write-Color "green" "Client secret for $MultiTenantAppName`: $MultiTenantClientSecret" Read-Host "Press enter when ready to continue after recording the client secret" @@ -94,6 +95,7 @@ Write-Host "Creating the client secret for $B2cAppName" $WebClientSecretName = Read-Host "Please give a the name for the client secret to be created" $WebClientSecretDuration = 1 $WebClientSecret = (az ad app credential reset --id $WebClientID --append --display-name $WebClientSecretName --years $WebClientSecretDuration --query password --output tsv --only-show-errors) +Write-Color "green" "Client ID for $B2cAppName`: $WebClientID" Write-Color "green" "Please take a moment to make a note of and protect the following client secret; as you will not be able to access it again." Write-Color "green" "Client secret for $B2cAppName`: $WebClientSecret" Read-Host "Press enter when ready to continue after recording the client secret" @@ -172,6 +174,7 @@ Write-Host "Creating the client secret for $PermissionAppName" $PermissionClientSecretName = Read-Host "Please give a the name for the client secret to be created" $PermissionClientSecretDuration = 1 $PermissionClientSecret = (az ad app credential reset --id $PermissionClientID --append --display-name $PermissionClientSecretName --years $PermissionClientSecretDuration --query password --output tsv --only-show-errors) +Write-Color "green" "Client ID for $PermissionAppName`: $PermissionClientID" Write-Color "green" "Please take a moment to make a note of and protect the following client secret; as you will not be able to access it again." Write-Color "green" "Client secret for $PermissionAppName`: $PermissionClientSecret" Read-Host "Press enter when ready to continue after recording the client secret" @@ -185,6 +188,8 @@ az ad app permission grant --id $PermissionClientID --api 00000003-0000-0000-c00 az ad app permission add --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors az ad app permission add --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $keysetRWPermission $policyRWPermission --only-show-errors az ad app permission admin-consent --id $PermissionClientID --only-show-errors +# sleep 3 seconds to finish the admin-consent step +Start-Sleep -Seconds 3 #endregion From adc39a607f12fbec26a597308c6fd27a24ab78b9 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Mon, 4 Jul 2022 15:27:30 +0100 Subject: [PATCH 040/285] Removed legacy user input from when cleaning up of custom policies used powershell modules --- deployment/B2CCleanup.ps1 | 2 -- 1 file changed, 2 deletions(-) diff --git a/deployment/B2CCleanup.ps1 b/deployment/B2CCleanup.ps1 index 540c84cd..3bc703d3 100644 --- a/deployment/B2CCleanup.ps1 +++ b/deployment/B2CCleanup.ps1 @@ -30,8 +30,6 @@ $access_token = "Bearer " + $access_token #reference: https://docs.microsoft.com/en-us/graph/api/trustframeworkpolicy-delete?view=graph-rest-beta&tabs=http Write-Title "STEP 2: Cleaning up the custom policies from the b2c tenant" -$B2cTenantDomain = Read-Host "What is your B2C tenants domain (e.g. mytenant.onmicrosoft.com)?" - $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $headers.Add("Authorization", $access_token) From 5d3df36d85bc730bc2b82aff889b4e2b0d0786ac Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Mon, 4 Jul 2022 16:30:21 +0100 Subject: [PATCH 041/285] Annotated token usages in AssignmentLearnContentAPI.cs --- .../AssignmentLearnContentApi.cs | 38 ++++++++++++------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs b/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs index 059f423b..f83932cc 100644 --- a/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs +++ b/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs @@ -197,38 +197,48 @@ public async Task ClearAssignmentLearnContent( : new OkResult(); } + + #region "DM: (POSSIBLY) IMPORTANT FUNCTION FOR OUR MODIFIED AUTHORIZATION, UTILISES JSON TOKENS" + // function for getting all the assignmentLearnContent entities in the tenant (?) private async Task> GetAllAssignmentLearnContentEntities(CloudTable assignmentLearnContentTable, string assignmentId) { TableQuery assignmentSelectedLearnContentQuery = new TableQuery() .Where( TableQuery.GenerateFilterCondition(nameof(TableEntity.PartitionKey), QueryComparisons.Equal, assignmentId) - ); + ); // get all the entities with the same partition key as the assignmentId (?) + + List assignmentSelectedLearnContent = new List(); // create an empty list of AssignmentLearnContentEntity + + TableContinuationToken continuationToken = new TableContinuationToken(); // create a new empty TableContinuationToken - List assignmentSelectedLearnContent = new List(); - TableContinuationToken continuationToken = new TableContinuationToken(); + // loop through the assignmentLearnContentTable and add the entities to assignmentSelectedLearnContent do { - TableQuerySegment querySegment = await assignmentLearnContentTable.ExecuteQuerySegmentedAsync(assignmentSelectedLearnContentQuery, continuationToken); - continuationToken = querySegment.ContinuationToken; - assignmentSelectedLearnContent.AddRange(querySegment.Results); - } while (continuationToken != null); + TableQuerySegment querySegment = await assignmentLearnContentTable.ExecuteQuerySegmentedAsync(assignmentSelectedLearnContentQuery, continuationToken); // get the next segment of the assignmentLearnContentTable (?) + continuationToken = querySegment.ContinuationToken; // set the continuationToken to the next segment of the query + assignmentSelectedLearnContent.AddRange(querySegment.Results); // add the entities to the list + } while (continuationToken != null); //until there are no more continuation tokens return assignmentSelectedLearnContent; } + #endregion + #region "DM: (POSSIBLY) IMPORTANT FUNCTION FOR OUR MODIFIED AUTHORIZATION, UTILISES JSON TOKENS" + // takes in a JSON token for the content private void ChangeUrlQueryToEdnaIdentifier(JToken contentJToken) { - string url = contentJToken["url"]?.ToString(); - if (string.IsNullOrEmpty(url)) + string url = contentJToken["url"]?.ToString(); // get the url from the decoded JSON token + if (string.IsNullOrEmpty(url)) // if the url is null or empty, return return; - Uri previousUri = new Uri(url); - NameValueCollection queryParams = previousUri.ParseQueryString(); - queryParams[LearnContentUrlIdentifierKey] = LearnContentUrlIdentifierValue; + Uri previousUri = new Uri(url); //store the old url in a Uri object + NameValueCollection queryParams = previousUri.ParseQueryString(); //parse the query string of the old url into a NameValueCollection object + queryParams[LearnContentUrlIdentifierKey] = LearnContentUrlIdentifierValue; //add the "edna" identifier to the query string of the old url (defined at line 55) - UriBuilder newUriBuilder = new UriBuilder(url) { Query = queryParams.ToString() }; + UriBuilder newUriBuilder = new UriBuilder(url) { Query = queryParams.ToString() }; // create a new UriBuilder object with the new url and the query string - contentJToken["url"] = newUriBuilder.Uri.ToString(); + contentJToken["url"] = newUriBuilder.Uri.ToString(); //update the JSON tokens url with the newly generated url } + #endregion } } \ No newline at end of file From 2a07683e32b5c25a3e4e7a7de352f4727c2bdf0e Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Tue, 5 Jul 2022 12:02:39 +0100 Subject: [PATCH 042/285] Annotated validation and auth usages --- .../AssignmentLearnContentApi.cs | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs b/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs index f83932cc..64957781 100644 --- a/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs +++ b/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs @@ -83,21 +83,27 @@ public async Task SaveAssignmentLearnContent( string contentUid, [User] UsersClient usersClient) { + #region "DM: VALIDATION OF USER EMAIL EXISTING, DOUBT THE CHANGE OF AD TO B2C WILL CHANGE THIS API BUT FLAGGED TO CHECK FURTHER" + // validating user email exists in the request header bool isSystemCallOrUserWithValidEmail = req.Headers.TryGetUserEmails(out List userEmails); if (!isSystemCallOrUserWithValidEmail) { _logger.LogError("Could not get user email."); return new BadRequestErrorMessageResult("Could not get user email."); } + #endregion if (userEmails.Count > 0) { - _logger.LogInformation($"Getting user information for '{string.Join(';', userEmails)}'."); + #region "DM: getting list of for the assignment from AD and checking they are authorized (teacher status)" + _logger.LogInformation($"Getting user information for '{string.Join(';', userEmails)}'."); // Creating logger for logging user (email owner) information - User[] allUsers = await usersClient.GetAllUsers(assignmentId); - User user = allUsers.FirstOrDefault(member => userEmails.Any(userEmail => (member.Email ?? String.Empty).Equals(userEmail))); + User[] allUsers = await usersClient.GetAllUsers(assignmentId); // Getting all users for the assignment + User user = allUsers.FirstOrDefault(member => userEmails.Any(userEmail => (member.Email ?? String.Empty).Equals(userEmail))); // Getting user from the list of emails + // If the user is not found or the user is NOT a teacher, return UnauthorizedResult if (user == null || !user.Role.Equals("teacher")) return new UnauthorizedResult(); + #endregion } _logger.LogInformation($"Saving assignment learn content with uid [{contentUid}] to assignment {assignmentId}"); @@ -122,21 +128,26 @@ public async Task RemoveAssignmentLearnContent( string contentUid, [User] UsersClient usersClient) { + #region "DM: VALIDATION OF USER EMAIL EXISTING, DOUBT THE CHANGE OF AD TO B2C WILL CHANGE THIS API BUT FLAGGED TO CHECK FURTHER" + // validating user email exists in the request header bool isSystemCallOrUserWithValidEmail = req.Headers.TryGetUserEmails(out List userEmails); if (!isSystemCallOrUserWithValidEmail) { _logger.LogError("Could not get user email."); return new BadRequestErrorMessageResult("Could not get user email."); } + #endregion if (userEmails.Count > 0) { + #region "DM: [SAME AS LINE 98] getting list of for the assignment from AD and checking they are authorized (teacher status)" _logger.LogInformation($"Getting user information for '{string.Join(';', userEmails)}'."); User[] allUsers = await usersClient.GetAllUsers(assignmentId); User user = allUsers.FirstOrDefault(member => userEmails.Any(userEmail => (member.Email ?? String.Empty).Equals(userEmail))); if (user == null || !user.Role.Equals("teacher")) return new UnauthorizedResult(); + #endregion } if (assignmentLearnContentEntityToDelete == null) @@ -160,15 +171,19 @@ public async Task ClearAssignmentLearnContent( string assignmentId, [User] UsersClient usersClient) { + #region "DM: VALIDATION OF USER EMAIL EXISTING, DOUBT THE CHANGE OF AD TO B2C WILL CHANGE THIS API BUT FLAGGED TO CHECK FURTHER" + // validating user email exists in the request header bool isSystemCallOrUserWithValidEmail = req.Headers.TryGetUserEmails(out List userEmails); if (!isSystemCallOrUserWithValidEmail) { _logger.LogError("Could not get user email."); return new BadRequestErrorMessageResult("Could not get user email."); } + #endregion if (userEmails.Count > 0) { + #region "DM: [SAME AS LINE98] getting list of for the assignment from AD and checking they are authorized (teacher status)" _logger.LogInformation($"Getting user information for '{string.Join(';', userEmails)}'."); User[] allUsers = await usersClient.GetAllUsers(assignmentId); @@ -198,7 +213,7 @@ public async Task ClearAssignmentLearnContent( } - #region "DM: (POSSIBLY) IMPORTANT FUNCTION FOR OUR MODIFIED AUTHORIZATION, UTILISES JSON TOKENS" + #region "DM: (POSSIBLY) IMPORTANT FUNCTION FOR OUR MODIFIED AUTHORIZATION, UTILISES TOKENS" // function for getting all the assignmentLearnContent entities in the tenant (?) private async Task> GetAllAssignmentLearnContentEntities(CloudTable assignmentLearnContentTable, string assignmentId) { From 889e16e35337f9a4cc06a735b641c065bbe25659 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Tue, 5 Jul 2022 13:47:59 +0100 Subject: [PATCH 043/285] Modified cleanup to use secureString for inputting the secret value; and B2CDeployment error catching the race condition between granting admin-consent and requiring it --- deployment/B2CCleanup.ps1 | 5 ++++- deployment/B2CDeployment.ps1 | 13 +++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/deployment/B2CCleanup.ps1 b/deployment/B2CCleanup.ps1 index 3bc703d3..ad703567 100644 --- a/deployment/B2CCleanup.ps1 +++ b/deployment/B2CCleanup.ps1 @@ -13,7 +13,10 @@ function Write-Title([string]$Title) { Write-Title "STEP 1: Getting the token to be used in the HTML REQUESTS" $PermissionClientID = Read-Host "Please enter the client ID of the permission management application" -$PermissionClientSecret = Read-Host "Please enter the client secret of the permission management application" -MaskInput +$PermissionClientSecret = Read-Host "Please enter the client secret of the permission management application" -AsSecureString +#Converting from secure string to normal string +$PermissionClientSecret = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($PermissionClientSecret) +$PermissionClientSecret = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($bstr) $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $headers.Add("Content-Type", "application/x-www-form-urlencoded") diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 19f94d97..17a23c4b 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -272,6 +272,19 @@ Write-Host "Getting the list of all custom policies in the tenant" $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $headers.Add("Authorization", $access_token) $response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets' -Method 'GET' -Headers $headers + +while(1){ + try{ + $response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets' -Method 'GET' -Headers $headers + break + } + catch{ + Write-Color "Red" "Error getting the list of all custom policies in the tenant.`nDue to application permission not having been granted yet due to race-condition between granting admin-consent for the Permission Management Application and the subsequent steps prior to this point.`nWait a couple of minutes, grab a coffee; then press enter to retry." + Read-Host "" + } + +} + $keysets = $response.value $keysets = $keysets.id $keysets From ee24e1dd973ca0bc39100905fa12edc67088f840 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Tue, 5 Jul 2022 16:14:27 +0100 Subject: [PATCH 044/285] getting rid of purge protection temporarily --- deployment/azuredeploy.json | 1 - 1 file changed, 1 deletion(-) diff --git a/deployment/azuredeploy.json b/deployment/azuredeploy.json index 29e22aec..d87eb55f 100644 --- a/deployment/azuredeploy.json +++ b/deployment/azuredeploy.json @@ -368,7 +368,6 @@ "enabledForDiskEncryption": "[variables('enabledForDiskEncryption')]", "enabledForTemplateDeployment": "[variables('enabledForTemplateDeployment')]", "enableSoftDelete": true, - "enablePurgeProtection": true, "tenantId": "[variables('tenantId')]", "accessPolicies": [ { From 614db7fee472c20dbc8ddcf193553978097e9123 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Tue, 5 Jul 2022 16:23:26 +0100 Subject: [PATCH 045/285] Fixed issue resulting from race condition to do with granting of admin-consent --- deployment/B2CCleanup.ps1 | 6 ++-- deployment/B2CDeployment.ps1 | 54 ++++++++++++++++++------------------ 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/deployment/B2CCleanup.ps1 b/deployment/B2CCleanup.ps1 index ad703567..77c2c623 100644 --- a/deployment/B2CCleanup.ps1 +++ b/deployment/B2CCleanup.ps1 @@ -16,7 +16,7 @@ $PermissionClientID = Read-Host "Please enter the client ID of the permission ma $PermissionClientSecret = Read-Host "Please enter the client secret of the permission management application" -AsSecureString #Converting from secure string to normal string $PermissionClientSecret = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($PermissionClientSecret) -$PermissionClientSecret = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($bstr) +$PermissionClientSecret = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($PermissionClientSecret) $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $headers.Add("Content-Type", "application/x-www-form-urlencoded") @@ -56,7 +56,7 @@ $response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/p #endregion #region "Cleaning up the keysets from the b2c tenant" -Write-Title "Cleaning up the keysets from the b2c tenant" +Write-Title "STEP 3: Cleaning up the keysets from the b2c tenant" $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $headers.Add("Authorization", $access_token) @@ -69,7 +69,7 @@ $response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/k #endregion #region "Deleting the generated applications" -Write-Title "STEP 3: Deleting the generated applications" +Write-Title "STEP 4: Deleting the generated applications" $AppInfoCSVPath = ".\AppInfo.csv" $AppInfo = Import-Csv -Path $AppInfoCSVPath -Header @("AppID", "TenantID") $LastTenantID = "" diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 17a23c4b..82f6252e 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -187,7 +187,7 @@ az ad sp create --id $PermissionClientID --only-show-errors 2>&1 > $null az ad app permission grant --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null az ad app permission add --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors az ad app permission add --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $keysetRWPermission $policyRWPermission --only-show-errors -az ad app permission admin-consent --id $PermissionClientID --only-show-errors +# az ad app permission admin-consent --id $PermissionClientID --only-show-errors # sleep 3 seconds to finish the admin-consent step Start-Sleep -Seconds 3 #endregion @@ -253,41 +253,41 @@ while($num_months -le 0){ [uint16] $num_months = Read-Host "How many months do you want the keys to be valid for? (must be greater than 0)" } -#region "Getting the token to be used in the HTML REQUESTS" -# relevant docs: https://docs.microsoft.com/en-us/graph/auth-v2-service#4-get-an-access-token -Write-Host "Getting the token to be used in the HTML REQUESTS" - -$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" -$headers.Add("Content-Type", "application/x-www-form-urlencoded") +Write-Host "Getting the token to be used in the HTML Requests and the list of existing keysets to check for conflicts when creating new ones" +$response = "" +$keysets = "" +while(1){ + try{ + #region "Getting the token to be used in the HTML REQUESTS" + # relevant docs: https://docs.microsoft.com/en-us/graph/auth-v2-service#4-get-an-access-token -$body = "client_id=$PermissionClientID&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&client_secret=$PermissionClientSecret&grant_type=client_credentials" + $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" + $headers.Add("Content-Type", "application/x-www-form-urlencoded") -$response = Invoke-RestMethod 'https://login.microsoftonline.com/playltib2c.onmicrosoft.com/oauth2/v2.0/token' -Method 'POST' -Headers $headers -Body $body -$access_token = $response.access_token -$access_token = "Bearer " + $access_token -#endregion + $body = "client_id=$PermissionClientID&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&client_secret=$PermissionClientSecret&grant_type=client_credentials" -#region "Getting the list of all custom policies in the tenant; to check if each keyset already exists prior to creating it" -Write-Host "Getting the list of all custom policies in the tenant" -$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" -$headers.Add("Authorization", $access_token) -$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets' -Method 'GET' -Headers $headers + $response = Invoke-RestMethod 'https://login.microsoftonline.com/playltib2c.onmicrosoft.com/oauth2/v2.0/token' -Method 'POST' -Headers $headers -Body $body + $access_token = $response.access_token + $access_token = "Bearer " + $access_token + #endregion -while(1){ - try{ + #region "Getting the list of all custom policies in the tenant; to check if each keyset already exists prior to creating it" + $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" + $headers.Add("Authorization", $access_token) $response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets' -Method 'GET' -Headers $headers + $keysets = $response.value + $keysets = $keysets.id + #endregion break } catch{ - Write-Color "Red" "Error getting the list of all custom policies in the tenant.`nDue to application permission not having been granted yet due to race-condition between granting admin-consent for the Permission Management Application and the subsequent steps prior to this point.`nWait a couple of minutes, grab a coffee; then press enter to retry." - Read-Host "" + Write-Color "Red" "Error due to admin-consent having not yet been granted; please copy and paste the yellow link into your browser to manually grant admin-consent then press enter." + $PMA_Page = "https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/~/CallAnAPI/appId/$PermissionClientID/isMSAApp~/false" + Write-Color "Yellow" "$PMA_Page" + Write-Host "Please check the markdown https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/deployment/B2C_Docs/B2C_Deployment.md if you require assistance on how to do this." + Read-Host "Press enter after manually granting the admin consent permission" } - -} - -$keysets = $response.value -$keysets = $keysets.id -$keysets +} #endregion #region "STEP 10.A: Create the signing key" From 185fb86401b6e5b26312b23f4d256f56c7d6b95f Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Tue, 5 Jul 2022 17:10:37 +0100 Subject: [PATCH 046/285] Created docs for how to run the B2C Deployment and Cleanup Scripts from a user perspective --- deployment/B2C_Docs/B2C_Cleanup.md | 30 ++++ deployment/B2C_Docs/B2C_Deployment.md | 144 ++++++++++++++++++ .../Images/01_ExpandedContextMenu.png | Bin 0 -> 125695 bytes .../Images/Cleanup/04a_LoginTenant1.png | Bin 0 -> 30643 bytes .../Images/Deployment/01a_LoginTenant1.png | Bin 0 -> 30643 bytes .../10tb_ManuallyGrantAdminConsent.png | Bin 0 -> 65785 bytes .../Images/Deployment/10tc_FullyGranted.png | Bin 0 -> 74258 bytes 7 files changed, 174 insertions(+) create mode 100644 deployment/B2C_Docs/B2C_Cleanup.md create mode 100644 deployment/B2C_Docs/B2C_Deployment.md create mode 100644 deployment/B2C_Docs/Images/01_ExpandedContextMenu.png create mode 100644 deployment/B2C_Docs/Images/Cleanup/04a_LoginTenant1.png create mode 100644 deployment/B2C_Docs/Images/Deployment/01a_LoginTenant1.png create mode 100644 deployment/B2C_Docs/Images/Deployment/10tb_ManuallyGrantAdminConsent.png create mode 100644 deployment/B2C_Docs/Images/Deployment/10tc_FullyGranted.png diff --git a/deployment/B2C_Docs/B2C_Cleanup.md b/deployment/B2C_Docs/B2C_Cleanup.md new file mode 100644 index 00000000..96f2e6df --- /dev/null +++ b/deployment/B2C_Docs/B2C_Cleanup.md @@ -0,0 +1,30 @@ +# B2C Cleanup User Docs + +## Starting The Script + +* Load Learn-LTI/Deployment into Windows File Explorer +* **Hold shift** and right click in the file explorer to launch the Expanded Context Menu +* Click "Open Powershell Window Here" to launch powershell with cd already set to Learn-Lti/Deployment + * ![Expanded Context Menu](Images/01_ExpandedContextMenu.png) +* Type ".\B2CCleanup.ps1" into the newly launched Powershell then press enter + *
(base) PS D:\Users\Username\Documents\Learn-LTI\deployment> .\B2CCleanup.ps1
+ +## Step 1: Getting the token to be used in the HTML REQUESTS + +* First, enter the client ID and then the secret value of the permission management application that was created when you ran B2CDeployment.ps1
(As this application is used to request for tokens required by the HTML REQUESTS to cleanup the other created resources) + *
============================================================
STEP 1: Getting the token to be used in the HTML REQUESTS
=============================================================
Please enter the client ID of the permission management application: *********
Please enter the client secret of the permission management application: *********
+ + +## Step 2 & 3: Cleaning up the + +* Steps 2 and 3 will now run requiring 0 user input and will automatically delete the custom policies and keysets created by B2CDeployment.ps1 + +## Step 4: Deleting the generated applications +* The applications generated by B2CDeployment.ps1 will now be deleted. You will be prompted to login via your browser twice; when the tenant the application to be deleted is from is different than your currently logged into tenant. When prompted please login via the new tab launched in your browser, then return to your powershell after logging in. + *
=============================================================
STEP 4: Deleting the generated applications
=============================================================
Please login to ********* via the pop-up window that has launched in your browser
Deleting ******** from *********
Please login to ********* via the pop-up window that has launched in your browser
Deleting ********* from *********
Deleting ********* from *********
Deleting ********* from *********
Deleting ********* from *********
+ +| ![Login to AD Tenant](Images/Cleanup/04a_LoginTenant1.png) | +|---| +| The launched tabs should look similar to the above; please login using it and then switch back to the powershell | + +* Upon completion of this step your B2C and AD directories will have been cleaned up. diff --git a/deployment/B2C_Docs/B2C_Deployment.md b/deployment/B2C_Docs/B2C_Deployment.md new file mode 100644 index 00000000..3eba1703 --- /dev/null +++ b/deployment/B2C_Docs/B2C_Deployment.md @@ -0,0 +1,144 @@ +# B2C Cleanup User Docs + +## Prerequisites + +* You should have already created on Azure: + * 1x AD tenant + * 1x B2C tenant + +## Starting The Script + +* Load Learn-LTI/Deployment into Windows File Explorer +* **Hold shift** and right click in the file explorer to launch the Expanded Context Menu + +| ![Expanded Context Menu](Images/01_ExpandedContextMenu.png) | +|---| +| Click "Open Powershell Window Here" to launch powershell with cd already set to Learn-Lti/Deployment | + +* Type ".\B2CCleanup.ps1" into the newly launched Powershell then press enter + *
(base) PS D:\Users\Username\Documents\Learn-LTI\deployment> .\B2CDeployment.ps1
+ +## Step 0: + +* You will immediately be prompted to input the name of the B2C and AD tenants you have created:
1. First, input the name of the B2C Tenant you have created
2. Next, input the name of the Azure AD Tenant you have created + *
Please enter your B2C tenant name: ********
Please enter your AD tenant name: ********div> + + +## Step 1: Create AD application + +### Login to AD Tenant via your browser + +* Your powershell will now prompt you that a pop-up window has launched in your browser and directing you to log in to your AD tenant through it + *
============================================================
STEP 1: Create AD application
=============================================================
Please login to ******** via the pop-up window that has launched in your browser
+ +| ![Login to AD Tenant](Images/Deployment/01a_LoginTenant1.png) | +|---| +| The launched tab should look similar to the above; please login using it and then switch back to the powershell | + +### Creating the app and its secret + +* Return to your powershell Window, and you will now be prompted to give names for:
1. The AD Application to be created
2. The AD Applications Secret to be created
We suggest using a sensible name, such as "b2c_AD_app" and "b2c_AD_app_secret" + *
============================================================
STEP 1: Create AD application
=============================================================
Please login to ******** via the pop-up window that has launched in your browser
Please give a name for the AD application to be created: b2c_AD_app
Creating the client secret for b2c_AD_app
Please give a name for the client secret to be created: b2c_AD_app_secret
+ +### Recording the secret value (important) +* Upon successfully creating the app and its secret; the script will now output some important values in green and then pause until you next press Enter.
It is strongly recommended now that you take a moment to **store somewhere safe the ID of the app and the value for the secret** that has just been created for it; as this **secret value will no longer be accessible again**.
After recording these values press enter to continue with the script. + *
============================================================
STEP 1: Create AD application
=============================================================
Please login to ******** via the pop-up window that has launched in your browser
Please give a name for the AD application to be created: b2c_AD_app
Creating the client secret for b2c_AD_app
Please give a name for the client secret to be created: b2c_AD_app_secret
Client ID for b2c_AD_app: ********
Please take a moment to make a note of and protect the following client secret; as you will not be able to access it again.
Client secret for b2c_AD_app: ********

Press enter when ready to continue after recording the client secret:
+ + +## Step 2: Logging into the B2C tenant via your browser + +* Your powershell will now prompt you that a pop-up window has launched in your browser and directing you to login to your B2C tenant through it + *
============================================================
STEP 2: Logging into the B2C Tenant
=============================================================
Please login to ******** via the pop-up window that has launched in your browser
+ +| ![Login to AD Tenant](Images/Deployment/01a_LoginTenant1.png) | +|---| +| The launched tab should look similar to the above; please login using it and then switch back to the powershell | + +## Step 3: Creating the B2C Web Application + +### Creating the webapp and its secret + +* Return to your powershell Window, and you will now be prompted to give names for:
1. The B2C Web Application to be created
2. The B2C Web Applications Secret to be created
We suggest using a sensible name, such as "b2c_AD_webapp" and "b2c_AD_webapp_secret" + *
============================================================
STEP 3: Creating the B2C Web Application
=============================================================
Please give a name for the web application to be created: b2c_AD_webapp
Creating the client secret for b2c_AD_app
Please give a name for the client secret to be created: b2c_AD_webapp_secret
+ + +### Recording the secret value (important) + +* Upon successfully creating the webapp and its secret; the script will now output some important values in green and then pause until you next press Enter.
It is strongly recommended now that you take a moment to **store somewhere safe the ID of the app and the value for the secret** that has just been created for it; as this **secret value will no longer be accessible again**.
After recording these values press enter to continue with the script. + *
============================================================
STEP 1: Create AD application
=============================================================
Please give a name for the web application to be created: b2c_AD_webapp
Creating the client secret for b2c_AD_webapp
Please give a name for the client secret to be created: b2c_AD_webapp_secret
Client ID for b2c_AD_webapp: ********
Please take a moment to make a note of and protect the following client secret; as you will not be able to access it again.
Client secret for b2c_AD_webapp: ********

Press enter when ready to continue after recording the client secret:
+ + +## Steps 4 & 5: Creating the Identity Experience Framework & Proxy Identity Experience Framework Applications + +* No user input is required in these steps; simply wait for them to finish + + +## Step 6: Creating Permission Management Application + +### Creating the Permission Management Application and its secret + +* Return to your powershell Window, and you will now be prompted to give names for:
1. The B2C Permission Management Application to be created
2. The 2C Permission Management Applications Secret to be created
We suggest using a sensible name, such as "b2c_AD_PMA" and "b2c_AD_PMA_secret" + *
============================================================
STEP 6: Creating Permission Management Application
=============================================================
Please give a name for the permission management application to be created: b2c_AD_PMA
Creating the client secret for b2c_AD_app
Please give a name for the client secret to be created: b2c_AD_PMA_secret
+ + +### Recording the secret value (important) + +* Upon successfully creating the permission management app and its secret; the script will now output some important values in green and then pause until you next press Enter.
It is strongly recommended now that you take a moment to **store somewhere safe the ID of the app and the value for the secret** that has just been created for it; as this **secret value will no longer be accessible again**.
After recording these values press enter to continue with the script. + *
============================================================
STEP 6: Creating Permission Management Application
=============================================================
Please give a name for the permission management application to be created: b2c_AD_PMA
Creating the client secret for b2c_AD_app
Please give a name for the client secret to be created: b2c_AD_PMA_secret
Client ID for b2c_AD_PMA: ********
Please take a moment to make a note of and protect the following client secret; as you will not be able to access it again.
Client secret for b2c_AD_PMA: ********

Press enter when ready to continue after recording the client secret:
+ + +## Step 7: (Optional) linking facebook app + +### Don't link Facebook App + +* If you do not have a facebook application to link, simply input 'n' when prompted to skip this step + *
============================================================
STEP 7: (Optional) linking facebook appApplication
=============================================================
Do you have a facebook application set up that you'd like to link? (y/n): n
+ + +### Link Facebook App + +* If you do have a facebook application to link, input 'y' when prompted then input the ID of the Facebook application you would like to lin + *
============================================================
STEP 7: (Optional) linking facebook appApplication
=============================================================
Do you have a facebook application set up that you'd like to link? (y/n): y
What is the application ID of the Facebook application you created?: ********
+ + + + + +## Step 8 & 9: Creating and Generating Custom Policies from templates + +* No user input is required in these steps; simply wait for them to finish + +## Step 10: Adding Signing and Encryption keys and AADAppSecret for the IEF Applications + +### Input key duration +* You will first be prompted to input how long you wish the created keys to be valid for before they expire + *
============================================================
STEP 10: Adding signing and encryption keys and AADAppSecret for the IEF applications
=============================================================
How many months do you want the keys to be valid for? (must be greater than 0): 3
+* Upon success, the keysets and their respective keys will automatically be generated and/or uploaded in the subsequent steps 10.a through 10.c. + +#### Troubleshoot PMA Admin Consent + +* This step may fail due to a race condition between the granting of admin-consent vs the requirement of its usage in this step; you will know this has occured if you see the error message shown below + *
Error due to admin-consent having not yet been granted; please copy and paste the yellow link into your browser to manually grant admin-consent then press enter.
https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/~/CallAnAPI/appId/{{YOUR APP ID}}/isMSAApp~/false
Please check the markdown https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/deployment/B2C_Docs/B2C_Deployment.md if you require assistance on how to do this.
Press enter after manually granting the admin consent permission:
+* To solve this issue, follow the link highlighted yellow in your console which will take you to the below page. On this page you should see a button called "Grant admin consent for {B2C Tenant Name} circled in red. + * ![Application permissions page](Images/Deployment/10tb_ManuallyGrantAdminConsent.png) +* After clicking on "Grant Admin Consent" the page should now say all permissions are granted + * ![Application permissions page](Images/Deployment/10tc_FullyGranted.png) +* Now simply return to the script and press enter + * The script should then continue without requiring any further user inputs + + +## Step 11: Creating the AADAppSecret Key + +* No user input is required in this step; simply wait for it to finish +* Upon this steps completion the B2C setup is now complete and can be configured with Learn-LTI + + +# Important note: Keep the generated AppInfo.csv safe +* This contains the ID's of the created applications as well as the tenants they belong to; this is required by B2CCleanup.ps1 if you wish to automatically clean up the script at a later date you will need this file (or else you must manually delete those applications) + + + + + +# Trouble shooting +* [STEP 10: Error when getting the list of all custom policies in the tenant ](#troubleshoot-pma-admin-consent) \ No newline at end of file diff --git a/deployment/B2C_Docs/Images/01_ExpandedContextMenu.png b/deployment/B2C_Docs/Images/01_ExpandedContextMenu.png new file mode 100644 index 0000000000000000000000000000000000000000..c495173f7b21078c9774d97b0eebba54f8ce09ff GIT binary patch literal 125695 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

;&VvdG_U2}a31Lyi{j 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 z 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

@G^LgYKC!Oabtm5;tQuvWEt4JZxvn^!bL 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 literal 0 HcmV?d00001 From 8bf2a3cada06a2e41e1a696078d0b462b259efcf Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Tue, 5 Jul 2022 17:14:12 +0100 Subject: [PATCH 047/285] Added note to the docs regarding formatting --- deployment/B2C_Docs/B2C_Deployment.md | 1 + 1 file changed, 1 insertion(+) diff --git a/deployment/B2C_Docs/B2C_Deployment.md b/deployment/B2C_Docs/B2C_Deployment.md index 3eba1703..77961047 100644 --- a/deployment/B2C_Docs/B2C_Deployment.md +++ b/deployment/B2C_Docs/B2C_Deployment.md @@ -1,5 +1,6 @@ # B2C Cleanup User Docs +Note: If the markdown is downloaded and viewed in an IDE the code blocks have been formatted to be coloured as they would in the terminal for easier viewing. ## Prerequisites * You should have already created on Azure: From d90a29372d5f34e3296ce256d4296c9b9731ecc9 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Wed, 6 Jul 2022 11:47:18 +0100 Subject: [PATCH 048/285] Testing SVG colour formatting --- deployment/.vscode/settings.json | 3 +++ deployment/B2C_Docs/B2C_Deployment.md | 3 +++ deployment/B2C_Docs/Svg/.vscode/settings.json | 3 +++ deployment/B2C_Docs/Svg/Deployment/00_start.svg | 6 ++++++ 4 files changed, 15 insertions(+) create mode 100644 deployment/.vscode/settings.json create mode 100644 deployment/B2C_Docs/Svg/.vscode/settings.json create mode 100644 deployment/B2C_Docs/Svg/Deployment/00_start.svg diff --git a/deployment/.vscode/settings.json b/deployment/.vscode/settings.json new file mode 100644 index 00000000..d09a50ca --- /dev/null +++ b/deployment/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "svg.preview.background": "transparent" +} \ No newline at end of file diff --git a/deployment/B2C_Docs/B2C_Deployment.md b/deployment/B2C_Docs/B2C_Deployment.md index 77961047..c9667464 100644 --- a/deployment/B2C_Docs/B2C_Deployment.md +++ b/deployment/B2C_Docs/B2C_Deployment.md @@ -17,6 +17,9 @@ Note: If the markdown is downloaded and viewed in an IDE the code blocks have be | Click "Open Powershell Window Here" to launch powershell with cd already set to Learn-Lti/Deployment | * Type ".\B2CCleanup.ps1" into the newly launched Powershell then press enter + * ![launch B2CDeployment.ps1](Svg/Deployment/00_start.svg) + * + * *

## Step 0: diff --git a/deployment/B2C_Docs/Svg/.vscode/settings.json b/deployment/B2C_Docs/Svg/.vscode/settings.json new file mode 100644 index 00000000..be33bce5 --- /dev/null +++ b/deployment/B2C_Docs/Svg/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "svg.preview.background": "dark-transparent" +} \ No newline at end of file diff --git a/deployment/B2C_Docs/Svg/Deployment/00_start.svg b/deployment/B2C_Docs/Svg/Deployment/00_start.svg new file mode 100644 index 00000000..8b90d424 --- /dev/null +++ b/deployment/B2C_Docs/Svg/Deployment/00_start.svg @@ -0,0 +1,6 @@ + + + + (base) PS D:\Users\Username\Documents\Learn-LTI\deployment>.\B2CDeployment.ps1 + + \ No newline at end of file From 2c3500bffa391adba874c53aa0d3728a4e8e9b90 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Wed, 6 Jul 2022 12:25:44 +0100 Subject: [PATCH 049/285] Replaced html (and svg) formatted terminal output blocks with images due to github removing the styles as part of sanitization --- deployment/B2CCleanup.ps1 | 8 ++-- deployment/B2C_Docs/B2C_Cleanup.md | 12 ++++-- deployment/B2C_Docs/B2C_Deployment.md | 40 +++++++++--------- .../Images/Cleanup/00a_startScript.png | Bin 0 -> 3762 bytes .../Images/Cleanup/01a_gettingToken.png | Bin 0 -> 8491 bytes .../B2C_Docs/Images/Cleanup/04b_output.png | Bin 0 -> 17004 bytes .../Images/Deployment/00a_startScript.png | Bin 0 -> 3915 bytes .../Images/Deployment/00b_tenantNames.png | Bin 0 -> 3938 bytes .../Images/Deployment/01b_LoginPrompt.png | Bin 0 -> 5685 bytes .../Images/Deployment/01c_appName.png | Bin 0 -> 12985 bytes .../B2C_Docs/Images/Deployment/01d_secret.png | Bin 0 -> 22705 bytes .../Images/Deployment/02a_LoginPrompt.png | Bin 0 -> 5629 bytes .../Images/Deployment/03a_nameWebApp.png | Bin 0 -> 10349 bytes .../B2C_Docs/Images/Deployment/03b_secret.png | Bin 0 -> 20361 bytes .../Images/Deployment/06a_namePMA.png | Bin 0 -> 10799 bytes .../B2C_Docs/Images/Deployment/06b_secret.png | Bin 0 -> 21312 bytes .../B2C_Docs/Images/Deployment/07_noFB.png | Bin 0 -> 5842 bytes .../B2C_Docs/Images/Deployment/07_yesFB.png | Bin 0 -> 8825 bytes .../B2C_Docs/Images/Deployment/10a_time.png | Bin 0 -> 7487 bytes .../B2C_Docs/Images/Deployment/10b_error.png | Bin 0 -> 19679 bytes deployment/B2C_Docs/Svg/.vscode/settings.json | 3 -- .../B2C_Docs/Svg/Deployment/00_start.svg | 6 --- 22 files changed, 32 insertions(+), 37 deletions(-) create mode 100644 deployment/B2C_Docs/Images/Cleanup/00a_startScript.png create mode 100644 deployment/B2C_Docs/Images/Cleanup/01a_gettingToken.png create mode 100644 deployment/B2C_Docs/Images/Cleanup/04b_output.png create mode 100644 deployment/B2C_Docs/Images/Deployment/00a_startScript.png create mode 100644 deployment/B2C_Docs/Images/Deployment/00b_tenantNames.png create mode 100644 deployment/B2C_Docs/Images/Deployment/01b_LoginPrompt.png create mode 100644 deployment/B2C_Docs/Images/Deployment/01c_appName.png create mode 100644 deployment/B2C_Docs/Images/Deployment/01d_secret.png create mode 100644 deployment/B2C_Docs/Images/Deployment/02a_LoginPrompt.png create mode 100644 deployment/B2C_Docs/Images/Deployment/03a_nameWebApp.png create mode 100644 deployment/B2C_Docs/Images/Deployment/03b_secret.png create mode 100644 deployment/B2C_Docs/Images/Deployment/06a_namePMA.png create mode 100644 deployment/B2C_Docs/Images/Deployment/06b_secret.png create mode 100644 deployment/B2C_Docs/Images/Deployment/07_noFB.png create mode 100644 deployment/B2C_Docs/Images/Deployment/07_yesFB.png create mode 100644 deployment/B2C_Docs/Images/Deployment/10a_time.png create mode 100644 deployment/B2C_Docs/Images/Deployment/10b_error.png delete mode 100644 deployment/B2C_Docs/Svg/.vscode/settings.json delete mode 100644 deployment/B2C_Docs/Svg/Deployment/00_start.svg diff --git a/deployment/B2CCleanup.ps1 b/deployment/B2CCleanup.ps1 index 77c2c623..3fac9ffb 100644 --- a/deployment/B2CCleanup.ps1 +++ b/deployment/B2CCleanup.ps1 @@ -8,7 +8,7 @@ function Write-Title([string]$Title) { } #endregion -#region "Getting the token to be used in the HTML REQUESTS" +#region "STEP 1: Getting the token to be used in the HTML REQUESTS" # relevant docs: https://docs.microsoft.com/en-us/graph/auth-v2-service#4-get-an-access-token Write-Title "STEP 1: Getting the token to be used in the HTML REQUESTS" @@ -29,7 +29,7 @@ $access_token = "Bearer " + $access_token #endregion -#region "Connecting to the b2c tenant and removing the custom policies already uploaded to the b2c tenant" +#region "STEP 2: Connecting to the b2c tenant and removing the custom policies already uploaded to the b2c tenant" #reference: https://docs.microsoft.com/en-us/graph/api/trustframeworkpolicy-delete?view=graph-rest-beta&tabs=http Write-Title "STEP 2: Cleaning up the custom policies from the b2c tenant" @@ -55,7 +55,7 @@ Write-Host "Deleting B2C_1A_PasswordReset" $response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies/B2C_1A_PasswordReset' -Method 'DELETE' -Headers $headers #endregion -#region "Cleaning up the keysets from the b2c tenant" +#region "STEP 3: Cleaning up the keysets from the b2c tenant" Write-Title "STEP 3: Cleaning up the keysets from the b2c tenant" $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $headers.Add("Authorization", $access_token) @@ -68,7 +68,7 @@ Write-Host "Deleting B2C_1A_AADAppSecret keyset" $response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets/B2C_1A_AADAppSecret' -Method 'DELETE' -Headers $headers #endregion -#region "Deleting the generated applications" +#region "STEP 4: Deleting the generated applications" Write-Title "STEP 4: Deleting the generated applications" $AppInfoCSVPath = ".\AppInfo.csv" $AppInfo = Import-Csv -Path $AppInfoCSVPath -Header @("AppID", "TenantID") diff --git a/deployment/B2C_Docs/B2C_Cleanup.md b/deployment/B2C_Docs/B2C_Cleanup.md index 96f2e6df..fa21c723 100644 --- a/deployment/B2C_Docs/B2C_Cleanup.md +++ b/deployment/B2C_Docs/B2C_Cleanup.md @@ -1,5 +1,9 @@ # B2C Cleanup User Docs +## Terminal screenshots key: +* Red background = hidden B2C value +* Orange background = hidden AD value +* Pink background = user inputted value ## Starting The Script * Load Learn-LTI/Deployment into Windows File Explorer @@ -7,21 +11,21 @@ * Click "Open Powershell Window Here" to launch powershell with cd already set to Learn-Lti/Deployment * ![Expanded Context Menu](Images/01_ExpandedContextMenu.png) * Type ".\B2CCleanup.ps1" into the newly launched Powershell then press enter - *
(base) PS D:\Users\Username\Documents\Learn-LTI\deployment> .\B2CCleanup.ps1
+ * ![start cleanup script](Images/Cleanup/00a_startScript.png) ## Step 1: Getting the token to be used in the HTML REQUESTS * First, enter the client ID and then the secret value of the permission management application that was created when you ran B2CDeployment.ps1
(As this application is used to request for tokens required by the HTML REQUESTS to cleanup the other created resources) - *
============================================================
STEP 1: Getting the token to be used in the HTML REQUESTS
=============================================================
Please enter the client ID of the permission management application: *********
Please enter the client secret of the permission management application: *********
+ * ![getting token](Images/Cleanup/01a_gettingToken.png) -## Step 2 & 3: Cleaning up the +## Step 2 & 3: Cleaning up the keysets and custom policies * Steps 2 and 3 will now run requiring 0 user input and will automatically delete the custom policies and keysets created by B2CDeployment.ps1 ## Step 4: Deleting the generated applications * The applications generated by B2CDeployment.ps1 will now be deleted. You will be prompted to login via your browser twice; when the tenant the application to be deleted is from is different than your currently logged into tenant. When prompted please login via the new tab launched in your browser, then return to your powershell after logging in. - *
=============================================================
STEP 4: Deleting the generated applications
=============================================================
Please login to ********* via the pop-up window that has launched in your browser
Deleting ******** from *********
Please login to ********* via the pop-up window that has launched in your browser
Deleting ********* from *********
Deleting ********* from *********
Deleting ********* from *********
Deleting ********* from *********
+ * ![output of deleting apps](Images/Cleanup/04b_output.png) | ![Login to AD Tenant](Images/Cleanup/04a_LoginTenant1.png) | |---| diff --git a/deployment/B2C_Docs/B2C_Deployment.md b/deployment/B2C_Docs/B2C_Deployment.md index c9667464..db972009 100644 --- a/deployment/B2C_Docs/B2C_Deployment.md +++ b/deployment/B2C_Docs/B2C_Deployment.md @@ -1,6 +1,10 @@ # B2C Cleanup User Docs -Note: If the markdown is downloaded and viewed in an IDE the code blocks have been formatted to be coloured as they would in the terminal for easier viewing. +## Terminal screenshots key: +* Red background = hidden B2C value +* Orange background = hidden AD value +* Pink background = user inputted value + ## Prerequisites * You should have already created on Azure: @@ -17,15 +21,12 @@ Note: If the markdown is downloaded and viewed in an IDE the code blocks have be | Click "Open Powershell Window Here" to launch powershell with cd already set to Learn-Lti/Deployment | * Type ".\B2CCleanup.ps1" into the newly launched Powershell then press enter - * ![launch B2CDeployment.ps1](Svg/Deployment/00_start.svg) - * - * - *
(base) PS D:\Users\Username\Documents\Learn-LTI\deployment> .\B2CDeployment.ps1
+ * ![start script](Images/Deployment/00a_startScript.png) -## Step 0: +## Step 0: Enter tenant names * You will immediately be prompted to input the name of the B2C and AD tenants you have created:
1. First, input the name of the B2C Tenant you have created
2. Next, input the name of the Azure AD Tenant you have created - *
Please enter your B2C tenant name: ********
Please enter your AD tenant name: ********div> + * ![input tenant names](Images/Deployment/00b_tenantNames.png) ## Step 1: Create AD application @@ -33,7 +34,7 @@ Note: If the markdown is downloaded and viewed in an IDE the code blocks have be ### Login to AD Tenant via your browser * Your powershell will now prompt you that a pop-up window has launched in your browser and directing you to log in to your AD tenant through it - *
============================================================
STEP 1: Create AD application
=============================================================
Please login to ******** via the pop-up window that has launched in your browser
+ * ![Login to AD Prompt](Images/Deployment/01b_LoginPrompt.png) | ![Login to AD Tenant](Images/Deployment/01a_LoginTenant1.png) | |---| @@ -42,17 +43,17 @@ Note: If the markdown is downloaded and viewed in an IDE the code blocks have be ### Creating the app and its secret * Return to your powershell Window, and you will now be prompted to give names for:
1. The AD Application to be created
2. The AD Applications Secret to be created
We suggest using a sensible name, such as "b2c_AD_app" and "b2c_AD_app_secret" - *
============================================================
STEP 1: Create AD application
=============================================================
Please login to ******** via the pop-up window that has launched in your browser
Please give a name for the AD application to be created: b2c_AD_app
Creating the client secret for b2c_AD_app
Please give a name for the client secret to be created: b2c_AD_app_secret
+ * ![Input app and secret name](Images/Deployment/01c_appName.png) ### Recording the secret value (important) * Upon successfully creating the app and its secret; the script will now output some important values in green and then pause until you next press Enter.
It is strongly recommended now that you take a moment to **store somewhere safe the ID of the app and the value for the secret** that has just been created for it; as this **secret value will no longer be accessible again**.
After recording these values press enter to continue with the script. - *
============================================================
STEP 1: Create AD application
=============================================================
Please login to ******** via the pop-up window that has launched in your browser
Please give a name for the AD application to be created: b2c_AD_app
Creating the client secret for b2c_AD_app
Please give a name for the client secret to be created: b2c_AD_app_secret
Client ID for b2c_AD_app: ********
Please take a moment to make a note of and protect the following client secret; as you will not be able to access it again.
Client secret for b2c_AD_app: ********

Press enter when ready to continue after recording the client secret:
+ * ![record the secret](Images/Deployment/01d_secret.png) ## Step 2: Logging into the B2C tenant via your browser * Your powershell will now prompt you that a pop-up window has launched in your browser and directing you to login to your B2C tenant through it - *
============================================================
STEP 2: Logging into the B2C Tenant
=============================================================
Please login to ******** via the pop-up window that has launched in your browser
+ * ![login prompt](Images/Deployment/02a_LoginPrompt.png) | ![Login to AD Tenant](Images/Deployment/01a_LoginTenant1.png) | |---| @@ -63,13 +64,13 @@ Note: If the markdown is downloaded and viewed in an IDE the code blocks have be ### Creating the webapp and its secret * Return to your powershell Window, and you will now be prompted to give names for:
1. The B2C Web Application to be created
2. The B2C Web Applications Secret to be created
We suggest using a sensible name, such as "b2c_AD_webapp" and "b2c_AD_webapp_secret" - *
============================================================
STEP 3: Creating the B2C Web Application
=============================================================
Please give a name for the web application to be created: b2c_AD_webapp
Creating the client secret for b2c_AD_app
Please give a name for the client secret to be created: b2c_AD_webapp_secret
+ * ![name web app](Images/Deployment/03a_nameWebApp.png) ### Recording the secret value (important) * Upon successfully creating the webapp and its secret; the script will now output some important values in green and then pause until you next press Enter.
It is strongly recommended now that you take a moment to **store somewhere safe the ID of the app and the value for the secret** that has just been created for it; as this **secret value will no longer be accessible again**.
After recording these values press enter to continue with the script. - *
============================================================
STEP 1: Create AD application
=============================================================
Please give a name for the web application to be created: b2c_AD_webapp
Creating the client secret for b2c_AD_webapp
Please give a name for the client secret to be created: b2c_AD_webapp_secret
Client ID for b2c_AD_webapp: ********
Please take a moment to make a note of and protect the following client secret; as you will not be able to access it again.
Client secret for b2c_AD_webapp: ********

Press enter when ready to continue after recording the client secret:
+ * ![record webapp secret](Images/Deployment/03b_secret.png) ## Steps 4 & 5: Creating the Identity Experience Framework & Proxy Identity Experience Framework Applications @@ -82,13 +83,13 @@ Note: If the markdown is downloaded and viewed in an IDE the code blocks have be ### Creating the Permission Management Application and its secret * Return to your powershell Window, and you will now be prompted to give names for:
1. The B2C Permission Management Application to be created
2. The 2C Permission Management Applications Secret to be created
We suggest using a sensible name, such as "b2c_AD_PMA" and "b2c_AD_PMA_secret" - *
============================================================
STEP 6: Creating Permission Management Application
=============================================================
Please give a name for the permission management application to be created: b2c_AD_PMA
Creating the client secret for b2c_AD_app
Please give a name for the client secret to be created: b2c_AD_PMA_secret
+ * ![name the PMA](Images/Deployment/06a_namePMA.png) ### Recording the secret value (important) * Upon successfully creating the permission management app and its secret; the script will now output some important values in green and then pause until you next press Enter.
It is strongly recommended now that you take a moment to **store somewhere safe the ID of the app and the value for the secret** that has just been created for it; as this **secret value will no longer be accessible again**.
After recording these values press enter to continue with the script. - *
============================================================
STEP 6: Creating Permission Management Application
=============================================================
Please give a name for the permission management application to be created: b2c_AD_PMA
Creating the client secret for b2c_AD_app
Please give a name for the client secret to be created: b2c_AD_PMA_secret
Client ID for b2c_AD_PMA: ********
Please take a moment to make a note of and protect the following client secret; as you will not be able to access it again.
Client secret for b2c_AD_PMA: ********

Press enter when ready to continue after recording the client secret:
+ * ![secret PMA value](Images/Deployment/06b_secret.png) ## Step 7: (Optional) linking facebook app @@ -96,13 +97,13 @@ Note: If the markdown is downloaded and viewed in an IDE the code blocks have be ### Don't link Facebook App * If you do not have a facebook application to link, simply input 'n' when prompted to skip this step - *
============================================================
STEP 7: (Optional) linking facebook appApplication
=============================================================
Do you have a facebook application set up that you'd like to link? (y/n): n
+ * ![Don't link FB](Images/Deployment/07_noFB.png) ### Link Facebook App * If you do have a facebook application to link, input 'y' when prompted then input the ID of the Facebook application you would like to lin - *
============================================================
STEP 7: (Optional) linking facebook appApplication
=============================================================
Do you have a facebook application set up that you'd like to link? (y/n): y
What is the application ID of the Facebook application you created?: ********
+ * ![Do link FB](Images/Deployment/07_yesFB.png) @@ -116,13 +117,12 @@ Note: If the markdown is downloaded and viewed in an IDE the code blocks have be ### Input key duration * You will first be prompted to input how long you wish the created keys to be valid for before they expire - *
============================================================
STEP 10: Adding signing and encryption keys and AADAppSecret for the IEF applications
=============================================================
How many months do you want the keys to be valid for? (must be greater than 0): 3
-* Upon success, the keysets and their respective keys will automatically be generated and/or uploaded in the subsequent steps 10.a through 10.c. + * ![key duration](Images/Deployment/10a_time.png) #### Troubleshoot PMA Admin Consent * This step may fail due to a race condition between the granting of admin-consent vs the requirement of its usage in this step; you will know this has occured if you see the error message shown below - *
Error due to admin-consent having not yet been granted; please copy and paste the yellow link into your browser to manually grant admin-consent then press enter.
https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/~/CallAnAPI/appId/{{YOUR APP ID}}/isMSAApp~/false
Please check the markdown https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/deployment/B2C_Docs/B2C_Deployment.md if you require assistance on how to do this.
Press enter after manually granting the admin consent permission:
+ * ![error admin-consent race](Images/Deployment/10b_error.png) * To solve this issue, follow the link highlighted yellow in your console which will take you to the below page. On this page you should see a button called "Grant admin consent for {B2C Tenant Name} circled in red. * ![Application permissions page](Images/Deployment/10tb_ManuallyGrantAdminConsent.png) * After clicking on "Grant Admin Consent" the page should now say all permissions are granted diff --git a/deployment/B2C_Docs/Images/Cleanup/00a_startScript.png b/deployment/B2C_Docs/Images/Cleanup/00a_startScript.png new file mode 100644 index 0000000000000000000000000000000000000000..39b5202d7ceca73cc1a5939ce5d5d2614fc1c567 GIT binary patch literal 3762 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 nWy52_hnNe@|FM@u5 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 literal 0 HcmV?d00001 diff --git a/deployment/B2C_Docs/Images/Deployment/00a_startScript.png b/deployment/B2C_Docs/Images/Deployment/00a_startScript.png new file mode 100644 index 0000000000000000000000000000000000000000..b8e5f0b54900b6c16c88efabafe4b97e10113567 GIT binary patch literal 3915 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 EfBhfiy8r+H literal 0 HcmV?d00001 diff --git a/deployment/B2C_Docs/Images/Deployment/00b_tenantNames.png b/deployment/B2C_Docs/Images/Deployment/00b_tenantNames.png new file mode 100644 index 0000000000000000000000000000000000000000..f706f4f2029f9d0df952504d5cc52179c195ef24 GIT binary patch literal 3938 zcmZ{ncQ71U`^OPA+6uu+ltjNITGWlcQ6gFpy=>I5*dTjdtR5~_L|tu(P7n#JhF!gP ziMXR|&PdrlBSU#it}jGKA(TXMpKh`%_S`bp4)` zeZJ)`SHZD9SkpYvVGFGa6>7ZMM<}hmaTESk+((j&67vT%H-Vysf)c*f3(p?8OwI+SbY(3fb-eV? zLfcc_^jJ<$ex1k&ev-R}Hj1Uz1Vr~}(^6^zwmIYuY+>TH`#3oq%~h2K{JR=Wqw{}K zIxX-~E_)oRASYX}=uEsr9|>ds>!DD##-NglC=ctfAte#mnYAeZ(sPeI9QOX3+kU0g zHwH)z_fXPD28*P!$+}HA+TIO~`}UV?VZ}@K8?*s$WI;)ifto}kN#r~Brh8KSqrN#j zI9|o9@-?N-Jp$M#2kTF@^}6W^ivthc_glR`E*w#$JX^GLKg7dbx@oxNQy@0kXy*)E zgE1S`>synRLTJCM6Iek5c_yI>eBW)_?D7{Efgoj{Hw2d$mW*RtE8ws+{nel*gX5`t z(FWeVBbJ|OW|xxxn2|)j$T6~}o0C}LVRc{oBf~a*?GR#qEmYC;Y8!Z|6G|Y=OCwlg z4gwL;Cc0C5>p)^P&t7(xA2FCh%o%e=#$OCTV|;|_M^Ix4$A9`qWQDO01htUD2;OGbQY>vZZ~S$WV=iayMf`+PQ{P2;Vut0 z>2H!m>P(FD%~9cb;tn$w>y=DEd<46DIXS-jM^9y+keaA!y3{QY+9bIDR!-&SEgtFs zzQN5&ys^4}J>@^XbP5i6WEIx0a-Wr5bA5@S!LT9FK
3Bx+Uq)rLT&rA0nNM5tqF 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 literal 0 HcmV?d00001 diff --git a/deployment/B2C_Docs/Images/Deployment/01b_LoginPrompt.png b/deployment/B2C_Docs/Images/Deployment/01b_LoginPrompt.png new file mode 100644 index 0000000000000000000000000000000000000000..9eb2837ec7fd51b41dd315b1dfa96665c76b4f3a GIT binary patch literal 5685 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 Z^nmu%G7XMd{#8jC+yUJ#xb^7ye*vr>Kra9Q literal 0 HcmV?d00001 diff --git a/deployment/B2C_Docs/Images/Deployment/01c_appName.png b/deployment/B2C_Docs/Images/Deployment/01c_appName.png new file mode 100644 index 0000000000000000000000000000000000000000..e1ac769eb1e2527b2a0b1feb021fc18dbc0fcbcb GIT binary patch literal 12985 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 Yj$iHBmp93~{!}T+smqp2zyI?800@Ih;Q#;t literal 0 HcmV?d00001 diff --git a/deployment/B2C_Docs/Images/Deployment/01d_secret.png b/deployment/B2C_Docs/Images/Deployment/01d_secret.png new file mode 100644 index 0000000000000000000000000000000000000000..e671d07dea53fe8eb14af4a1fd48929580c8f663 GIT binary patch literal 22705 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 literal 0 HcmV?d00001 diff --git a/deployment/B2C_Docs/Images/Deployment/02a_LoginPrompt.png b/deployment/B2C_Docs/Images/Deployment/02a_LoginPrompt.png new file mode 100644 index 0000000000000000000000000000000000000000..1d0e3b7b0d1fdc2704ef84990de4a1edf829fb2d GIT binary patch literal 5629 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 PP5{4K+gnv#xcBfMqH|0q literal 0 HcmV?d00001 diff --git a/deployment/B2C_Docs/Images/Deployment/03a_nameWebApp.png b/deployment/B2C_Docs/Images/Deployment/03a_nameWebApp.png new file mode 100644 index 0000000000000000000000000000000000000000..7e825eed9af57f73e2bcfe49077918ca23139492 GIT binary patch literal 10349 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 NYisDKm#RLC_&*Zmgu?&; literal 0 HcmV?d00001 diff --git a/deployment/B2C_Docs/Images/Deployment/03b_secret.png b/deployment/B2C_Docs/Images/Deployment/03b_secret.png new file mode 100644 index 0000000000000000000000000000000000000000..a039eaa9fe6f22cf4e07325febddf92e506b1129 GIT binary patch literal 20361 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 literal 0 HcmV?d00001 diff --git a/deployment/B2C_Docs/Images/Deployment/06a_namePMA.png b/deployment/B2C_Docs/Images/Deployment/06a_namePMA.png new file mode 100644 index 0000000000000000000000000000000000000000..d4e733b04bd26e4bf1b1d2c350a02dc8b7178761 GIT binary patch literal 10799 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 literal 0 HcmV?d00001 diff --git a/deployment/B2C_Docs/Images/Deployment/07_noFB.png b/deployment/B2C_Docs/Images/Deployment/07_noFB.png new file mode 100644 index 0000000000000000000000000000000000000000..3bad988ca8a4890f2a47fc3f220d273323b6f1c3 GIT binary patch literal 5842 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 PQ(wJ@M%pM%$2b21N?~)@ literal 0 HcmV?d00001 diff --git a/deployment/B2C_Docs/Images/Deployment/07_yesFB.png b/deployment/B2C_Docs/Images/Deployment/07_yesFB.png new file mode 100644 index 0000000000000000000000000000000000000000..76d9d28bccd2f369895de6082b538766ff343520 GIT binary patch literal 8825 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 X@+m$^|G8go$6qv`>Z&1Ct=|0~-?rOF literal 0 HcmV?d00001 diff --git a/deployment/B2C_Docs/Images/Deployment/10b_error.png b/deployment/B2C_Docs/Images/Deployment/10b_error.png new file mode 100644 index 0000000000000000000000000000000000000000..781d355e28ba0d75bc04ca13689016158cb933f1 GIT binary patch literal 19679 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 literal 0 HcmV?d00001 diff --git a/deployment/B2C_Docs/Svg/.vscode/settings.json b/deployment/B2C_Docs/Svg/.vscode/settings.json deleted file mode 100644 index be33bce5..00000000 --- a/deployment/B2C_Docs/Svg/.vscode/settings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "svg.preview.background": "dark-transparent" -} \ No newline at end of file diff --git a/deployment/B2C_Docs/Svg/Deployment/00_start.svg b/deployment/B2C_Docs/Svg/Deployment/00_start.svg deleted file mode 100644 index 8b90d424..00000000 --- a/deployment/B2C_Docs/Svg/Deployment/00_start.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - (base) PS D:\Users\Username\Documents\Learn-LTI\deployment>.\B2CDeployment.ps1 - - \ No newline at end of file From 73dc1a2fcceb06308d8b1b51846c7f45b0b0da6b Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Thu, 7 Jul 2022 15:32:03 +0100 Subject: [PATCH 050/285] Fixed issues resultant from: Facebook secret not being uploaded; b2cTenantName being hardcoded into the HTTP requests --- deployment/B2CCleanup.ps1 | 3 +- deployment/B2CDeployment.ps1 | 80 ++++++++++++++++-- deployment/B2C_Docs/B2C_Deployment.md | 10 ++- .../Deployment/10taa_switchDirectory.png | Bin 0 -> 25085 bytes .../Images/Deployment/10tab_current.png | Bin 0 -> 64974 bytes 5 files changed, 82 insertions(+), 11 deletions(-) create mode 100644 deployment/B2C_Docs/Images/Deployment/10taa_switchDirectory.png create mode 100644 deployment/B2C_Docs/Images/Deployment/10tab_current.png diff --git a/deployment/B2CCleanup.ps1 b/deployment/B2CCleanup.ps1 index 3fac9ffb..880e52ea 100644 --- a/deployment/B2CCleanup.ps1 +++ b/deployment/B2CCleanup.ps1 @@ -12,6 +12,7 @@ function Write-Title([string]$Title) { # relevant docs: https://docs.microsoft.com/en-us/graph/auth-v2-service#4-get-an-access-token Write-Title "STEP 1: Getting the token to be used in the HTML REQUESTS" +$B2cTenantName = Read-Host "Please enter your B2C tenant name" $PermissionClientID = Read-Host "Please enter the client ID of the permission management application" $PermissionClientSecret = Read-Host "Please enter the client secret of the permission management application" -AsSecureString #Converting from secure string to normal string @@ -23,7 +24,7 @@ $headers.Add("Content-Type", "application/x-www-form-urlencoded") $body = "client_id=$PermissionClientID&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&client_secret=$PermissionClientSecret&grant_type=client_credentials" -$response = Invoke-RestMethod 'https://login.microsoftonline.com/playltib2c.onmicrosoft.com/oauth2/v2.0/token' -Method 'POST' -Headers $headers -Body $body +$response = Invoke-RestMethod "https://login.microsoftonline.com/$B2cTenantName.onmicrosoft.com/oauth2/v2.0/token" -Method 'POST' -Headers $headers -Body $body $access_token = $response.access_token $access_token = "Bearer " + $access_token #endregion diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 82f6252e..a26d7254 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -10,8 +10,17 @@ function Write-Title([string]$Title) { #function for making coloured outputs function Write-Color($Color, [string]$Text) { - process{Write-Host $Text -ForegroundColor $Color} + Write-Host $Text -ForegroundColor $Color } + +#function for writing errors +function Write-Error([string]$Text) { + Write-Host "`n`n=============================================================`n" -ForegroundColor "black" -BackgroundColor "DarkRed" -NoNewline + Write-Host "Error!`n$Text" -ForegroundColor "black" -BackgroundColor "DarkRed" -NoNewline + Write-Host "`n=============================================================" -ForegroundColor "black" -BackgroundColor "DarkRed" +} + + #endregion #region "AppInfo CSV setup" @@ -92,7 +101,7 @@ $WebClientID = (az ad app create --display-name $B2cAppName --sign-in-audience A # create client secret Write-Host "Creating the client secret for $B2cAppName" -$WebClientSecretName = Read-Host "Please give a the name for the client secret to be created" +$WebClientSecretName = Read-Host "Please give a name for the client secret to be created" $WebClientSecretDuration = 1 $WebClientSecret = (az ad app credential reset --id $WebClientID --append --display-name $WebClientSecretName --years $WebClientSecretDuration --query password --output tsv --only-show-errors) Write-Color "green" "Client ID for $B2cAppName`: $WebClientID" @@ -125,7 +134,7 @@ az ad app permission add --id $IEFClientID --api 00000003-0000-0000-c000-0000000 # expose the user_impersonation API Write-Host "Exposing the user_impersonation API" -az ad app update --id $IEFClientID --identifier-uris "https://playltib2c.onmicrosoft.com/$IEFClientID" --only-show-errors +az ad app update --id $IEFClientID --identifier-uris "https://$B2cTenantName.onmicrosoft.com/$IEFClientID" --only-show-errors $IEFAppInfo = (az ad app show --id $IEFClientID --only-show-errors | ConvertFrom-Json) $IEFAppApiInfo = $IEFAppInfo.api $IEFScopeGUID = [guid]::NewGuid() @@ -171,7 +180,7 @@ $PermissionClientID = (az ad app create --display-name $PermissionAppName --sign # create client secret Write-Host "Creating the client secret for $PermissionAppName" -$PermissionClientSecretName = Read-Host "Please give a the name for the client secret to be created" +$PermissionClientSecretName = Read-Host "Please give a name for the client secret to be created" $PermissionClientSecretDuration = 1 $PermissionClientSecret = (az ad app credential reset --id $PermissionClientID --append --display-name $PermissionClientSecretName --years $PermissionClientSecretDuration --query password --output tsv --only-show-errors) Write-Color "green" "Client ID for $PermissionAppName`: $PermissionClientID" @@ -187,9 +196,7 @@ az ad sp create --id $PermissionClientID --only-show-errors 2>&1 > $null az ad app permission grant --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null az ad app permission add --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors az ad app permission add --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $keysetRWPermission $policyRWPermission --only-show-errors -# az ad app permission admin-consent --id $PermissionClientID --only-show-errors -# sleep 3 seconds to finish the admin-consent step -Start-Sleep -Seconds 3 +az ad app permission admin-consent --id $PermissionClientID --only-show-errors #endregion @@ -200,8 +207,10 @@ while($HasFaceBookApp -ne "y" -and $HasFaceBookApp -ne "n"){ $HasFaceBookApp = Read-Host "Do you have a facebook application set up that you'd like to link? (y/n)" } $FacebookId = "00000000-0000-0000-0000-000000000000" #default to meaningless placeholder value if app isn't set up +$FacebookSecret = "00000000-0000-0000-0000-000000000000" #default to meaningless placeholder value if app isn't set up if($HasFaceBookApp -eq "y"){ $FacebookId = Read-Host "What is the application ID of the Facebook application you created?" + $FacebookSecret = Read-Host "What is the secret value of the Facebook application you created?" } #endregion @@ -266,7 +275,7 @@ while(1){ $body = "client_id=$PermissionClientID&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&client_secret=$PermissionClientSecret&grant_type=client_credentials" - $response = Invoke-RestMethod 'https://login.microsoftonline.com/playltib2c.onmicrosoft.com/oauth2/v2.0/token' -Method 'POST' -Headers $headers -Body $body + $response = Invoke-RestMethod "https://login.microsoftonline.com/$B2cTenantName.onmicrosoft.com/oauth2/v2.0/token" -Method 'POST' -Headers $headers -Body $body $access_token = $response.access_token $access_token = "Bearer " + $access_token #endregion @@ -281,7 +290,10 @@ while(1){ break } catch{ - Write-Color "Red" "Error due to admin-consent having not yet been granted; please copy and paste the yellow link into your browser to manually grant admin-consent then press enter." + Write-Host "" + Write-Error $Error[0] + Write-Host "" + Write-Color "Red" "Error may be due to admin-consent having not yet been granted; please switch your directory to the b2c tenant ($B2cTenantName) in the Azure portal then copy and paste the yellow link into your browser to manually grant admin-consent then press enter." $PMA_Page = "https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/~/CallAnAPI/appId/$PermissionClientID/isMSAApp~/false" Write-Color "Yellow" "$PMA_Page" Write-Host "Please check the markdown https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/deployment/B2C_Docs/B2C_Deployment.md if you require assistance on how to do this." @@ -440,6 +452,56 @@ else{ #endregion #endregion + +#region "STEP 10.D: Create the Facebook keyset" +#TODO - eventually only run this step if we are using Facebook (and then use different contract templates for linking facebook vs without) +Write-Title "STEP 10.D: Creating the Facebook Key" + +if($keysets -contains "B2C_1A_FacebookSecret"){ + Read-Host "B2C_1A_FacebookSecret already exists, so cannot upload it again. If this is not expected, please terminate this script and run B2CCleanup.ps1 first." +} +else{ + #region "Creating the B2C_1A_FacebookSecret keyset (container)" + #reference: https://docs.microsoft.com/en-us/graph/api/trustframework-post-keysets?view=graph-rest-beta&tabs=http + Write-Host "`nCreating the FacebookSecret keyset (container)`n" + $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" + $headers.Add("Authorization", $access_token) + $headers.Add("Content-Type", "application/json") + + $body = "{`"id`":`"B2C_1A_FacebookSecret`"}" + + $response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets' -Method 'POST' -Headers $headers -Body $body + $FacebookSecret_container_id = $response.id + + Write-Host "Successfully created the key FacebookSecret container: $FacebookSecret_container_id" + #endregion + + #region "Uploading the AADAppSecret key" + #reference: https://docs.microsoft.com/en-us/graph/api/trustframeworkkeyset-uploadsecret?view=graph-rest-beta&tabs=https + #calculating nbf (not before) and exp (expiry) tokens into the json required format of seconds past after 1970-01-01T00:00:00Z UTC + Write-Host "`nGenerating the FacebookSecret key and uploading to the keyset`n" + $arr = getNbfExp($num_months) + $nbf = $arr[0] + $exp = $arr[1] + + #uploading the FacebookSecret key + $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" + $headers.Add("Authorization", $access_token) + $headers.Add("Content-Type", "application/json") + + $body = "{ + `n `"use`": `"sig`", + `n `"k`": `""+$FacebookSecret+"`", + `n `"nbf`": "+$nbf+", + `n `"exp`": "+$exp+" + `n}" + + $response = Invoke-RestMethod "https://graph.microsoft.com/beta/trustFramework/keySets/$FacebookSecret_container_id/uploadSecret" -Method 'POST' -Headers $headers -Body $body + + Write-Host "Successfully uploaded the FacebookSecret key" +} +#endregion + #endregion #region "STEP 11: uploading the custom policies to the b2c tenant" diff --git a/deployment/B2C_Docs/B2C_Deployment.md b/deployment/B2C_Docs/B2C_Deployment.md index db972009..d9f20386 100644 --- a/deployment/B2C_Docs/B2C_Deployment.md +++ b/deployment/B2C_Docs/B2C_Deployment.md @@ -10,6 +10,7 @@ * You should have already created on Azure: * 1x AD tenant * 1x B2C tenant + * If not already set up information is available [here](https://docs.microsoft.com/en-us/azure/active-directory-b2c/tutorial-create-tenant) at step 1: "Create an Azure AD B2C Tenant" ## Starting The Script @@ -118,12 +119,19 @@ ### Input key duration * You will first be prompted to input how long you wish the created keys to be valid for before they expire * ![key duration](Images/Deployment/10a_time.png) +* The script should then continue without requiring any further user inputs #### Troubleshoot PMA Admin Consent * This step may fail due to a race condition between the granting of admin-consent vs the requirement of its usage in this step; you will know this has occured if you see the error message shown below * ![error admin-consent race](Images/Deployment/10b_error.png) -* To solve this issue, follow the link highlighted yellow in your console which will take you to the below page. On this page you should see a button called "Grant admin consent for {B2C Tenant Name} circled in red. +* To solve this issue: + * First you must login to your b2c tenant on the Azure Portal. If the b2c tenant is already your active directory in the portal you can skip this step. + * ![Switch directory on portal](Images/Deployment/10taa_switchDirectory.png) + * Load up the Azure portal; then click on your icon in the top right of the screen, then click "Switch Directory" + * ![ACtive directory](Images/Deployment/10tab_current.png) + * Now click "Switch" for your b2c tenant so it now displays "active" + * Next, follow the link highlighted yellow in your console which will take you to the below page. On this page you should see a button called "Grant admin consent for {B2C Tenant Name} circled in red. * ![Application permissions page](Images/Deployment/10tb_ManuallyGrantAdminConsent.png) * After clicking on "Grant Admin Consent" the page should now say all permissions are granted * ![Application permissions page](Images/Deployment/10tc_FullyGranted.png) diff --git a/deployment/B2C_Docs/Images/Deployment/10taa_switchDirectory.png b/deployment/B2C_Docs/Images/Deployment/10taa_switchDirectory.png new file mode 100644 index 0000000000000000000000000000000000000000..338c8a040e6b92df1184cf85b2db2e5fa6ec4a83 GIT binary patch literal 25085 zcmcG$cU;p~+dtmcyHZ7=1r?E{RY5^UWY1K+6=kX@C@TU2G9!cyA#GVAOGO}T2SZc{ z$P6n=7zzO@kv$^B1R^6q0wDyF?}@-&>-{{>>-W#^57C6r=bY_s!f-8&EL z{O-H&c3(LE@5|qPClK)6cRx7(^aJ>&Lbk#I{PjKJvf=6PO1dOz;KRRMPnn+j?z^%i z!8L~;!RH;f&tFG;_ni=)|L6NQ__LeeedqAt!oN>l39_GE4}EA)L4IV1a5G+Z8Fjs5 zGOb6+gu8Nc$!2XHN^>u1kzMIRqt{)jH+@5vbmo!`X48o@zmVN;ZaBR@C#EDK_PFk6 zk=h>~{AP9RvGIk2KVRH#5`TDRK=xMroAWo0_*tbKIdUZONS6hjQEyYX%(3jXNqTOC zG0N>;RV;2G1=82;-JQ;o#u}y(xtXQJ{Z8?a)~z4!(m&V!{R#YwIB}&v;j3?`M&i+V zi?h2s{`s}le0{M0?lYI6=G>`nOYTZF@8cAPhhK~|Y+Qv;iVauj^!oGnv7KWN6(DU; zAx&UM>`uA0qu1CT@Ao^Ethyb0UU1SX8M>N}V~|nvQDghogd693VccHkt&WgD-Ym+} zyFCFhuNlr!_Ri#{RhzQohF#V&eFS-fHU22nTA+kkN27(ECO8X$lG6^Y0%W6KxXYsy z4>%F7LU*6-y+U;t;rM1Db9oc@jtZvnCZXH~uO#m10?9*5 zd;0ISa1~##)vLC9;X?(W70zwPTot*Ewk)|dhf(fkr)hHgR=iNb!w+F=cwW`w73Z<_ zS!L2hp|tSX}FVgulrd4fW#g-a@xqLPVHH36rADTWp;e zjzek_-jG%dTeh#84is3X;}enQA2+0<#Ja-G_u{kjs>K)fO@xJi9)?|CdhX_p32*Szq;S~eXi|w?tuA5i zX>Mfi{0-;wdNw0bfBdbOlI>41y9LMJrtE$tC#fn~>eD26waU}2#Ay90Rg2Q6_Zy5` zN9M^dQ&c>7pLh~E$XVF>uxYm*jxs2Q_wx=N=k$|oXZBBigs(m2kGwp$N6qlMuzO?2&6rRaF7S82JOa-^0FB~(8WVNxl3AG|LhTpA!#-Kb^86I8C|#>lR?s$i1&a(4L2(plv(6oZpd4CRSgV3=s$VtA6O zOAp^8EFmi?r!ignGX|ZQ1Z!uq#*R>p-w$LYG3{n&J5H^KayVqzaTY~I7-I{gb@<43 z+wRFxw4#>6eX{uMFtR8yS;%cx>B6CW;oUTZt3gBQ3MQ%5(0ibszLL%uzmG;6dN&!% zX#0D&D#YLyabcet8rr%IhB&#V{^j(>z|ViZGZzkL(sE1Kj}{*Scv1DWV5bEHbBPmH zaWC~ehIPsP+?t^0CyjA+lQMR^0n+;CCe-SzTt9dIHf3<1>vB01=QW!oFKkZ}HTaOL z&-A6dxsT>HHtdEoBQ@`_&g|fDX)|JYVa*dU6g1#q=c@W zXl^S{lA$O4l7{yQ04la7F8eY%BBoGjL7p~mfQR7K8qdTAUsG!+Vb5b&_8&$#et@B_ zXa)xHvaj|TkUJ$h+R23g=&NaO%T}gp7Y_|gSYS1 zNZKoT+7fUfYhn%|dl6{>V8-a!^ z&GHZ^`0pMk3d?#er6qf2lt!z978wHa*R`ckYa|!KVt*1hCQ*1|F)%#**EMz&4L+;m zD{HVAV;tBbz>t-EK7j0DaPWJ~qu%MA+?`=b1&+Xxj#wg6N%1xpnG}`&q&gHOIa9$$ zyK5#Ysm1H=nJ8o&nQ7+JnufXVon_2{7qOe0>lY36M`d#B92kwj{<%3$u2#GnOhG?fo1 z$;d*I_S!qT-aLaV!e|uDjb@2f?dq5g_dPKqVILCdz3LDTahWj%XwvdB$O}bzMKSVG z>gF2?R?a)<=_C+=h3yAhTe768^T49HD{jB^4#5_Sg`fKM7aK~AuPMqD*CWyMp6KB| z?z5njpn-{t*Yj#?298=DYoy9^Va@f}XyXAai6bn7hVy>^QUwiCjuUEluWglmq+4 zdJ;~4CJm$3mYLIy`uTc-X~i#^DJt3BjX{$iV&r4l%HGo)3Eo673hVu_jI}Zd_Z(ya z(<&tClzpsxDkIJF8>!ls(kz(@UH!E7kZxP=-})3fC8W#kFbs)949K1vQ!%ginVBj= zRKuY)b)4ke_YCdn+$A@7%&2*mwv6x!Mw-|1CdpuSjTU=Klz}nf(vl4Hq?9rCYyF0y zX1NNDk?;lFkJgOyy8A&Q!Y$t}y3NUV_wbq(sbQc#OFsd^bcwR&RemEJivIHG>h}BVlE)c_Om#t`y!kOt|b>YXZ5PavT?eZg=$z zOCG;pYN~f5sC4au0%w_ZmvY?TG+SY3Zkd*6(0gA;p$;E)Pqy;h(Aoe?SS=h%ss6Ac zeHSikvQkBk0PZ9&&PzU4yB@#tzR7+e^cWw%m$&fy0XozEt)6YHwq$UNaOmB_668w5 zqPw7l5xnx9IpOSCFSN1=$^&QsKG)}vffkLu?x1de%NF}v%~H`3>g@_6cIU1)m26=t znLY3mlG;i!fuY9-Yg4b%mJD&sz;FM~1 z^yD&yPd?J@Lo{#uIk=;v5UOPTU0LZoF~T(`{Dt|Nq6p&s9WpZwEyKyod0H5P(dDk6 zt<&Ky2MtUMgc{^<7snl0ytY>?R`#vq5FXrohQ?j7t(QA@d%VeY+%&q4H&G;vH})*z z$>>MOQs?E9M`Z9IQurCfk+Y7D7KykyWo|33eS1RrEW+U}kDCsciM4s% z-O(NGHF2uxO70%an%;9;gt39UhzeacupV+uXXQAVQhInCxe&(^fzZTvAWH*x^4SX_^9iub; zmZIdY^XnezYeCiCqS4dDhhw-13c)CZmC-)1oMVqy}7+|_Rl59 zu3byCQsd41mCg$uq$&fTXgPKDrb zFZ}S!3q=!J4u>S==4?uyP+|{NF5bvmp#iByw7env4rto5C6YuFVcfhFBv}pF@_l3N z{96_K7Rkaj>2{Kd)|G4CwWh%7&R_9)9}*VRVgabB+Dt6=#D1}=Mt-OXqVDUq@AYf} z5BZsd)7v>^S51@S)#@h3vDlvqicRY!wM+s0xkP}b}ub| zU|y7y)RR24CQfp_rUZjzYg^@7zVb!Orl|-l(PtH^74KYUNADocWi-ye$$w$_ax{oO zb5wH_!bo%zlU@$M(%+`gH>1EPp) zKk-6;!5rsKB{Qnwbf8*i9l6;8;oKo*vus@wXPP^v<3~-hs^`)BW@*}^bqfoslanY6 ztDm{IE>|ZsoR&DY(>6RsrMq$c(!e^Lm7Dlt+$&PkVojt;C62c`6{|Xl=M_YXeQtP; zm90;h_pPgg?nr7NA(jDl1Aun{IB#gS)aW-pQeZuDY6BKIfJI-Ym9^B?Jr8&>(p1byPlBIGuSJ=qr-u<|0dpj zL@T^vv5{gGA9J^DhbZ(ky4}hu>}<<+hsvOBJ`pS467&|^FzEQLmPQKeqU4c!hNHUo z#X;HnKYSgP;4=H}ihwM0R`2h)j7z;N!niB5yvAN_0GWrP`@knLp=c;h_O6H9`pd1?d zjIer7?Gt)c-sB2)M*#u3@<)q8zgJK#VpwpYD8U@AoG8AmnENS>aZVh#yLdO96qH+x zxI0Yxg$1qfscMUJ$E?cP_ukI(rrI;tyeVI)d~>rNFwkv;{3Fz$bqY9NtGJP)QdHIV zlSBD+PS=G589Kf*$-D_5^IbfZ9Qp|1bF#M-m{tf7*$TlfydMcx>fTa$+2 zEF)pLT3*P>^0S80L3bl!_+e-cVK?t8zfMCvX%4ihbx-+YrtzK_HHWlP^0EG4r}%f7 z8yU?c!-B+Ze=fW|d!~6r3nVuy_N>A0MG@-13hTho-10aFZ!M}IFU-a0RR2b zaeq#W3iU2^Eg&YlqVUmC#!z1^Gs=CH4tuC?k!ig%ifN2;WucZb&&usCr!!zC-F61B zbqY-CbJRPZ=V@~NyBbYtFF2@h&iD>i=k&<(X<`uws9PL51ZdgOJPm$@36cIy<%3va z(b*PZp5LB8jSqD?VeTQ1#FFB|42=V>3lY_n3?tx{IuPz$ja6Y6GVgL~W@57^zvSTn zGQ}$XdRI-q1c7cHZg1PRndi6dre6t}zN)483{+5X{1~I6WonfH143)7=x0RuDG8ym*!}EWv8U1>I<)y5;Ofpg|{ihSL09-AiP#vD!&4jg7TCApRC?R;{K(;uTYs}nw~i&eM4Tngr>%9bYUcq z=MIPK1r+>vRzgupKuJ3G#bMWvq<&3XXYHMstCCofV6KAeX|KlH-NJNRc27ZJwV3Er z1SGH|j4jCGn)=N9x$GGz_bF7FHGz^6b(=!&S39A1Hg4W6z7r$8?1+>Q3vx2AIs{dDm+~ zNs(>j^x%b$NV9&;BQF2h1ca8^(RcJ-U-{EFSl(-H;=@VUectvAnREkHwC|*;u-$3L zM607Q?9a+P_mF3AzOzyi4z*NzXdHs(m(%j)n?`<&j2r1t7dLs83 zovylzueP4jZxmdOaTeM;LJPH4S}Zhk-tFeS`D%TqyKYl&*G-QeOPh4GOteVsNU5;O zG&-xk%_KFh((lgQ8>8*J$n*t?YwUgEF`orF2D}!g-*w8chx6w`=LM0<-kxHO1Ki9_ zet%hb5AoiEOtbvsX@$YI(jlhYKH(TGs7fz;6w~@wNLi|-#w~|NHg4?tjKOOHc6qfu z@vtT*oGc@zY#km7Th~M!=(_uTp>KN%HHph|ZgB{eId1mx_DR%sP-Om24e?lglH)Ts zf;Bhp>dVqb$Vz2j3S4E3-QxX~{X3y_lilH8fyM*juJ0MnrU0rb%bS zJ>7e#?%>ArS3kE!T+qgza)NO`C7V0K43Mj!My-_WMl9I-MonLhdPN?A&haSGZ}9aB z3AxkN$TafFVqT1G-o+>V>hVLu$0(l~9c>fak=n9UVxc)|ZJ~{(UK6(crvj&QPR>Hf zK4%$&Y4$X3HtMqEA${v#H};j`zqyyvc-gwdZ740mqR=cqZG2JuAUY9ZdIqtqHg@#z zJ@ofri$_UU?sL-a`ofMY_O~?Jnh|8c4n^Sk9KCe==#Ii$1#ZZfb+@U6cQ$QexjOKS zWy)`ke7^o}QlzBGq#RtPJeulw^DbEqx;pi=LN(3&zA16Fcl`2~a<71hD*qfejs6HO zHAa&a(d459IkT+ux(N0jidr#Z#}OC)@85oa!IVT8=^4L5P|Wv+ZAmib;ED4D{Q1qT z)|V&;?VD_mP$xuOVzE+R{iaBvKfl(N-T{H6DLWYWOf;7{we@rz&6Sw$ne>zpVW>R# za?FDkMjh%!O8w1^l37LTPjEpy5cS6A%+1Y*ut%Z>$`p`YRfizLhhxS0P>HT`P4<0>pu!nTp44f~I3Cdia!+qXDN!L5|BrL5XFDiisyT z=}>Qo)V_n%zE%GV0o!SyF5T4S3vB>`t{P99vWrHSl zeQrdikYW$bk-#_#C9zgpshyCYSq6>4-m_%}!(uku86i$ffR3K+0-7W>dP3=eTuJ7{ ztu02s9$|@4K^R541JwJlVaC7eHu$Oh!qS>i6dRadjQLmPIa}OcTC!A`?u3S#0EvW$ zXmYk%hzz@x8Yc%Ub8fJ-5<$%RSbb6a*XP}Vx(}p9EGD3nq;vzAQL-okWB$YClRsQOP-5G%HYkCZwt{Gy z67m(5?OU>{UP6y3wvErsEuqrtSObPBY=wRD&2|b|2wzx4GDs8UpU{Eo>oh zT}sFA*sSe?(=!7p26Bgst53*@!7KHe*8KQZe9&Si0jcaDoXz}x$W4Uf3AN^eTOrBSj1jTV;HI|f$RRJWp$w1|RO?1~)<(Eec4 zRN7;)Qyr&fI%JT{OWF__gRpCkE;IKxjXEw?n_B{nO^00A1d44(s7daLGEjRnf`EHZ zmx}Dx(miPrpa!@>!;!Ddi(7*G6~baNK^Dth=MevX!|h{p*hF)zucLwA)V*fHz~K#G zE!Zc@x5c9_t@4|zETy46G~Z2`650}_lF{PBTPT1=oA;{8Qt>gu#)S9_n+EutNwEZ_ zNF?Vg+T4C`4tsLW(S?w_c`AiiAVOVPYJ`BW5g}fG^VJ9FQ=5l06=eXtRfuK3y?+=2 zp_6bhN0<0bmJnaZvH>;$2Ig!s@NTm$(>XT%MZ)H1YjZ-3kks8+HeMKNq6=FxFtjm( z=A>TOF!>@}^GK)!)taxC_tBi>yRu%g>p|AC8>g3zWna#Fav}4=-!B|rrf8TGCcCns zJ;<5P>TvE%U?c18XH!-ul9_q|Q6i(MZgTCX7vpc{uM8aY+^1nymr#F2%}tfo_8*w5 zL^v8Oyf2c14rzzJZ^zZoau1mf9G%%8U@mX~Qgo}wr6;M-d6Nt7_-0^PY)#TC8;Ou9 zjwHwL5ZDoO06U#w@jkCJPsY4sOY!oW!#=+L;}=tcD|DUNi{ttn6&3D?#79RIrimMT zyQ&F6&chLw7|Wh||MYM+TG_T{{;4L)lGcPb7(d!1n4cyo^zAD#&0%?*fzpwEPg8a% z@3B{Em_KTKHd!M%Tu*URkVI#5f^K+4`Q<+h9h%|_(r{|utWg^u%O1fp6m)Y+nn{;3 z=X=t)9^ZX?jt|ZCa8e`a=oOmhidSYjF*V0`M^@h-yO{b78|_k?!xlfZRhxxB5(!i8 zh^+o)%p}C-Oxiz1Sn%GQzmi*nG7ReddADc*lDsTlZIXc)ZV)y@pX7lu!rTedYuQ1( zGh})utGG^Pg_>RNou#$D>eCysOK-gMCafdtn>8<)@ijoEXC2b05kAxz*m(d&st=t! zkzGEu5Y^GAXw%@p9!hA@t6eQRnxwDIyRS~9>W55L{7A~soAe+TS_++VjG6s4lVzEmkdf<9Zk)|0syu+@Xo>g^YsNPvvzc!$y*3{fHqyRA-XOlZEFZo(hE6bw@dQN4~82*LT%i#)YQL$8J?&u1WVUshPjK+Vay4nwv`g3X%%rRlUj3;}| z3AUvZCE{`3jR;G)v$STULI!@=7+&H0jmQsF^3~?rQJN6Hlfp}_b1~1suJ9{4{(h;M zi?11<3cM8hyfOgeK$6I7oo(npX_crqAE}u>=IwF$8y(k)Wj93$7L)#D1164X`K->e zpv;dwR~2#x>Khq@MuyTiGz=Qn-{UX2jNY1=3aH2`wl^lq><_oeMm&A0k@fIbjsVO&nqb8os+p)HfyR{7J5;8 z<&o%^dk9hSTV5VJLM_h?w|-Z%ty?j$v(aO<32SUwjCA+Nm#Wq>_X_r2T2*AoTt{#| z#CT_^tb3fn9!8+&qlq>$Cg0L?2!dPfhnA>~{NcKWWVk5WE=+wc)X@+g-zQF?txNqr zY=5mRfZR}?HsaStkdWOqn@AYnU0B`KyM>m(oV&AiVLNIfy0VG;PS`ejcdjZ*RC{A8 z$cH*VCn~Cnz1$D9_3_w!ZIhs3+P2$!HzMPM#PguvL|P5b9~06E?6$2B>ulX^lf%#3 z^A8BS^?8Mbym?j0>bkyKTo)5&NS&`D3Vf8`jQb1jn-Ks4R$PV)pr`TinIZJ7{1-Yp zy44M(p!KiN8+4vn7Ceks=p$*A> zF0KZlkJf3<>Y@4iO{?10y_;N!L{7vP2^-V~;E5^rSrCaTz3RnxUF@WnSmft3DPr!< zO_}C0Pi2lrojlo7ttbCCQNhbkQc}Ei=SQ?0R!sv5SqAXIS^!Qq)fju6Ghj%diOt2} z$Ck47Y$jy&{^etb4|Yq2T%cH;`I@xyt-L=&UO@$pQ> zq@A0tJ;By7d|8+DV$blt$+_#s{JqG;?m+L*vdalEYUZ9{F7LrWQZDChH9g%XICh_0 zSR~USDk5pn56mahnThjI@M0 z)|<>Z^!5LXp6XBbx?$6wv;(`XPXaLJH)`D46uZD8o&&2RKrPKP%BEUli8zgLcgj)g ztpAO#FsPF1OgK3)y?T`K@q>VjU6l(yTCv+}4A{s)VV!B+T;y7;sqhJVZBUk05RmEl zABFrOI+l-L$n|CMKodI^`gpHG?#SAe$?}vx^`>5ap3188qvWLnX!Wq9d^~d?mVMIb zD;1X*J9fCMIGH-adW{#9wyRrw*C|ouEyJ{?Dt0#xU}sxOLA$z2(R!hIw0s{)Cm3j6 zp_Pzsp3l?xj$>cxrq{|ecOncq!Gx36Uw=xEld-K`E%VRJ8L2PsdDu}-!IpG(*Oxj> zFYle!=nB2LgcLrp4x9wez~|hu9h$u2k4n4rPpyN#3bDu^-~)Z;0V+7)sEWf7UxT%L zLawa=>emRLmu#eMYd?3< z1aa!@KQJ+e<8${VGL~Xhd)~LQq;H?ErvD^!2)Vyi?Z4EPOI`J`fCJy18Q4`jn}ZEB zLEh?#KMTYj2AprTSq72wu|arD8#xYymtJ?1(&Ri1JO%fCuS6nD7e_yvivBtS4E0dmq?8qAgAwnSQW#Ng>tyQIPC zRTag$x%T^Gkj>al0^7VswSi*x3}W;ug9ncJCG~XnCpU z*7~G~A)VbYRTeA^I>rOZ;PgQ=v8FF_W^5Z>@Mn@HA-(rp5vKPN6P#S-zSgFbVyNqRMYy*(*Xzz2Z(dkD}-yhEBE z_tT%w9(chhS8_|&`0v|DFSYpq0)lN=>=xhx3PFUJ;%Jit*y;p4V1eFWp^q0bmTYoH zDvDW_9hICD@NjBW=deAfIWmC7*)83iTr=z&(VZM0o(rB|9m`ZVZ+IMlqZ)`xi$fJ9 z=c&4`qxy)22xCh{oAnRLnK?TQe`=$REIVr5sCQ~gX>=ElzG71^l*7>~ z4U4VqqF)4>jK=(XQ=A8|&5{KBidQ0D_z|Gld}k2ETN7ubDcdhJKTqsRu&IWREjRT| z*0z@erw4rB%9Tk3m>mlqUzBrEx&{e$p(~~UX2C~*4hGOihUaM6rFstSYx64&h}7t9 zNq2`Bz#GrbXn%6J4cPv8f#kOEX4QHk89>?rwjIQW=BS&ec0t^ zWWt;~zmLV5Z2Cwj`<;2XE#qk|u893cID9^&Gf_&nk+)7q(L+g`7r50IRxspJij{pZ zEkCWND?%HjPDa(c86Z-xq5lyhrewovZgrJkuf`27diEE%=Ahg=5Fl>2UKN7JE9j=` zEq|IAI$<|h2CVz4lucitfz6=D@3D`AuNqEfwIq=sUT;7EUsC^0WxTU639_f(E^ySU zPx6_fG)#4JRz1e(aq#3^x9N%-daQRff&+SQF;Q_|tL57)+-<_Wo92Q{{em>+Y=#TC zGg-pRsO3QqkBL<1y6vpLvUFkU0}r?pE2AcqzU&73`^<+!_9AYRMhq2b%gaT=od6KY z=APkz?vzE{*Pg-4EuEDL8U29luaC zQO*sDX>@hA!Rwy^+5SZ*3Y%<>P{%S|W-wlip^QZR#3zwD0u)0)oMhG_1$h@JdK=U_EV?yOKJJRc`goG_??1^QA6xZIY8bG>EFm=Mv z3R(%`?8oQE9dd!XV}jkMn<&!&2p+A;;v>J1u~aZ@ZPADh0X0768>@-R)&|CM#+f!& zIE`mN*O9;=leiHW?r_Yi$&` zE_@Oc8%$K~W(C%Lx|G?)cif93i|P_`-PX4C@3h9f3WZhvUFjDJ>|xZQhraGnb5~m@ zsNzIXn)=c(r;f9WaKEFwG}GqKm;({r6i~728Xo@KH?138}@q#)m{!& zCcgxyLkjDKfh?@QpW_>Zrxgp2&hS_`8kRa_B-?1qSVpm+*|ckRri4lx*Ykv}oc%yl zbJ#M`+^KfGbyn3od+qhhA3=)a`LwwnM4v>eavd!(9mKcNB-bx%wt#vzwz*~mRO0iU zkjsN@f~i+>q{f0-)!gBBWG=>K3xA@TCD%Z%vQF`0k;3|4f=IaA?$zQu)9x!ebmuHN z4FlEC_fDin*E!8OwD{P~pcgdL>X{z0Z7^IDHSX!hDQf?Q&JfW}P$x zJv1>TSYY=|{`hRZ=FqEh<%XVhU0&X?V%qz%sit&QIk*%otfv4$iFVmKp^KwXRl~|> z00=oli?;a;`_|y+3~YWN)WltLB&U9Lg6}k7XQP^5f%C+>P8?}11_E`2B zn~_=7P~+esag;jm(qyxfpHZi#z~6-JU8bCNy45(LC`e7LUB=0Zc7bJOroaM_09L-M}v z*0|4CISl;9RS|#uBAMip7e0@*i=4Hy3ro0qyKi4o7fa7W~!V!J!6bf^D5%hjm=?BXoh%o z4togYQ{q6i?aYTYO0*3Tli#^nW23zSEFmYECk>gZHVHz1|khBML7J87q_bbYmg>J36n6(NQD zM>+BqeIJ$^f_D3dVY}@GlUOB<4Y!SHl%~W=%6yQbj+o&JJ90HKcyAqUag4eNEFXko zwQJ@FT{*&%&p&;1$ekBS^Ye&*@M~U9Mvzs=vx|an%DM{#V*=-LUbzI)dplzc&?3^9 z{^3>UmbQMvaXZ+^FpBK{OTp8)7ntIrw26mkqN%o${TaK^$L&(u8TGbWr}a&&66c39 z7LBW)lNQIuwlj$B@J{c~)1(wiI0_wNPvgoE9|!>AbumBJR^$%V3{R>l%>MUmuF{9)c*b%on@KO0HQ zG$T&g>Sgv#FZa_+Z5t(gXX+cwTLNs&2@Z!m(;a$WRE2A&ah+MK!X3;=x(N5BU6W+0Ovvo5)f?-#4y57ZyAu9x zcpahsvHL(aF~BMxw5lxF8YML~lAGeV;OK2fKU)Xmu8&QpO{b~ET01 z*H=$T|Ax~1^O!jq{zLtNNb^xXz^#b%JheKp327Gy>)N1;M!9R9KDU|+FzfQr_~*aS zqnN4bw5`V81%h+2ZIxtUSQ53gkj`Z8HQR&~fzU3=DT7g6L+BXl(-kx_#yom3biO%fTN{4O5!D?k zBRyIR9$%OY(hd@ zn&1|=7>O|Mwfj0jXMtB)*SBeOItSr{@Lub58}^gdYcQd$z#vtGaS?M-$>pQV0U_O~ zRM6W+&xe~~Y%?|7LqS}#YhFSKAK&mFF1qbHLRFQLh_+6Rd1%y;rcxNQs`;CTclUG# z=DCC;({ST(ho&&{((DGPUQL)CM~)g_ASrhkUFEw2aTb+=Jvn~ZHdQdo2HVGxKi=`< z2J@}e-*)~S&M+28#dzVHM~wC-sKy7Y)!!n+*&cQ%oN#IOY0sA-c;JV zC9M&mBfP1M4#0O5{_rp76p-x8?f!B7>abSqkdjTwhG1^|oN~kZO3Q>jA;!hvO8D{= zJlu`<^o1c5QjJbA9CsXE9NxeDL+GIL?Z);@-_5emHZWV`o2$sH#YJ?=Gu|Gh-sh?# z)1K8ZuO&z^HrO}S|5`H)xTkePvnXvXr|`0c_oTI+n538PCWIJJcJ9G0y@jsl-c`ge z-lrtRv~|c2-|SMX&d0xbyFu6^>?!!M5j2`5WiVKMl4k~DJpa#ESiE_TShe_^cKC4f zyoid<#%8y?|B~1Vx`+-!Cb?EK19}kDf^p0CLByIe&gWH~u8Tp9?N<-7($Fkvy-SfF z3qU((WK2S{ts{Z#iy}X`IkXk4y%JT87vEHvzk5ULN2%+XImu|O(N^aR*Btf<$6Nni zgz+u|^z~b!Ui;qEu6>od>CQi>L1d;z?3t7ZlH{bkORL7FIjNfx42{!NctDwdI!b+N znAFIoX4=`=Wx6+=zP4MqpwOXWYln^AyB}l4!JOaSpZfgSy5{zHdx`=qoK4Br4V-)a z71;C$omtS1zPf7Nrn9-z-dOg>RI$XhF`0efQUS1_7)?l9O+Dx~SBxc#8H3?@+>xl7|hJr>4=-kAKDT5u;h#`Vatqy62Ms*IST#CN% z)mBm=t1Yc@X?V%n;3ob?3J}!Fc#Pn_69bhVR@U(A8(pXAhzrgS9Ue6Hm2F!4Azc70 z`u(;x$2(%+={5BEcPgR6Ir~eR!JOl%94iVOgNZ^X*w}xpKG z8hZfCNr=_Sy`p9VMFJdi|PvZ#A=&$tM_Yob*53yiBn#n={O#j9|gb~ z!@#%`pX!-&;!jWftsF>OEd=#bFl0FfU7l|a6Db8}zKR>{ z-`BJZfv{N9+@|g0rEdA@SI&vc(mbT5H}G!%+rO+C0MW0BAWA{fRq>%8jPN)*+GBkw zV-2)h4i3|O#oJ&lBc$&I|0$(Fm_y(! z&ni5be^gsr8!$6)-_q!Ab5@`6_Va}Ci`&4!$@za8xe0K{+IEbEHkm*G&ArW%R85qe zE+kjW=LyZf4FZ9ZlE7_||Ititf-y2OLgx801;&dRtxoJPBb>6bvLeD(tHak# z00KHoNlCdqeQ^8UDKMz)`ZR4L0k5dQINLlzLPC^|LIePqjqy?Gok)PNzy*bE zM&FS8^d1^N$A>N)3S}+xq||9ZU-C$?@Ud?oFX6PKkiptK9>CO1+YZTq9lFt@#MK+$ z5I~$dLOm#Xb77*zl-@CtTk12A-!h%{^q-P?tL7f7{doi3`6v(qZQAZoZW)e)o&6_l z+&n;OmW({y_E$YnhBR1sFlY|fZTOAW8c7Xf-Ch6n!g@2fN{a;cSyx-D(Hj|6s*^YD zsP^rd(;$$f$Zv=OBPhTBjaWAiIK_&e-1JOfDrD2gTp(=bjIy!f8*2CV2qa>&>T$$n zGXP9(-t}J&RYdjw%VKISB8d<2bl$Y@9M za%#A>*SXC&@@Xy_e;=HApOS6Oe=#e%kk8yS`I|>P0uMb-2P{w8T+5D^_R969};2)~E!D)rPE}J}10}W&_ z24Y)!<4uWOT~A0ylafPQX{a?FW`wS&W)i_=#Ek(yP{NT6fPu&OLo%yBM@ix5BJ4Y| zL}X_b*DHqNx5`I{AjyaKz*9iJj4=9C@;kyGzXKPp_(0E0`IbI@Pm-Fs z4n`4;fS^1fo1UxjTONUxfu{#SR6$B3*x&L9bzVfdpKl+x!Fx0Gfd3-@lL({0G&5j! zD8+JB9@bKS^WB4db%#SQTbm^{o_Sr{E3{uI({goF5Aiqu7teE#wkS)zO^6khYZbts zzLtV+t6~xl$Zn{Etqb47oCR09SR@n=OdzBw^Cw%Ge4+xL#w*x;rHFQ8Fjh5~m@icc zUt77LzTrEk`q%B=f6a5?YX>|i?I~{gm|r0zM7KU)eZo{uM9w-n&e8kVqjom|M-BT{ zRN%F5e1@}6MQN%3bl)Es@ZRsIzE$J*%_F_NmHg21GPuuPVSn;BN1>R{^mBy&;YmrM z9%d~Wjn1VTqJSKM%Pv+s|Bd+`&Ok>1`4r%o@b%Rt0QB}(MfbJq=;-vEJ34-Fn{AV1 z-Zz>I1_R!J7%-48pI6{w*8gM}V0@yK^XHF(%XCt1U(7Ku2?adB^!m4(0}l`(3|+hZ z=FcC+`%lK$H6=Q*D#mdCZR6TM@u9$n$T`W9^OOt_XRcC?{Wo4D0zb)zp{>As!1E)C zZgu}#&DDkojK77bVQjIBlr-2F7BN|}fo>3`n9d%d;tSuf2q2u`KY`GuUh&-1Z>aPW z7iG+U3yw~*kTYBP$p7C6e#MMXc2YP44F$e(KlO&^|KSpV7XkwntfhV!eP+fM2)yaJ zgud$P7N)KOWqDp+j#&KkE^eRVP_6&82c}{9oGF-s13q2I9O$x(o4|gDEokio!Q}AZ zptf`SLorwwL{dY4=%C(Sjh`~367Wj2OZ&Ilr(kr5pEdvx^8z^ofP5fIpXpuaGPclH z4niNQ^ytaE0Iy#-_jfj<^1~KoJ7a_CV-3l&rXiErfjt{AUgGTXX$$%CK$Q2P!i~7S zCY=8uykV*DO@sh3MAdp?_Nja8g+58mZ z$=SFbBh~SX?qsE?m5G)Z6Vvw`O?xqyZg04qeOj`zxFM!GII9fT9;8V=QmJUiqiIddIFPMBup zrP%AbjQw@V9{!FarP($1p5r>g;;4p_LV_e(emHEt#ppCXqb1-`m#RDmU+q<}tmkn# z<44DWC$rDS?eq8Z%bQ&NMM&%IEE)$zFw18W2OG3G4@3}l>lekueCtV&a&wOKFQI+i zGeJ;A7;Q@vd}D*biNENHn@dNkVjv00Dy|+20Rb4vw?mOwU>eG0PZAO9KMCxLF;y@{ zqNw!LyR$hwH55vK~)d^>gpc@33JH2k*CB~Qf@GLHF3=Njz|9~xush+xSnA1 zwwXlz2AjDZp-bMJI?aH3)Iuq;#Jj{U$rf2UXcJN%{%mhYoKv52dkON{SfExYmA)K3 zBen3T(ka@@CE&wyadAPR5$Q~>LY;C+pTxXz~OWdl`JsY6OkWXfvHf%QjF z5raVH{2LV-ZU=v?`H?dy_hYV=If9(0TaRH97#MgB$r=sp$G}kFFX++-3!jLB?dF72 zw0)xa?jxCjp@`dX#o2_?h9t4-!e_@d5|3-VY;AC#*xMee0~q&{aO;FEbf)D6I#a5u zgs$F|054khT#~1*o*i6xFuvOArvA*UFEiT1P!Rs8$_i=)X%j{pxLiR=AXAA^y$P|{ z?icYzFVLF>7a|%Rfkrzyg8^IG+?@27g!4-nuF>}}b!s$_lnpXsLFM{;eG{6U?d)|P21$W1sbyJ+|AKTV7vJh_A#v(3tP!yGAsV*_I$oD}l@Z5fP zZmN7Nw)%K~%Jl78W{p*SkM`VE*sb$~mSqRl#L+)}Wt9~B4V;2NiZe2KbweR;+yXV2 zHxX&vX>RxmUItwL(3aFLX6;?Br8jb#UgRw`T7&tP3;Ifh&^UM7#+x-2e<}Pp5-x(E zpYonccplmpNQh6V%5S!PIQZE^9cc`*Tn);zYYE>sc$YTYqH=v$i*WV&6^-_el%I1g zHyH8g4TxXArKK z)R*bGzTB)if<}U2dbb3L!eb+HqkSc^bF9*ZmJTbBWP-D6&)794_^y-x)iURRiEft6 zO@P0$LXv}Ik{s2e$V0w5W?tH(udtfuSVr{H@vBCfN3cDcbtN|tP^bVX10isc4TyFF zahy>A1SIY(Nm}dnBM_yXiP~0>aw617Z1(ilfT629_o15$Hh>fjLkq^C7roHc^z z200zR>5Q=c9vR^n_l0wWtCiDUp-b4r{UTeT`YlI;u$B3T$1Qq{Is*Fjcxwz0>Be^~ zEbsxVX4l`hV2*w%cF6KCVmQlDAC;Gv)0EdGu7Fr<{9t;T3jW5Xd4CAuuXx*p021K1 z%*tOS-2rzuoWfvNMvWv0Cw9c#eW6mn`TUh5R9|Ol5FpNs)&&CpL9b_+{hd| zyawGOCU|PY%lsX42p!(K6J#oi05`Tlc?R5X013EwtoA@%ARV}rXg?SgWR)#T9r6De zQvxXp(6qt-xW2N&Lb<VT@OkW}r%X2~eBUqAqOH5lZpHr3w9 z*~IPRf1~)`!}Up`2Za!m<}q!w?F>23-R}QxMs-@-YE*ie5;Y;Mg-Q4cS0~aKWp?Q6IGN=nWXAd;1%4gfd zaZ=sYL31q(m7L`9PrC|lX2b5l=M_tHGM|1BoW5-N>3N#jom#)z4|&9AIVllA1^L91J!#~0 z@$R16wXKbk;G*7vm}EABhU4EV`|ie__E_y(*6DH0wk6;S$8zsXacr8Z0A#Yks=7|L zwebq~^LuS0|5Dkb_{Pf@2`NKIo*qLkVS9udF@ASHzFTdlh;#p@qt-dhTnnSaIsTjP*$dG6H+dG1k7O&U)6|}8QVwRjucuLh zN?I8j%aq$EjW=(9oF|+jHcK`)ODf+quq4_c@?@i_L8iB60?Q~ZC1Mh=8RV(YsQeMh zJQFSS!@c6f9^p_G+6O@P6@3MPg_m)zH}oXF$o5wyfrbCq&b5CvacyBl5QWP_fr1)q zR3HT8sS%lL7si5SG9;A{4PrtN!AkUkJknOHTp`Fs7F9|TVsed2JAqDk3B?D|A|gH# zg0>?MwN|gK(GJROrD!cmy(cg1e{g@{r>t2kv*+w@fBQRg=InhE?Ii%WRX|&O;#ZOKsJ);9wDhyn|shxhX^Cv1v}J=iY6PS?<>qTb>l* z+qoylgX6f=_c2-CUF|d5MW$QAYaEl1)F6z-JA`fWg16d@Nd(`%^55 zZ7-4lIVQ=^Iy4mRCyy;Z5I(50A>kY~avAqSM|p<6BvGjtTd;z$@AIgziIekD>6hVZ zNKEu-KLlg_l!$Kx7+d2viAHjwkq*{SW~Bt534i%a`6}%@{;WQL130*hr24YoFJjZM zqOxL4BWx?2GbU#%bcNBh9$>Hd+0I6p>63eP(iAI~cTywI>|Ipg)sn@|Yd&ruUDo;a z-10+T@mOkrYII?EW=ht*J&1hv?ts;Qk@2CCg ztKx3zQxW3>r$ZmM*>V7!F#-I$*d>oGdlY=-+^x}){ue625D8tJqR7}H0h~7g>5%|o z&`7Z$b*B3!!1-+uYe!ye`Qu$H?bRk@*({Oq{SLueFE>G>m|h8p=!}if-1_JhC1T9) zg-7nguiTj9r>Ko2>K&VDI`((hW zOGW75wIek}wIJ{BH?kxNFR;Oo`tomQ{(zk-?YSi?QWENY2z>fTaitB`M zBA$k3B{XLc+@C|$%L4&xU<#iF&31X(TWmv-limy$cf9#N%L$A6Jy|K?jxuXw85diE z4s_}IXTD-m^NygY`e3GTA`-4o5E4#Wq@KruMnpJ~a=4ccWj)y!d(>!~<)DxM%Xc-> zfB<4qXVxnv{!ckw4e*ARH{X)b(i+qmH8}6 zPE&-vofqOs9Sgp;49aYWJ1XKlcrsrlkxe)IBxF|do$pl%2BX!;!4!P%PA1Q<3vfZpLr=cEfWBgs(3Pr^NO%khIa4`?Yq3s~q;6_yO5 z-e(3C({1y!rt5Bu83@mfN=g54Dj<|=@jgw;$`jnV7FkNn1$6?hT+?o}xr3FckNpyJouMR6G%C1^UNRSRfcgClmkijpHAP zJHnkGsmve(l4LapnRGf!BpQ&37P_HS0@qqZ$wkUm&j67`C>bn>{sbpB+dr!QX7)m3 z@j@U1F5MVFb9f4En!vSapCFoauW~$#t(?NW^Ccsnhmpyj#Q7bu?nE$=HHOL z)b9o~dwA8OX+q5LMTF^nki+ZV;KTqAnvLN4RKFXU_HgU?3Opay_6D{Zd^ruFaFqFZ z+c;zrOyxvZ;JmnMd{%!VG{VHOP1WrC^X&Jv^Q*yq%-%rEC~*E(pXPJePBXahwIEis#?+Zn9f~wHx5&okp??mwalJc2G}04UM8J+JwxRPcF>|9)Lt+?$jux3|ocTjD zy<+bKBK9f^ReD5Kh8kOrfh}@!f@ua88pFtIrW-!#Lq~_&KtwAv$+cMocSn%= zgnPH%K8u=J#LWrXW?GBkG{%P9)l}E+KnCR|aPT%+-D49F1Vqf&RD_a;$iC-_(Cb5O z{T|?zf)s{OgmL)6&9*}l>SQ&qm@_;n0MB6Y*^B6&n0U;i+e_oUy&TuyQP`z5A&0Kb3u8p( zzC`P;ZCEn#pMQM-(O%grsQM3Yu2J!OIS(XB3iic!?5N6rszvg0eg;o7`&8>@r{y0R z(bsF%{O~KR_hRDusJ)XR>k5Q5BXiIkmw!a4+XAgX{!P;VefXx3-QTXjvD=h8 zoJ)&L@10G=53aN=BFd6ob1#Ku#ra1O-1&>G|63a$vP%JL%lMaZEVA1Qmp>i5bkX0| zmR^p~Jg$&ze}+Z*k!9AgM`}4rNtA8T+DknEon7-5tKNu#zi;14WR4)#H;WbW?sqG7 zg|4S<3%eC^(Zau8w=QvBV@?2DA&djqO*5a5;ZS95#C9Nqtu*uXYOvpC{@tHw_1r;e z9kD~SbtUDHY1Pyz0|2Bc5T`IOC(9HMrZAY|fu-kRDi{90dho~7uiwNS`%^!+ul`uO PnUin=JHB~MdddF)=ulFM literal 0 HcmV?d00001 diff --git a/deployment/B2C_Docs/Images/Deployment/10tab_current.png b/deployment/B2C_Docs/Images/Deployment/10tab_current.png new file mode 100644 index 0000000000000000000000000000000000000000..fcb40ac3fd1abb67c9c415795476ffc4325bea7a GIT binary patch literal 64974 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

^Y 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 m)XjhX Date: Fri, 8 Jul 2022 10:52:08 +0100 Subject: [PATCH 051/285] fix: database error on moodle --- deployment/B2CDeployment.ps1 | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index a26d7254..ce7ae9f1 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -152,6 +152,10 @@ $IEFAppApiInfo.oauth2PermissionScopes += $UserImpersonationScope ConvertTo-Json -InputObject $IEFAppApiInfo | Out-File -FilePath "userImpersonationScope.json" az ad app update --id $IEFClientID --set api=@userImpersonationScope.json --only-show-errors +# granting user_impersonation to the web app +az ad app permission grant --id $WebClientID --api $IEFClientID --scope "user_impersonation" --only-show-errors > $null +az ad app permission add --id $WebClientID --api $IEFClientID --api-permissions "$IEFScopeGUID=Scope" --only-show-errors + Remove-Item userImpersonationScope.json #endregion From cc1516197f738384b66cd7e39d52c4afbb48d4f3 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Fri, 8 Jul 2022 16:58:29 +0100 Subject: [PATCH 052/285] changes for single func deploy and new B2C --- client/src/Core/Auth/AppAuthConfig.ts | 4 +- client/src/Core/Auth/policies.ts | 6 +- deployment/Cleanup.ps1 | 4 +- deployment/Deploy.ps1 | 4 +- deployment/Platform-Only-Backend.ps1 | 142 +++++++++++++++ deployment/Platform-Only-Deploy.ps1 | 252 ++++++++++++++++++++++++++ deployment/azuredeploy.json | 2 +- 7 files changed, 404 insertions(+), 10 deletions(-) create mode 100644 deployment/Platform-Only-Backend.ps1 create mode 100644 deployment/Platform-Only-Deploy.ps1 diff --git a/client/src/Core/Auth/AppAuthConfig.ts b/client/src/Core/Auth/AppAuthConfig.ts index 3fceb238..81737de3 100644 --- a/client/src/Core/Auth/AppAuthConfig.ts +++ b/client/src/Core/Auth/AppAuthConfig.ts @@ -17,7 +17,7 @@ const authLogCallback = (level: LogLevel, message: string, _containsPii: boolean const configuration: Configuration = { auth: { - clientId: 'e5642ae2-5178-4b6f-9653-d80f6f47fcf0', // RB: don't hardcode + clientId: '0cd1d1d6-a7aa-41e2-b569-1ca211147973', // RB: don't hardcode redirectUri: process.env.REACT_APP_EDNA_MAIN_URL!, authority: b2cPolicies.authorities.signUpSignIn.authority, navigateToLoginRequestUrl: true, @@ -33,7 +33,7 @@ const configuration: Configuration = { }; const authParams: AuthenticationParameters = { - scopes: ['https://uclmscltib2c.onmicrosoft.com/e5642ae2-5178-4b6f-9653-d80f6f47fcf0/demo.read'] // RB: configure B2C here + scopes: ['https://ltimoodleb2c.onmicrosoft.com/api/b2c.read'] // RB: configure B2C here }; const options: IMsalAuthProviderConfig = { diff --git a/client/src/Core/Auth/policies.ts b/client/src/Core/Auth/policies.ts index 1f41a12e..ef628220 100644 --- a/client/src/Core/Auth/policies.ts +++ b/client/src/Core/Auth/policies.ts @@ -5,14 +5,14 @@ */ export const b2cPolicies = { names: { - signUpSignIn: 'B2C_1_Dummy_Test_sign' // RB make not hardcoded + signUpSignIn: 'B2C_1_signup_signin_LTI' // RB make not hardcoded }, authorities: { signUpSignIn: { // RB not sure if i have to modify this - authority: 'https://uclmscltib2c.b2clogin.com/uclmscltib2c.onmicrosoft.com/B2C_1_Dummy_Test_sign' + authority: 'https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/B2C_1_signup_signin_LTI' //https://uclmscltib2c.b2clogin.com/uclmscltib2c.onmicrosoft.com/oauth2/v2.0/authorize?p=B2C_1_Dummy_Test_sign&client_id=9cb02f8b-244d-4c34-904f-72633041512a&nonce=defaultNonce&redirect_uri=http%3A%2F%2Flocalhost%3A6420%2F&scope=openid&response_type=id_token&prompt=login } }, - authorityDomain: 'uclmscltib2c.b2clogin.com' // RB: don't hardcode + authorityDomain: 'ltimoodleb2c.b2clogin.com' // RB: don't hardcode }; diff --git a/deployment/Cleanup.ps1 b/deployment/Cleanup.ps1 index 6382b457..3ef2c8e2 100644 --- a/deployment/Cleanup.ps1 +++ b/deployment/Cleanup.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "RB_cloudT2_MSLearnLTI", - [string]$AppName = "RB_cloudT2_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "RB_a2_MSLearnLTI", + [string]$AppName = "RB_a2_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null ) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 76cc91fd..8138a17b 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "RB_cloudT2_MSLearnLTI", - [string]$AppName = "RB_cloudT2_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "RB_a2_MSLearnLTI", + [string]$AppName = "RB_a2_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null diff --git a/deployment/Platform-Only-Backend.ps1 b/deployment/Platform-Only-Backend.ps1 new file mode 100644 index 00000000..cb792de4 --- /dev/null +++ b/deployment/Platform-Only-Backend.ps1 @@ -0,0 +1,142 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT license. +# -------------------------------------------------------------------------------------------- + +# List of known Azure Functions to Install / Publish. +# Update this list on adding / updating any Function. +enum VALID_FUNCTIONS { + Platforms; +} + +function Write-BackendDebugLog { + param ( + [Parameter(Mandatory)] + [string]$Message + ) + + if( Get-Command 'Write-Log' -ErrorAction SilentlyContinue) { + Write-Log -Message $Message + } + else { + Write-Verbose $Message -Verbose + } +} + +function Get-Project([VALID_FUNCTIONS]$FunctionName) { + $PathRegex = "Functions/**/Edna.$FunctionName.csproj" + $Project = Get-ChildItem -Path $PathRegex -Recurse + if(!$Project) { + throw "Could not find a Project File that matches [ $PathRegex ] path" + } + Write-Output $Project +} + +function Publish-FunctionApp { + + [CmdletBinding(SupportsShouldProcess)] + param ( + [Parameter(Mandatory)] + [string]$FunctionName, + [Parameter(Mandatory)] + [string]$ProjectDir, + [Parameter(Mandatory)] + [string]$OutputDir, + [Parameter(Mandatory)] + [string]$ResourceGroupName, + [Parameter(Mandatory)] + [string]$FunctionAppName + ) + + $PublishDir = Join-Path $OutputDir $FunctionName + Write-BackendDebugLog -Message "Building [ $ProjectDir ] --> [ $PublishDir ]" + $PublishLogs = dotnet publish $ProjectDir --configuration RELEASE --output $PublishDir --nologo + if($LASTEXITCODE -ne 0) { + Write-BackendDebugLog -Message ($PublishLogs -join "`n") + throw "Errors while building Function App [ $FunctionName ]" + } + + $ArchivePath = Join-Path $OutputDir "$FunctionName.zip" + Write-BackendDebugLog -Message "Zipping Artifacts [ $PublishDir ]/* --> [ $ArchivePath ]" + try { + Compress-Archive -Path "$PublishDir/*" -DestinationPath $ArchivePath -Force -ErrorAction Stop + } + catch { + Write-BackendDebugLog -Message "Errors while compressing artifacts for Function App [ $FunctionName ]" + throw $_ + } + + Write-BackendDebugLog -Message "Deploying to Azure Function App [ $ResourceGroupName/$FunctionAppName ]" + # Turning Error only mode to reduce clutter on the terminal + $result = az functionapp deployment source config-zip -g $ResourceGroupName -n $FunctionAppName --src $ArchivePath --only-show-errors | ConvertFrom-Json + if(!$result) { + throw "Failed to deploy Function App [ $FunctionName ]" + } + + Write-Output "Function App [ $FunctionName ] Published Successfully" +} + +function Install-Backend { + + [CmdletBinding(SupportsShouldProcess)] + param ( + [Parameter(Mandatory)] + [string]$SourceRoot, + [Parameter(Mandatory)] + [string]$ResourceGroupName, + [string]$LearnContentFunctionAppName, + [string]$LinksFunctionAppName, + [string]$AssignmentsFunctionAppName, + [string]$ConnectFunctionAppName, + [string]$PlatformsFunctionAppName, + [string]$UsersFunctionAppName + ) + + Write-BackendDebugLog -Message "Switching to [$SourceRoot] as working directory" + Push-Location $SourceRoot + + $PublishRoot = 'Artifacts' + if(Test-Path $PublishRoot) { + Write-BackendDebugLog -Message "Deleting existing Artifacts" + Remove-Item -LiteralPath $PublishRoot -Recurse -Force + } + + try { + $Functions = [System.Enum]::GetNames([VALID_FUNCTIONS]) + foreach ($Function in $Functions) { + + Write-BackendDebugLog -Message "Installing FunctionApp -- $Function" + + $Project = Get-Project $Function + + Write-BackendDebugLog -Message "Publishing Project [ $($Project.Name) ] as FunctionApp" + + $PublishParams = @{ + FunctionName = $Function; + ProjectDir = $($Project.Directory); + OutputDir = $PublishRoot; + ResourceGroupName = $ResourceGroupName + } + + $FunctionAppName = & { + switch ($Function) { + "Platforms" { return $PlatformsFunctionAppName } + } + } + if ($FunctionAppName) { + $PublishParams.FunctionAppName = $FunctionAppName + } else { + $MissingFunctionAppName = "Unable to map [ $Function ] to any Azure FunctionAppName" + Write-BackendDebugLog -Message $MissingFunctionAppName + Write-Warning $MissingFunctionAppName + } + + Publish-FunctionApp @PublishParams + } + + Write-Output "Backend Installation Completed Successfully" + } + finally { + Pop-Location + } +} \ No newline at end of file diff --git a/deployment/Platform-Only-Deploy.ps1 b/deployment/Platform-Only-Deploy.ps1 new file mode 100644 index 00000000..7e44a0c8 --- /dev/null +++ b/deployment/Platform-Only-Deploy.ps1 @@ -0,0 +1,252 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT license. +# -------------------------------------------------------------------------------------------- + +[CmdletBinding()] +param ( + [string]$ResourceGroupName = "RB_a1_MSLearnLTI", + [string]$AppName = "RB_a1_MSLearnLTI", + [switch]$UseActiveAzureAccount, + [string]$SubscriptionNameOrId = $null, + [string]$LocationName = $null +) + +process { + function Write-Title([string]$Title) { + Write-Host "`n`n=============================================================" + Write-Host $Title + Write-Host "=============================================================`n`n" + } + + try { + + #region Show Learn LTI Banner + Write-Host '' + Write-Host ' _ ______ _____ _ _ _ _______ _____ ' + Write-Host '| | | ____| /\ | __ \| \ | | | | |__ __|_ _|' + Write-Host '| | | |__ / \ | |__) | \| | ______ | | | | | | ' + Write-Host '| | | __| / /\ \ | _ /| . ` | |______| | | | | | | ' + Write-Host '| |____| |____ / ____ \| | \ \| |\ | | |____| | _| |_ ' + Write-Host '|______|______/_/ \_\_| \_\_| \_| |______|_| |_____|' + Write-Host '' + Write-Host '' + #endregion + + #region Setup Logging + . .\Write-Log.ps1 + $ScriptPath = split-path -parent $MyInvocation.MyCommand.Definition + $ExecutionStartTime = $(get-date -f dd-MM-yyyy-HH-mm-ss) + $LogRoot = Join-Path $ScriptPath "Log" + + $LogFile = Join-Path $LogRoot "Log-$ExecutionStartTime.log" + Set-LogFile -Path $LogFile + + $TranscriptFile = Join-Path $LogRoot "Transcript-$ExecutionStartTime.log" + Start-Transcript -Path $TranscriptFile; + #endregion + + #region Login to Azure CLI + Write-Title 'STEP #1 - Logging into Azure' + + function Test-LtiActiveAzAccount { + $account = az account show | ConvertFrom-Json + if(!$account) { + throw "Error while trying to get Active Account Info." + } + } + + function Connect-LtiAzAccount { + $loginOp = az login | ConvertFrom-Json + if(!$loginOp) { + throw "Encountered an Error while trying to Login." + } + } + + if ($UseActiveAzureAccount) { + Write-Log -Message "Using Active Azure Account" + Test-LtiActiveAzAccount + } + else { + Write-Log -Message "Logging in to Azure" + Connect-LtiAzAccount + } + + Write-Log -Message "Successfully logged in to Azure." + #endregion + + #region Choose Active Subcription + Write-Title 'STEP #2 - Choose Subscription' + + function Get-LtiSubscriptionList { + $AzAccountList = ((az account list --all --output json) | ConvertFrom-Json) + if(!$AzAccountList) { + throw "Encountered an Error while trying to fetch Subscription List." + } + Write-Output $AzAccountList + } + + function Set-LtiActiveSubscription { + param ( + [string]$NameOrId, + $List + ) + + $subscription = ($List | Where-Object { ($_.name -ieq $NameOrId) -or ($_.id -ieq $NameOrId) }) + if(!$subscription) { + throw "Invalid Subscription Name/ID Entered." + } + az account set --subscription $NameOrId + #Intentionally not catching an exception here since the set subscription commands behavior (output) is different from others + + Write-Output $subscription + } + + Write-Log -Message "Fetching List of Subscriptions in Users Account" + $SubscriptionList = Get-LtiSubscriptionList + Write-Log -Message "List of Subscriptions:-`n$($SubscriptionList | ConvertTo-Json -Compress)" + + $SubscriptionCount = ($SubscriptionList | Measure-Object).Count + Write-Log -Message "Count of Subscriptions: $SubscriptionCount" + if ($SubscriptionCount -eq 0) { + throw "Please create at least ONE Subscription in your Azure Account" + } + elseif ($SubscriptionNameOrId) { + Write-Log -Message "Using User provided Subscription Name/ID: $SubscriptionNameOrId" + } + elseif ($SubscriptionCount -eq 1) { + $SubscriptionNameOrId = $SubscriptionList[0].id; + Write-Log -Message "Defaulting to Subscription ID: $SubscriptionNameOrId" + } + else { + $SubscriptionListOutput = $SubscriptionList | Select-Object @{ l="Subscription Name"; e={ $_.name } }, "id", "isDefault" + Write-Host ($SubscriptionListOutput | Out-String) + $SubscriptionNameOrId = Read-Host 'Enter the Name or ID of the Subscription from Above List' + #trimming the input for empty spaces, if any + $SubscriptionNameOrId = $SubscriptionNameOrId.Trim() + Write-Log -Message "User Entered Subscription Name/ID: $SubscriptionNameOrId" + } + + $ActiveSubscription = Set-LtiActiveSubscription -NameOrId $SubscriptionNameOrId -List $SubscriptionList + $UserEmailAddress = $ActiveSubscription.user.name + #endregion + + #region Choose Region for Deployment + Write-Title "STEP #3 - Choose Location`n(Please refer to the Documentation / ReadMe on Github for the List of Supported Locations)" + + Write-Log -Message "Fetching List of Locations" + $LocationList = ((az account list-locations) | ConvertFrom-Json) + Write-Log -Message "List of Locations:-`n$($locationList | ConvertTo-Json -Compress)" + + if(!$LocationName) { + Write-Host "$(az account list-locations --output table --query "[].{Name:name}" | Out-String)`n" + $LocationName = Read-Host 'Enter Location From Above List for Resource Provisioning' + #trimming the input for empty spaces, if any + $LocationName = $LocationName.Trim() + } + Write-Log -Message "User Provided Location Name: $LocationName" + + $ValidLocation = $LocationList | Where-Object { $_.name -ieq $LocationName } + if(!$ValidLocation) { + throw "Invalid Location Name Entered." + } + #endregion + + #region Create New App Registration in AzureAD + # RB remove -- don't need to register a new app + # maybe hardcode? + Write-Title 'STEP #4 - Registering Azure Active Directory App' + + Write-Log -Message "Creating AAD App with Name: $AppName" + + # do i need to hardccode this appinfo.appId + $appinfo=$(az ad app create --display-name $AppName) | ConvertFrom-Json; + if(!$appinfo) { + throw "Encountered an Error while creating AAD App" + } + + $identifierURI = "api://$($appinfo.appId)"; + Write-Log -Message "Updating Identifier URI's in AAD App to: [ api://$($appinfo.appId) ]" + $appUpdateOp = az ad app update --id $appinfo.appId --identifier-uris $identifierURI; + #Intentionally not catching an exception here since the app update commands behavior (output) is different from others + #Intentionally not catching an exception here + + Write-Host 'App Created Successfully' + #endregion + + #region Create New Resource Group in above Region + Write-Title 'STEP #5 - Creating Resource Group' + + Write-Host 'Resource Group Created Successfully' + + #RB -- need to hardcode $ResourceGroupName and $deploymentName -- potentiallly + + #endregion + + #region Provision Resources inside Resource Group on Azure using ARM template + Write-Title 'STEP #6 - Creating Resources in Azure' + + $userObjectId = az ad signed-in-user show --query objectId + #$userObjectId + + $templateFileName = "azuredeploy.json" + $deploymentName = "Deployment-$ExecutionStartTime" + + Write-Host 'Resource Creation in Azure Completed Successfully' + + Write-Title 'Step #7 - Updating KeyVault with LTI 1.3 Key' + + function Update-LtiFunctionAppSettings([string]$ResourceGroupName, [string]$FunctionAppName, [hashtable]$AppSettings) { + Write-Log -Message "Updating App Settings for Function App [ $FunctionAppName ]: -" + foreach ($it in $AppSettings.GetEnumerator()) { + Write-Log -Message "`t[ $($it.Name) ] = [ $($it.Value) ]" + az functionapp config appsettings set --resource-group $ResourceGroupName --name $FunctionAppName --settings "$($it.Name)=$($it.Value)" + } + } + + #Creating EdnaLiteDevKey in keyVault and Updating the Config Entry EdnaLiteDevKey in the Function Config + + # RB might need to hardcode EdnaLiteDevKey? or somehow get it for the fucntion config? + + # $EdnaKeyString = @{ "EdnaKeyString"="$KeyVaultLink" } # RB: this thing here, can get from current list + $EdnaKeyString ="TODO" + + $ConnectUpdateOp = Update-LtiFunctionAppSettings $ResourceGroupName $deploymentOutput.properties.outputs.ConnectFunctionName.value $EdnaKeyString + $PlatformsUpdateOp = Update-LtiFunctionAppSettings $ResourceGroupName $deploymentOutput.properties.outputs.PlatformsFunctionName.value $EdnaKeyString + $UsersUpdateOp = Update-LtiFunctionAppSettings $ResourceGroupName $deploymentOutput.properties.outputs.UsersFunctionName.value $EdnaKeyString + #endregion + + #region Build and Publish Function Apps + . .\Install-Backend.ps1 + Write-Title "STEP #10 - Installing the backend" + + + # RB maybe tweak to only one of these? + $BackendParams = @{ + SourceRoot="../backend"; + ResourceGroupName=$ResourceGroupName; + #LearnContentFunctionAppName=$deploymentOutput.properties.outputs.LearnContentFunctionName.value; + #LinksFunctionAppName=$deploymentOutput.properties.outputs.LinksFunctionName.value; + #AssignmentsFunctionAppName=$deploymentOutput.properties.outputs.AssignmentsFunctionName.value; + #ConnectFunctionAppName=$deploymentOutput.properties.outputs.ConnectFunctionName.value; + PlatformsFunctionAppName=$deploymentOutput.properties.outputs.PlatformsFunctionName.value; + #UsersFunctionAppName=$deploymentOutput.properties.outputs.UsersFunctionName.value; + } + Install-Backend @BackendParams + #endregion + + #region Build and Publish Client Artifacts + Write-Title '======== Successfully Deployed Resources to Azure ===========' + + Write-Log -Message "Deployment Complete" + } + catch { + $Message = 'Error occurred while executing the Script. Please report the bug on Github (along with Error Message & Logs)' + Write-Log -Message $Message -ErrorRecord $_ + throw $_ + } + finally { + Stop-Transcript + $exit = Read-Host 'Press any Key to Exit' + } +} \ No newline at end of file diff --git a/deployment/azuredeploy.json b/deployment/azuredeploy.json index d87eb55f..d07d6f8e 100644 --- a/deployment/azuredeploy.json +++ b/deployment/azuredeploy.json @@ -367,7 +367,7 @@ "enabledForDeployment": "[variables('enabledForDeployment')]", "enabledForDiskEncryption": "[variables('enabledForDiskEncryption')]", "enabledForTemplateDeployment": "[variables('enabledForTemplateDeployment')]", - "enableSoftDelete": true, + "enableSoftDelete": false, "tenantId": "[variables('tenantId')]", "accessPolicies": [ { From f4b7656c33cdb7e1512fc0169418c19b8caf09b1 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Mon, 11 Jul 2022 12:03:24 +0100 Subject: [PATCH 053/285] partial deploy works --- client/src/Core/Auth/AppAuthConfig.ts | 2 +- deployment/Platform-Only-Backend.ps1 | 7 ++-- deployment/Platform-Only-Deploy.ps1 | 52 ++++++++++++++++++--------- 3 files changed, 41 insertions(+), 20 deletions(-) diff --git a/client/src/Core/Auth/AppAuthConfig.ts b/client/src/Core/Auth/AppAuthConfig.ts index 81737de3..adae4fd3 100644 --- a/client/src/Core/Auth/AppAuthConfig.ts +++ b/client/src/Core/Auth/AppAuthConfig.ts @@ -18,7 +18,7 @@ const authLogCallback = (level: LogLevel, message: string, _containsPii: boolean const configuration: Configuration = { auth: { clientId: '0cd1d1d6-a7aa-41e2-b569-1ca211147973', // RB: don't hardcode - redirectUri: process.env.REACT_APP_EDNA_MAIN_URL!, + redirectUri: process.env.REACT_APP_EDNA_MAIN_URL!, authority: b2cPolicies.authorities.signUpSignIn.authority, navigateToLoginRequestUrl: true, knownAuthorities: [b2cPolicies.authorityDomain] diff --git a/deployment/Platform-Only-Backend.ps1 b/deployment/Platform-Only-Backend.ps1 index cb792de4..121dd32e 100644 --- a/deployment/Platform-Only-Backend.ps1 +++ b/deployment/Platform-Only-Backend.ps1 @@ -126,9 +126,10 @@ function Install-Backend { if ($FunctionAppName) { $PublishParams.FunctionAppName = $FunctionAppName } else { - $MissingFunctionAppName = "Unable to map [ $Function ] to any Azure FunctionAppName" - Write-BackendDebugLog -Message $MissingFunctionAppName - Write-Warning $MissingFunctionAppName + continue + #$MissingFunctionAppName = "Unable to map [ $Function ] to any Azure FunctionAppName" + #Write-BackendDebugLog -Message $MissingFunctionAppName + #Write-Warning $MissingFunctionAppName } Publish-FunctionApp @PublishParams diff --git a/deployment/Platform-Only-Deploy.ps1 b/deployment/Platform-Only-Deploy.ps1 index 7e44a0c8..2bf6639b 100644 --- a/deployment/Platform-Only-Deploy.ps1 +++ b/deployment/Platform-Only-Deploy.ps1 @@ -3,10 +3,16 @@ # Licensed under the MIT license. # -------------------------------------------------------------------------------------------- + +#Things to update +## Resource group name and app nam +## $EdnaKeyString = @{ "EdnaKeyString"="$KeyVaultLink" } # RB: this thing here, can get from current list + + [CmdletBinding()] param ( - [string]$ResourceGroupName = "RB_a1_MSLearnLTI", - [string]$AppName = "RB_a1_MSLearnLTI", + [string]$ResourceGroupName = "RB_a2_MSLearnLTI", + [string]$AppName = "RB_a2_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null @@ -156,18 +162,16 @@ process { # RB remove -- don't need to register a new app # maybe hardcode? Write-Title 'STEP #4 - Registering Azure Active Directory App' - - Write-Log -Message "Creating AAD App with Name: $AppName" # do i need to hardccode this appinfo.appId - $appinfo=$(az ad app create --display-name $AppName) | ConvertFrom-Json; - if(!$appinfo) { - throw "Encountered an Error while creating AAD App" - } - - $identifierURI = "api://$($appinfo.appId)"; - Write-Log -Message "Updating Identifier URI's in AAD App to: [ api://$($appinfo.appId) ]" - $appUpdateOp = az ad app update --id $appinfo.appId --identifier-uris $identifierURI; + #$appinfo=$(az ad app create --display-name $AppName) | ConvertFrom-Json; + #if(!$appinfo) { + # throw "Encountered an Error while creating AAD App" + #} + + #$identifierURI = "api://$($appinfo.appId)"; + #Write-Log -Message "Updating Identifier URI's in AAD App to: [ api://$($appinfo.appId) ]" + #$appUpdateOp = az ad app update --id $appinfo.appId --identifier-uris $identifierURI; #Intentionally not catching an exception here since the app update commands behavior (output) is different from others #Intentionally not catching an exception here @@ -179,8 +183,6 @@ process { Write-Host 'Resource Group Created Successfully' - #RB -- need to hardcode $ResourceGroupName and $deploymentName -- potentiallly - #endregion #region Provision Resources inside Resource Group on Azure using ARM template @@ -192,10 +194,20 @@ process { $templateFileName = "azuredeploy.json" $deploymentName = "Deployment-$ExecutionStartTime" + $templateFileName = "azuredeploy.json" + $deploymentName = "Deployment-$ExecutionStartTime" + Write-Log -Message "Deploying ARM Template to Azure inside ResourceGroup: $ResourceGroupName with DeploymentName: $deploymentName, TemplateFile: $templateFileName, AppClientId: $($appinfo.appId), IdentifiedURI: $($appinfo.identifierUris)" + $deploymentOutput = (az deployment group create --resource-group $ResourceGroupName --name $deploymentName --template-file $templateFileName --parameters appRegistrationClientId=$($appinfo.appId) appRegistrationApiURI=$($identifierURI) userEmailAddress=$($UserEmailAddress) userObjectId=$($userObjectId)) | ConvertFrom-Json; + if(!$deploymentOutput) { + throw "Encountered an Error while deploying to Azure" + } + Write-Host 'Resource Creation in Azure Completed Successfully' Write-Title 'Step #7 - Updating KeyVault with LTI 1.3 Key' + + function Update-LtiFunctionAppSettings([string]$ResourceGroupName, [string]$FunctionAppName, [hashtable]$AppSettings) { Write-Log -Message "Updating App Settings for Function App [ $FunctionAppName ]: -" foreach ($it in $AppSettings.GetEnumerator()) { @@ -208,8 +220,16 @@ process { # RB might need to hardcode EdnaLiteDevKey? or somehow get it for the fucntion config? + #Creating EdnaLiteDevKey in keyVault and Updating the Config Entry EdnaLiteDevKey in the Function Config + $keyCreationOp = (az keyvault key create --vault-name $deploymentOutput.properties.outputs.KeyVaultName.value --name EdnaLiteDevKey --protection software) | ConvertFrom-Json; + if(!$keyCreationOp) { + throw "Encountered an Error while creating Key in keyVault" + } + $KeyVaultLink = $keyCreationOp.key.kid + $EdnaKeyString = @{ "EdnaKeyString"="$KeyVaultLink" } + # $EdnaKeyString = @{ "EdnaKeyString"="$KeyVaultLink" } # RB: this thing here, can get from current list - $EdnaKeyString ="TODO" + #$EdnaKeyString ="https://kv-y6k3b3zud.vault.azure.net/keys/EdnaLiteDevKey/3a3424ec481c43a2944c13ff42e4ae5c" $ConnectUpdateOp = Update-LtiFunctionAppSettings $ResourceGroupName $deploymentOutput.properties.outputs.ConnectFunctionName.value $EdnaKeyString $PlatformsUpdateOp = Update-LtiFunctionAppSettings $ResourceGroupName $deploymentOutput.properties.outputs.PlatformsFunctionName.value $EdnaKeyString @@ -217,7 +237,7 @@ process { #endregion #region Build and Publish Function Apps - . .\Install-Backend.ps1 + . .\Platform-Only-Backend.ps1 Write-Title "STEP #10 - Installing the backend" From 9d0e907378dc0963f41f9ced4012eba76f6b89a6 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Mon, 11 Jul 2022 13:58:21 +0100 Subject: [PATCH 054/285] still get client id and api rui --- deployment/Platform-Only-Deploy.ps1 | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/deployment/Platform-Only-Deploy.ps1 b/deployment/Platform-Only-Deploy.ps1 index 2bf6639b..4aebdb03 100644 --- a/deployment/Platform-Only-Deploy.ps1 +++ b/deployment/Platform-Only-Deploy.ps1 @@ -196,8 +196,11 @@ process { $templateFileName = "azuredeploy.json" $deploymentName = "Deployment-$ExecutionStartTime" - Write-Log -Message "Deploying ARM Template to Azure inside ResourceGroup: $ResourceGroupName with DeploymentName: $deploymentName, TemplateFile: $templateFileName, AppClientId: $($appinfo.appId), IdentifiedURI: $($appinfo.identifierUris)" - $deploymentOutput = (az deployment group create --resource-group $ResourceGroupName --name $deploymentName --template-file $templateFileName --parameters appRegistrationClientId=$($appinfo.appId) appRegistrationApiURI=$($identifierURI) userEmailAddress=$($UserEmailAddress) userObjectId=$($userObjectId)) | ConvertFrom-Json; + $clientId = "8174fcc1-196d-4578-9c5c-9b4ff5ba6e19" + $apiURI = "api://8174fcc1-196d-4578-9c5c-9b4ff5ba6e19" + + Write-Log -Message "Deploying ARM Template to Azure inside ResourceGroup: $ResourceGroupName with DeploymentName: $deploymentName, TemplateFile: $templateFileName, AppClientId: $clientId, IdentifiedURI: $apiURI" + $deploymentOutput = (az deployment group create --resource-group $ResourceGroupName --name $deploymentName --template-file $templateFileName --parameters appRegistrationClientId=$clientId appRegistrationApiURI=$apiURI userEmailAddress=$($UserEmailAddress) userObjectId=$($userObjectId)) | ConvertFrom-Json; if(!$deploymentOutput) { throw "Encountered an Error while deploying to Azure" } From 8b97a399a45c1556a52c2479de1a58573bfcf251 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Mon, 11 Jul 2022 14:03:35 +0100 Subject: [PATCH 055/285] file name change, alter which functions --- ...nly-Backend.ps1 => Limited-Install-Backend.ps1} | 14 +++++++++++++- ...-Only-Deploy.ps1 => Limited-Install-Deploy.ps1} | 6 +++--- 2 files changed, 16 insertions(+), 4 deletions(-) rename deployment/{Platform-Only-Backend.ps1 => Limited-Install-Backend.ps1} (88%) rename deployment/{Platform-Only-Deploy.ps1 => Limited-Install-Deploy.ps1} (99%) diff --git a/deployment/Platform-Only-Backend.ps1 b/deployment/Limited-Install-Backend.ps1 similarity index 88% rename from deployment/Platform-Only-Backend.ps1 rename to deployment/Limited-Install-Backend.ps1 index 121dd32e..04f55f47 100644 --- a/deployment/Platform-Only-Backend.ps1 +++ b/deployment/Limited-Install-Backend.ps1 @@ -4,9 +4,16 @@ # -------------------------------------------------------------------------------------------- # List of known Azure Functions to Install / Publish. -# Update this list on adding / updating any Function. +# Update this list on adding / updating any Function. + +# testing note -- comment out any you will not deploy enum VALID_FUNCTIONS { + #AssignmentLearnContent; + #AssignmentLinks; + #Assignments; + #Connect; Platforms; + #Users } function Write-BackendDebugLog { @@ -120,7 +127,12 @@ function Install-Backend { $FunctionAppName = & { switch ($Function) { + "AssignmentLearnContent" { return $LearnContentFunctionAppName } + "AssignmentLinks" { return $LinksFunctionAppName } + "Assignments" { return $AssignmentsFunctionAppName } + "Connect" { return $ConnectFunctionAppName } "Platforms" { return $PlatformsFunctionAppName } + "Users" { return $UsersFunctionAppName } } } if ($FunctionAppName) { diff --git a/deployment/Platform-Only-Deploy.ps1 b/deployment/Limited-Install-Deploy.ps1 similarity index 99% rename from deployment/Platform-Only-Deploy.ps1 rename to deployment/Limited-Install-Deploy.ps1 index 4aebdb03..34af71c4 100644 --- a/deployment/Platform-Only-Deploy.ps1 +++ b/deployment/Limited-Install-Deploy.ps1 @@ -6,7 +6,6 @@ #Things to update ## Resource group name and app nam -## $EdnaKeyString = @{ "EdnaKeyString"="$KeyVaultLink" } # RB: this thing here, can get from current list [CmdletBinding()] @@ -26,6 +25,9 @@ process { } try { + #application ID and uri + $clientId = "8174fcc1-196d-4578-9c5c-9b4ff5ba6e19" + $apiURI = "api://8174fcc1-196d-4578-9c5c-9b4ff5ba6e19" #region Show Learn LTI Banner Write-Host '' @@ -196,8 +198,6 @@ process { $templateFileName = "azuredeploy.json" $deploymentName = "Deployment-$ExecutionStartTime" - $clientId = "8174fcc1-196d-4578-9c5c-9b4ff5ba6e19" - $apiURI = "api://8174fcc1-196d-4578-9c5c-9b4ff5ba6e19" Write-Log -Message "Deploying ARM Template to Azure inside ResourceGroup: $ResourceGroupName with DeploymentName: $deploymentName, TemplateFile: $templateFileName, AppClientId: $clientId, IdentifiedURI: $apiURI" $deploymentOutput = (az deployment group create --resource-group $ResourceGroupName --name $deploymentName --template-file $templateFileName --parameters appRegistrationClientId=$clientId appRegistrationApiURI=$apiURI userEmailAddress=$($UserEmailAddress) userObjectId=$($userObjectId)) | ConvertFrom-Json; From 33566dc4fc7cd6f82a8599fb09a80e09e53852a6 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Mon, 11 Jul 2022 14:04:46 +0100 Subject: [PATCH 056/285] more comments --- deployment/Limited-Install-Deploy.ps1 | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/deployment/Limited-Install-Deploy.ps1 b/deployment/Limited-Install-Deploy.ps1 index 34af71c4..9b38a418 100644 --- a/deployment/Limited-Install-Deploy.ps1 +++ b/deployment/Limited-Install-Deploy.ps1 @@ -5,7 +5,9 @@ #Things to update -## Resource group name and app nam +## Resource group name and app name +## application ID and uri +# backend parameters [CmdletBinding()] @@ -244,7 +246,7 @@ process { Write-Title "STEP #10 - Installing the backend" - # RB maybe tweak to only one of these? + # Comment out any you don't want to deploy $BackendParams = @{ SourceRoot="../backend"; ResourceGroupName=$ResourceGroupName; From 284735ac4dde8544ad218b33f809fa33b04bcb62 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Mon, 11 Jul 2022 16:57:16 +0100 Subject: [PATCH 057/285] working deploy with template --- deployment/azuredeploy.json | 60 ++++++++++++++++++++++++++++++------- 1 file changed, 49 insertions(+), 11 deletions(-) diff --git a/deployment/azuredeploy.json b/deployment/azuredeploy.json index d07d6f8e..65db3dba 100644 --- a/deployment/azuredeploy.json +++ b/deployment/azuredeploy.json @@ -127,23 +127,60 @@ } }, { - "name": "[concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix'),'/authsettings')]", - "apiVersion": "2018-11-01", + "name": "[concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix'),'/authsettingsV2')]", + "apiVersion": "2021-03-01", "type": "Microsoft.Web/sites/config", "location": "[resourceGroup().location]", "dependsOn": [ "[resourceId('Microsoft.Web/sites', concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix')))]" ], "properties": { - "enabled": "[if(equals(concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix')),concat('connect', variables('ProjectNameSuffix'))), 'false', 'true')]", - "unauthenticatedClientAction": "RedirectToLoginPage", - "tokenStoreEnabled": true, - "defaultProvider": "AzureActiveDirectory", - "clientId": "[parameters('appRegistrationClientId')]", - "issuer": "[concat('https://sts.windows.net/', variables('tenantId'), '/')]", - "allowedAudiences": [ - "[parameters('appRegistrationApiURI')]" - ] + "platform": { + "enabled": "[if(equals(concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix')),concat('connect', variables('ProjectNameSuffix'))), 'false', 'true')]", + "runtimeVersion": "~1" + }, + "globalValidation": { + "requireAuthentication": true, + "unauthenticatedClientAction": "RedirectToLoginPage", + "redirectToProvider": "AzureB2C" + }, + "identityProviders": { + "azureActiveDirectory": { + "enabled": true, + "registration": { + "openIdIssuer": "[concat('https://sts.windows.net/', variables('tenantId'), '/')]", + "clientId": "[parameters('appRegistrationClientId')]" + }, + "validation": { + "jwtClaimChecks": {}, + "allowedAudiences": [ + "[parameters('appRegistrationApiURI')]" + ], + "defaultAuthorizationPolicy": { + "allowedPrincipals": {} + } + } + }, + "customOpenIdConnectProviders": { + "AzureB2C": { + "registration": { + "clientId": "0cd1d1d6-a7aa-41e2-b569-1ca211147973", + "clientCredential": { + "clientSecretSettingName": "AzureB2C_AUTHENTICATION_SECRET" + }, + "openIdConnectConfiguration": { + "wellKnownOpenIdConfiguration": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/B2C_1_signup_signin_LTI/v2.0/.well-known/openid-configuration" + } + } + } + } + }, + "login": { + "tokenStore": { + "enabled": true + }, + "preserveUrlFragmentsForLogins": false + } }, "copy": { "name": "FunctionatIndex", @@ -232,6 +269,7 @@ ], "properties": { "AllowedUsers": "[parameters('userEmailAddress')]", + "AzureB2C_AUTHENTICATION_SECRET": "jHr8Q~tEPWGJBdBtNn0MNfZRXUZjpGghi~6zBalB", "AuthUrl": "[parameters('appRegistrationApiURI')]", "ConnectApiBaseUrl": "[concat('https://','connect' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", From 0cad1230f11b811acdd770164c72f8095a2ee921 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Mon, 11 Jul 2022 20:53:07 +0100 Subject: [PATCH 058/285] adding the secret elsewhere and updating name --- deployment/Limited-Install-Deploy.ps1 | 2 +- deployment/azuredeploy.json | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/deployment/Limited-Install-Deploy.ps1 b/deployment/Limited-Install-Deploy.ps1 index 9b38a418..1b7b413e 100644 --- a/deployment/Limited-Install-Deploy.ps1 +++ b/deployment/Limited-Install-Deploy.ps1 @@ -242,7 +242,7 @@ process { #endregion #region Build and Publish Function Apps - . .\Platform-Only-Backend.ps1 + . .\Limited-Install-Backend.ps1 Write-Title "STEP #10 - Installing the backend" diff --git a/deployment/azuredeploy.json b/deployment/azuredeploy.json index 65db3dba..81d8a0cc 100644 --- a/deployment/azuredeploy.json +++ b/deployment/azuredeploy.json @@ -197,6 +197,7 @@ ], "properties": { "AuthUrl": "[parameters('appRegistrationApiURI')]", + "AzureB2C_AUTHENTICATION_SECRET": "jHr8Q~tEPWGJBdBtNn0MNfZRXUZjpGghi~6zBalB", "AssignmentsServiceUrl": "[concat('https://', 'assignments' , variables('ProjectNameSuffix'), '.azurewebsites.net/api/')]", "Lti1Secret": "LearnLTI", "PlatformsServiceUrl": "[concat('https://', 'platforms', variables('ProjectNameSuffix'), '.azurewebsites.net/api/')]", @@ -222,6 +223,7 @@ ], "properties": { "AuthUrl": "[parameters('appRegistrationApiURI')]", + "AzureB2C_AUTHENTICATION_SECRET": "jHr8Q~tEPWGJBdBtNn0MNfZRXUZjpGghi~6zBalB", "AssignmentsServiceUrl": "[concat('https://', 'assignments', variables('ProjectNameSuffix'), '.azurewebsites.net/api/')]", "Lti1Secret": "LearnLTI", "PlatformsServiceUrl": "[concat('https://', 'platforms', variables('ProjectNameSuffix'), '.azurewebsites.net/api/')]", @@ -246,6 +248,7 @@ ], "properties": { "AuthUrl": "[parameters('appRegistrationApiURI')]", + "AzureB2C_AUTHENTICATION_SECRET": "jHr8Q~tEPWGJBdBtNn0MNfZRXUZjpGghi~6zBalB", "PlatformsServiceUrl": "[concat('https://','platforms' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", "UsersServiceUrl": "[concat('https://','users' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", @@ -293,6 +296,7 @@ ], "properties": { "AuthUrl": "[parameters('appRegistrationApiURI')]", + "AzureB2C_AUTHENTICATION_SECRET": "jHr8Q~tEPWGJBdBtNn0MNfZRXUZjpGghi~6zBalB", "UsersServiceUrl": "[concat('https://','users' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('links' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('links' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", @@ -315,6 +319,7 @@ ], "properties": { "AuthUrl": "[parameters('appRegistrationApiURI')]", + "AzureB2C_AUTHENTICATION_SECRET": "jHr8Q~tEPWGJBdBtNn0MNfZRXUZjpGghi~6zBalB", "UsersServiceUrl": "[concat('https://','users' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('learncontent' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('learncontent' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", From cddeda0fa3116c59d7a3080130ec91888e1d89bb Mon Sep 17 00:00:00 2001 From: danielmusselwhite <56388919+danielmusselwhite@users.noreply.github.com> Date: Tue, 12 Jul 2022 15:13:00 +0100 Subject: [PATCH 059/285] Updated B2C_deployment.md fixed a typo --- deployment/B2C_Docs/B2C_Deployment.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deployment/B2C_Docs/B2C_Deployment.md b/deployment/B2C_Docs/B2C_Deployment.md index d9f20386..4e360f7f 100644 --- a/deployment/B2C_Docs/B2C_Deployment.md +++ b/deployment/B2C_Docs/B2C_Deployment.md @@ -1,4 +1,4 @@ -# B2C Cleanup User Docs +# B2C Deployment User Docs ## Terminal screenshots key: * Red background = hidden B2C value @@ -153,4 +153,4 @@ # Trouble shooting -* [STEP 10: Error when getting the list of all custom policies in the tenant ](#troubleshoot-pma-admin-consent) \ No newline at end of file +* [STEP 10: Error when getting the list of all custom policies in the tenant ](#troubleshoot-pma-admin-consent) From ae5b896da42e6aa210fc8fbb793beb8460d50696 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Thu, 14 Jul 2022 11:19:14 +0100 Subject: [PATCH 060/285] additional comments --- deployment/Limited-Install-Backend.ps1 | 3 ++- deployment/Limited-Install-Deploy.ps1 | 23 ++++++++++++----------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/deployment/Limited-Install-Backend.ps1 b/deployment/Limited-Install-Backend.ps1 index 04f55f47..a8adc6d5 100644 --- a/deployment/Limited-Install-Backend.ps1 +++ b/deployment/Limited-Install-Backend.ps1 @@ -6,7 +6,8 @@ # List of known Azure Functions to Install / Publish. # Update this list on adding / updating any Function. -# testing note -- comment out any you will not deploy +# Upate: comment out any you don't want to deploy. Maybe prompt here? called automatically from limited-deploy + enum VALID_FUNCTIONS { #AssignmentLearnContent; #AssignmentLinks; diff --git a/deployment/Limited-Install-Deploy.ps1 b/deployment/Limited-Install-Deploy.ps1 index 1b7b413e..61db8d76 100644 --- a/deployment/Limited-Install-Deploy.ps1 +++ b/deployment/Limited-Install-Deploy.ps1 @@ -5,15 +5,16 @@ #Things to update -## Resource group name and app name -## application ID and uri +## Resource group name and app name - maybe make these params you pass in or prompt? +## application ID and uri - uri is just "api://" + the application id -- parameter , or prompt # backend parameters +# need to update Limited-install-backend as well [CmdletBinding()] param ( - [string]$ResourceGroupName = "RB_a2_MSLearnLTI", - [string]$AppName = "RB_a2_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "RB_a3_MSLearnLTI", + [string]$AppName = "RB_a3_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null @@ -28,8 +29,8 @@ process { try { #application ID and uri - $clientId = "8174fcc1-196d-4578-9c5c-9b4ff5ba6e19" - $apiURI = "api://8174fcc1-196d-4578-9c5c-9b4ff5ba6e19" + $clientId = "a15f3fac-c0e5-491f-8a17-41233e28ab8c" + $apiURI = "api://a15f3fac-c0e5-491f-8a17-41233e28ab8c" #region Show Learn LTI Banner Write-Host '' @@ -250,12 +251,12 @@ process { $BackendParams = @{ SourceRoot="../backend"; ResourceGroupName=$ResourceGroupName; - #LearnContentFunctionAppName=$deploymentOutput.properties.outputs.LearnContentFunctionName.value; - #LinksFunctionAppName=$deploymentOutput.properties.outputs.LinksFunctionName.value; - #AssignmentsFunctionAppName=$deploymentOutput.properties.outputs.AssignmentsFunctionName.value; - #ConnectFunctionAppName=$deploymentOutput.properties.outputs.ConnectFunctionName.value; + LearnContentFunctionAppName=$deploymentOutput.properties.outputs.LearnContentFunctionName.value; + LinksFunctionAppName=$deploymentOutput.properties.outputs.LinksFunctionName.value; + AssignmentsFunctionAppName=$deploymentOutput.properties.outputs.AssignmentsFunctionName.value; + ConnectFunctionAppName=$deploymentOutput.properties.outputs.ConnectFunctionName.value; PlatformsFunctionAppName=$deploymentOutput.properties.outputs.PlatformsFunctionName.value; - #UsersFunctionAppName=$deploymentOutput.properties.outputs.UsersFunctionName.value; + UsersFunctionAppName=$deploymentOutput.properties.outputs.UsersFunctionName.value; } Install-Backend @BackendParams #endregion From a25c916468b893291ab9e5db58cc36e66998e08f Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Thu, 14 Jul 2022 13:38:39 +0100 Subject: [PATCH 061/285] working with custom policy --- client/src/Core/Auth/AppAuthConfig.ts | 2 +- client/src/Core/Auth/policies.ts | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/client/src/Core/Auth/AppAuthConfig.ts b/client/src/Core/Auth/AppAuthConfig.ts index adae4fd3..40b4ae05 100644 --- a/client/src/Core/Auth/AppAuthConfig.ts +++ b/client/src/Core/Auth/AppAuthConfig.ts @@ -19,7 +19,7 @@ const configuration: Configuration = { auth: { clientId: '0cd1d1d6-a7aa-41e2-b569-1ca211147973', // RB: don't hardcode redirectUri: process.env.REACT_APP_EDNA_MAIN_URL!, - authority: b2cPolicies.authorities.signUpSignIn.authority, + authority: b2cPolicies.authorities.signIn.authority, navigateToLoginRequestUrl: true, knownAuthorities: [b2cPolicies.authorityDomain] }, diff --git a/client/src/Core/Auth/policies.ts b/client/src/Core/Auth/policies.ts index ef628220..d972eb76 100644 --- a/client/src/Core/Auth/policies.ts +++ b/client/src/Core/Auth/policies.ts @@ -5,13 +5,11 @@ */ export const b2cPolicies = { names: { - signUpSignIn: 'B2C_1_signup_signin_LTI' // RB make not hardcoded + signIn: 'B2C_1A_SIGNUP_SIGNIN' // RB make not hardcoded }, authorities: { - signUpSignIn: { - // RB not sure if i have to modify this - authority: 'https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/B2C_1_signup_signin_LTI' - //https://uclmscltib2c.b2clogin.com/uclmscltib2c.onmicrosoft.com/oauth2/v2.0/authorize?p=B2C_1_Dummy_Test_sign&client_id=9cb02f8b-244d-4c34-904f-72633041512a&nonce=defaultNonce&redirect_uri=http%3A%2F%2Flocalhost%3A6420%2F&scope=openid&response_type=id_token&prompt=login + signIn: { + authority: `https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin` } }, authorityDomain: 'ltimoodleb2c.b2clogin.com' // RB: don't hardcode From dbaf8ebb50cc572f5090e37a975f938a123257f2 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Thu, 14 Jul 2022 14:26:05 +0100 Subject: [PATCH 062/285] use vars from .env.dev --- client/.env.development | 5 ++++- client/.env.production | 19 +++++++++++-------- client/src/Core/Auth/AppAuthConfig.ts | 4 ++-- client/src/Core/Auth/policies.ts | 12 +++++++++--- 4 files changed, 26 insertions(+), 14 deletions(-) diff --git a/client/.env.development b/client/.env.development index 816697c3..513e91e9 100644 --- a/client/.env.development +++ b/client/.env.development @@ -6,4 +6,7 @@ REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL="http://localhost:7071/api" REACT_APP_EDNA_LINKS_SERVICE_URL="http://localhost:7073/api" REACT_APP_EDNA_LEARN_CONTENT="http://localhost:7074/api" REACT_APP_EDNA_USERS_SERVICE_URL="http://localhost:7075/api" -REACT_APP_EDNA_PLATFORM_SERVICE_URL="http://localhost:7072/api" \ No newline at end of file +REACT_APP_EDNA_PLATFORM_SERVICE_URL="http://localhost:7072/api" +REACT_APP_EDNA_B2C_CLIENT_ID='0cd1d1d6-a7aa-41e2-b569-1ca211147973' +REACT_APP_EDNA_B2C_TENANT='ltimoodleb2c' +REACT_APP_EDNA_AUTH_CLIENT_ID='0cd1d1d6-a7aa-41e2-b569-1ca211147973' \ No newline at end of file diff --git a/client/.env.production b/client/.env.production index 4b3bcb57..5aa7cd3b 100644 --- a/client/.env.production +++ b/client/.env.production @@ -1,10 +1,13 @@ GENERATE_SOURCEMAP='false' -REACT_APP_EDNA_PLATFORM_SERVICE_URL='https://platforms-korkom27p.azurewebsites.net/api' -REACT_APP_EDNA_USERS_SERVICE_URL='https://users-korkom27p.azurewebsites.net/api' -REACT_APP_EDNA_LEARN_CONTENT='https://learncontent-korkom27p.azurewebsites.net/api' -REACT_APP_EDNA_LINKS_SERVICE_URL='https://links-korkom27p.azurewebsites.net/api' -REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL='https://assignments-korkom27p.azurewebsites.net/api' +REACT_APP_EDNA_PLATFORM_SERVICE_URL='https://platforms-suda4znvd.azurewebsites.net/api' +REACT_APP_EDNA_USERS_SERVICE_URL='https://users-suda4znvd.azurewebsites.net/api' +REACT_APP_EDNA_LEARN_CONTENT='https://learncontent-suda4znvd.azurewebsites.net/api' +REACT_APP_EDNA_LINKS_SERVICE_URL='https://links-suda4znvd.azurewebsites.net/api' +REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL='https://assignments-suda4znvd.azurewebsites.net/api' REACT_APP_EDNA_TENANT_ID='21510bb9-6414-46d0-9a07-1faf98f25937' -REACT_APP_EDNA_DEFAULT_SCOPE='api://af192e3d-919b-4d69-b11e-39979c65606d/user_impersonation' -REACT_APP_EDNA_MAIN_URL='https://learnclientkorkom27p.z33.web.core.windows.net/' -REACT_APP_EDNA_AAD_CLIENT_ID='af192e3d-919b-4d69-b11e-39979c65606d' +REACT_APP_EDNA_DEFAULT_SCOPE='api://3d440bc7-87f5-4600-8814-698b895d14d7/user_impersonation' +REACT_APP_EDNA_MAIN_URL='https://learnclientsuda4znvd.z33.web.core.windows.net/' +REACT_APP_EDNA_AAD_CLIENT_ID='3d440bc7-87f5-4600-8814-698b895d14d7' +REACT_APP_EDNA_B2C_CLIENT_ID='0cd1d1d6-a7aa-41e2-b569-1ca211147973' +REACT_APP_EDNA_B2C_TENANT='ltimoodleb2c' +REACT_APP_EDNA_AUTH_CLIENT_ID='0cd1d1d6-a7aa-41e2-b569-1ca211147973' \ No newline at end of file diff --git a/client/src/Core/Auth/AppAuthConfig.ts b/client/src/Core/Auth/AppAuthConfig.ts index 40b4ae05..8e21855e 100644 --- a/client/src/Core/Auth/AppAuthConfig.ts +++ b/client/src/Core/Auth/AppAuthConfig.ts @@ -17,7 +17,7 @@ const authLogCallback = (level: LogLevel, message: string, _containsPii: boolean const configuration: Configuration = { auth: { - clientId: '0cd1d1d6-a7aa-41e2-b569-1ca211147973', // RB: don't hardcode + clientId: process.env.REACT_APP_EDNA_AUTH_CLIENT_ID!, //process.env.REACT_APP_EDNA_AAD_CLIENT_ID! redirectUri: process.env.REACT_APP_EDNA_MAIN_URL!, authority: b2cPolicies.authorities.signIn.authority, navigateToLoginRequestUrl: true, @@ -33,7 +33,7 @@ const configuration: Configuration = { }; const authParams: AuthenticationParameters = { - scopes: ['https://ltimoodleb2c.onmicrosoft.com/api/b2c.read'] // RB: configure B2C here + scopes: ['https://' + process.env.REACT_APP_EDNA_B2C_TENANT! + '.onmicrosoft.com/api/b2c.read'] // RB: 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read' }; const options: IMsalAuthProviderConfig = { diff --git a/client/src/Core/Auth/policies.ts b/client/src/Core/Auth/policies.ts index d972eb76..4b505098 100644 --- a/client/src/Core/Auth/policies.ts +++ b/client/src/Core/Auth/policies.ts @@ -3,14 +3,20 @@ * To learn more about user flows, visit: https://docs.microsoft.com/en-us/azure/active-directory-b2c/user-flow-overview * To learn more about custom policies, visit: https://docs.microsoft.com/en-us/azure/active-directory-b2c/custom-policy-overview */ + export const b2cPolicies = { names: { - signIn: 'B2C_1A_SIGNUP_SIGNIN' // RB make not hardcoded + signIn: 'B2C_1A_SIGNUP_SIGNIN' }, authorities: { signIn: { - authority: `https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin` + authority: + `https://` + + process.env.REACT_APP_EDNA_B2C_TENANT! + + `.b2clogin.com/` + + process.env.REACT_APP_EDNA_B2C_TENANT! + + '.onmicrosoft.com/b2c_1a_signup_signin' } }, - authorityDomain: 'ltimoodleb2c.b2clogin.com' // RB: don't hardcode + authorityDomain: process.env.REACT_APP_EDNA_B2C_TENANT! + `.b2clogin.com/` // RB: don't hardcode }; From 136072a9a6dcdca46ca35190666945ffcc3fe8bf Mon Sep 17 00:00:00 2001 From: Sundram Goyal Date: Thu, 14 Jul 2022 18:49:25 +0100 Subject: [PATCH 063/285] choose function app menu --- deployment/Limited-Install-Backend.ps1 | 112 +++++++++++++++++++++++-- 1 file changed, 107 insertions(+), 5 deletions(-) diff --git a/deployment/Limited-Install-Backend.ps1 b/deployment/Limited-Install-Backend.ps1 index a8adc6d5..b1981362 100644 --- a/deployment/Limited-Install-Backend.ps1 +++ b/deployment/Limited-Install-Backend.ps1 @@ -9,13 +9,69 @@ # Upate: comment out any you don't want to deploy. Maybe prompt here? called automatically from limited-deploy enum VALID_FUNCTIONS { - #AssignmentLearnContent; - #AssignmentLinks; - #Assignments; - #Connect; + AssignmentLearnContent; + AssignmentLinks; + Assignments; + Connect; Platforms; - #Users + Users } +function Write-Title([string]$Title) { + Write-Host "`n`n=============================================================" + Write-Host $Title + Write-Host "=============================================================`n`n" +} + +function Is-Numeric ($Value) +{ + return $Value -match "^[\d\.]+$" +} + +Write-Title 'Choose function Apps to update' +[string]$menu = "1.AssignmentLearnContent`r`n2.AssignmentLinks`r`n3.Assignments`r`n4.Connect`r`n5.Platforms`r`n6.Users" +Write-Host "$menu" +[Int32[]]$indexes= @() +while ($true) { + [string]$indextoupdate = Read-Host 'Choose the index of the function you need to update (one at a time, eg:3) or for exit: e' + if(Is-Numeric($indextoupdate)){ + $indupdate = [int]$indextoupdate + if ($indupdate -gt 0 -and $indupdate -lt 7) { + if (!($indupdate -in $indexes)) { + $indexes += ,$indupdate + } + else { + Write-Host "Index already chosen" + } + } + else { + Write-Host "Invalid input" + } + } + else{ + if($indextoupdate -eq 'e'){ + break + } + Write-Host "Invalid input" + + } + + if($indexes){ + Write-Host "These are the chosen options: $indexes" + } + else { + Write-Host "You haven't chosen the option" + } + if ($indexes.Count -eq 6) { + break + } + if ($indexes.Count -eq 6) { + break + } +} + + + + function Write-BackendDebugLog { param ( @@ -86,6 +142,7 @@ function Publish-FunctionApp { function Install-Backend { + [CmdletBinding(SupportsShouldProcess)] param ( [Parameter(Mandatory)] @@ -109,8 +166,53 @@ function Install-Backend { Remove-Item -LiteralPath $PublishRoot -Recurse -Force } + Write-Title 'Choose function Apps to update' + [string]$menu = "1.AssignmentLearnContent`r`n2.AssignmentLinks`r`n3.Assignments`r`n4.Connect`r`n5.Platforms`r`n6.Users" + Write-Host "$menu" + [Int32[]]$indexes= @() + while ($true) { + [string]$indextoupdate = Read-Host 'Choose the index of the function you need to update (one at a time, eg:3) or for exit: e' + if(Is-Numeric($indextoupdate)){ + $indupdate = [int]$indextoupdate + if ($indupdate -gt 0 -and $indupdate -lt 7) { + if (!($indupdate -in $indexes)) { + $indexes += ,$indupdate + } + else { + Write-Host "Index already chosen" + } + } + else { + Write-Host "Invalid input" + } + } + else{ + if($indextoupdate -eq 'e'){ + break + } + Write-Host "Invalid input" + + } + + if($indexes){ + Write-Host "These are the chosen options: $indexes" + } + else { + Write-Host "You haven't chosen the option" + } + if ($indexes.Count -eq 6) { + break + } + if ($indexes.Count -eq 6) { + break + } + } + + try { $Functions = [System.Enum]::GetNames([VALID_FUNCTIONS]) + Write-Host "$Functions" + Read-Host "stoppp" foreach ($Function in $Functions) { Write-BackendDebugLog -Message "Installing FunctionApp -- $Function" From ffd3b43ff4a55f52e1d8bb7939ce2e85a6733d37 Mon Sep 17 00:00:00 2001 From: DuyNguyen19993010 Date: Thu, 14 Jul 2022 21:13:22 +0100 Subject: [PATCH 064/285] Chosen functions are delpoyed once chosen --- deployment/Limited-Install-Backend.ps1 | 61 +++++--------------------- 1 file changed, 10 insertions(+), 51 deletions(-) diff --git a/deployment/Limited-Install-Backend.ps1 b/deployment/Limited-Install-Backend.ps1 index b1981362..4d3e9730 100644 --- a/deployment/Limited-Install-Backend.ps1 +++ b/deployment/Limited-Install-Backend.ps1 @@ -27,52 +27,6 @@ function Is-Numeric ($Value) return $Value -match "^[\d\.]+$" } -Write-Title 'Choose function Apps to update' -[string]$menu = "1.AssignmentLearnContent`r`n2.AssignmentLinks`r`n3.Assignments`r`n4.Connect`r`n5.Platforms`r`n6.Users" -Write-Host "$menu" -[Int32[]]$indexes= @() -while ($true) { - [string]$indextoupdate = Read-Host 'Choose the index of the function you need to update (one at a time, eg:3) or for exit: e' - if(Is-Numeric($indextoupdate)){ - $indupdate = [int]$indextoupdate - if ($indupdate -gt 0 -and $indupdate -lt 7) { - if (!($indupdate -in $indexes)) { - $indexes += ,$indupdate - } - else { - Write-Host "Index already chosen" - } - } - else { - Write-Host "Invalid input" - } - } - else{ - if($indextoupdate -eq 'e'){ - break - } - Write-Host "Invalid input" - - } - - if($indexes){ - Write-Host "These are the chosen options: $indexes" - } - else { - Write-Host "You haven't chosen the option" - } - if ($indexes.Count -eq 6) { - break - } - if ($indexes.Count -eq 6) { - break - } -} - - - - - function Write-BackendDebugLog { param ( [Parameter(Mandatory)] @@ -207,12 +161,17 @@ function Install-Backend { break } } + $Functions = @() + foreach($func in $indexes){ + $value = [VALID_FUNCTIONS]$func + $Functions+= $value + } - - try { - $Functions = [System.Enum]::GetNames([VALID_FUNCTIONS]) - Write-Host "$Functions" - Read-Host "stoppp" + try { + + #$Functions = [System.Enum]::GetNames([VALID_FUNCTIONS]) + #Write-Host "$Functions" + #Read-Host "stoppp" foreach ($Function in $Functions) { Write-BackendDebugLog -Message "Installing FunctionApp -- $Function" From 9460a0e1ef8e3f5d4b32a01046b90cbdeca6e47e Mon Sep 17 00:00:00 2001 From: DuyNguyen19993010 Date: Thu, 14 Jul 2022 21:32:09 +0100 Subject: [PATCH 065/285] Function deploy fix --- deployment/Limited-Install-Backend.ps1 | 5 +- deployment/azuredeploy.json | 63 ++++++++++++++------------ 2 files changed, 34 insertions(+), 34 deletions(-) diff --git a/deployment/Limited-Install-Backend.ps1 b/deployment/Limited-Install-Backend.ps1 index 4d3e9730..fb289cf5 100644 --- a/deployment/Limited-Install-Backend.ps1 +++ b/deployment/Limited-Install-Backend.ps1 @@ -157,13 +157,10 @@ function Install-Backend { if ($indexes.Count -eq 6) { break } - if ($indexes.Count -eq 6) { - break - } } $Functions = @() foreach($func in $indexes){ - $value = [VALID_FUNCTIONS]$func + $value = [VALID_FUNCTIONS]($func-1) $Functions+= $value } diff --git a/deployment/azuredeploy.json b/deployment/azuredeploy.json index ee1785a8..b25e4dac 100644 --- a/deployment/azuredeploy.json +++ b/deployment/azuredeploy.json @@ -197,6 +197,7 @@ ], "properties": { "AuthUrl": "[parameters('appRegistrationApiURI')]", + "DidDeployWork": "true", "AzureB2C_AUTHENTICATION_SECRET": "jHr8Q~tEPWGJBdBtNn0MNfZRXUZjpGghi~6zBalB", "AssignmentsServiceUrl": "[concat('https://', 'assignments' , variables('ProjectNameSuffix'), '.azurewebsites.net/api/')]", "Lti1Secret": "LearnLTI", @@ -246,21 +247,22 @@ "dependsOn": [ "[resourceId('Microsoft.Web/sites', concat('assignments' , variables('ProjectNameSuffix')))]" ], - "properties": { - "AuthUrl": "[parameters('appRegistrationApiURI')]", - "AzureB2C_AUTHENTICATION_SECRET": "jHr8Q~tEPWGJBdBtNn0MNfZRXUZjpGghi~6zBalB", - "PlatformsServiceUrl": "[concat('https://','platforms' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", - "UsersServiceUrl": "[concat('https://','users' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", - "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", - "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('assignments' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('assignments' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", - "FUNCTIONS_EXTENSION_VERSION": "~3", - "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components', concat('assignments' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]", - "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat('assignments' , variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('assignments' , variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]", - "WEBSITE_CONTENTSHARE": "[toLower(concat('assignments' , variables('ProjectNameSuffix')))]", - "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('assignments' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", - "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", - "WEBSITE_RUN_FROM_PACKAGE": "1" - } + "properties": { + "AuthUrl": "[parameters('appRegistrationApiURI')]", + "DidDeployWork": "true", + "AzureB2C_AUTHENTICATION_SECRET": "jHr8Q~tEPWGJBdBtNn0MNfZRXUZjpGghi~6zBalB", + "PlatformsServiceUrl": "[concat('https://','platforms' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", + "UsersServiceUrl": "[concat('https://','users' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", + "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", + "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('assignments' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('assignments' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", + "FUNCTIONS_EXTENSION_VERSION": "~3", + "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components', concat('assignments' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]", + "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat('assignments' , variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('assignments' , variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]", + "WEBSITE_CONTENTSHARE": "[toLower(concat('assignments' , variables('ProjectNameSuffix')))]", + "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('assignments' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", + "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", + "WEBSITE_RUN_FROM_PACKAGE": "1" + } }, { "name": "[concat('platforms' , variables('ProjectNameSuffix'),'/appsettings')]", @@ -270,21 +272,22 @@ "dependsOn": [ "[resourceId('Microsoft.Web/sites', concat('platforms' , variables('ProjectNameSuffix')))]" ], - "properties": { - "AllowedUsers": "[parameters('userEmailAddress')]", - "AzureB2C_AUTHENTICATION_SECRET": "jHr8Q~tEPWGJBdBtNn0MNfZRXUZjpGghi~6zBalB", - "AuthUrl": "[parameters('appRegistrationApiURI')]", - "ConnectApiBaseUrl": "[concat('https://','connect' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", - "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", - "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('platforms' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('platforms' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", - "FUNCTIONS_EXTENSION_VERSION": "~3", - "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components', concat('platforms' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]", - "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat('platforms' , variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('platforms' , variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]", - "WEBSITE_CONTENTSHARE": "[toLower(concat('platforms' , variables('ProjectNameSuffix')))]", - "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('platforms' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", - "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", - "WEBSITE_RUN_FROM_PACKAGE": "1" - } + "properties": { + "AllowedUsers": "[parameters('userEmailAddress')]", + "AzureB2C_AUTHENTICATION_SECRET": "jHr8Q~tEPWGJBdBtNn0MNfZRXUZjpGghi~6zBalB", + "AuthUrl": "[parameters('appRegistrationApiURI')]", + "DidDeployWork": "true", + "ConnectApiBaseUrl": "[concat('https://','connect' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", + "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", + "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('platforms' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('platforms' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", + "FUNCTIONS_EXTENSION_VERSION": "~3", + "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components', concat('platforms' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]", + "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat('platforms' , variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('platforms' , variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]", + "WEBSITE_CONTENTSHARE": "[toLower(concat('platforms' , variables('ProjectNameSuffix')))]", + "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('platforms' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", + "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", + "WEBSITE_RUN_FROM_PACKAGE": "1" + } }, { "name": "[concat('links', variables('ProjectNameSuffix'), '/appsettings')]", From 004fa24580d4165290477a02cf578aee77f4e226 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Fri, 15 Jul 2022 12:27:23 +0100 Subject: [PATCH 066/285] modified authentication to allow for b2c access --- .../Services/AccessTokenService.cs | 2 ++ .../Services/KeyVaultJwkProvider.cs | 2 ++ .../Services/KeyVaultPemKeyProvider.cs | 3 ++ .../Services/NrpsClient.cs | 2 ++ .../Services/OidcClient.cs | 2 ++ .../Utils/LtiAdvantageExtensions.cs | 2 ++ .../AssignmentLearnContentApi.cs | 1 + .../Edna.Platforms/PlatformsApi.cs | 22 +++++++------ .../Edna.Utils.Http/HttpClaimsExtension.cs | 32 +++++++++++++------ 9 files changed, 50 insertions(+), 18 deletions(-) diff --git a/backend/Bindings/Edna.Bindings.LtiAdvantage/Services/AccessTokenService.cs b/backend/Bindings/Edna.Bindings.LtiAdvantage/Services/AccessTokenService.cs index 4afa1ebc..1ad5c897 100644 --- a/backend/Bindings/Edna.Bindings.LtiAdvantage/Services/AccessTokenService.cs +++ b/backend/Bindings/Edna.Bindings.LtiAdvantage/Services/AccessTokenService.cs @@ -3,6 +3,8 @@ // Licensed under the MIT license. // -------------------------------------------------------------------------------------------- +// TODO - File appears to contain the important functions for receiving and validating tokens and credentials + using System; using System.IdentityModel.Tokens.Jwt; using System.Linq; diff --git a/backend/Bindings/Edna.Bindings.LtiAdvantage/Services/KeyVaultJwkProvider.cs b/backend/Bindings/Edna.Bindings.LtiAdvantage/Services/KeyVaultJwkProvider.cs index d42d60c3..4d49c999 100644 --- a/backend/Bindings/Edna.Bindings.LtiAdvantage/Services/KeyVaultJwkProvider.cs +++ b/backend/Bindings/Edna.Bindings.LtiAdvantage/Services/KeyVaultJwkProvider.cs @@ -3,6 +3,8 @@ // Licensed under the MIT license. // -------------------------------------------------------------------------------------------- +// TODO - file appears to get the Azure Key Vault JWK Key from the Key Vault. + using System.Threading.Tasks; using Edna.Utils.Http; using IdentityModel.Jwk; diff --git a/backend/Bindings/Edna.Bindings.LtiAdvantage/Services/KeyVaultPemKeyProvider.cs b/backend/Bindings/Edna.Bindings.LtiAdvantage/Services/KeyVaultPemKeyProvider.cs index d6499eb7..a1bccae2 100644 --- a/backend/Bindings/Edna.Bindings.LtiAdvantage/Services/KeyVaultPemKeyProvider.cs +++ b/backend/Bindings/Edna.Bindings.LtiAdvantage/Services/KeyVaultPemKeyProvider.cs @@ -3,6 +3,9 @@ // Licensed under the MIT license. // -------------------------------------------------------------------------------------------- +// TODO - file appears to get the PEM key from the key vault (public key infrastructure [maybe used for signing?])) + + using System; using System.IO; using System.Security.Cryptography; diff --git a/backend/Bindings/Edna.Bindings.LtiAdvantage/Services/NrpsClient.cs b/backend/Bindings/Edna.Bindings.LtiAdvantage/Services/NrpsClient.cs index fa25dbf3..0c0441af 100644 --- a/backend/Bindings/Edna.Bindings.LtiAdvantage/Services/NrpsClient.cs +++ b/backend/Bindings/Edna.Bindings.LtiAdvantage/Services/NrpsClient.cs @@ -3,6 +3,8 @@ // Licensed under the MIT license. // -------------------------------------------------------------------------------------------- +// TODO - file handled names and roles provisioning services client; maybe needs updating for b2c?? + using System; using System.Collections.Generic; using System.Linq; diff --git a/backend/Bindings/Edna.Bindings.LtiAdvantage/Services/OidcClient.cs b/backend/Bindings/Edna.Bindings.LtiAdvantage/Services/OidcClient.cs index e9abafd9..12ccd39a 100644 --- a/backend/Bindings/Edna.Bindings.LtiAdvantage/Services/OidcClient.cs +++ b/backend/Bindings/Edna.Bindings.LtiAdvantage/Services/OidcClient.cs @@ -3,6 +3,8 @@ // Licensed under the MIT license. // -------------------------------------------------------------------------------------------- +// TODO - File seems to define the open id client interface (this may need to be updated?) + using System.Collections.Specialized; using System.Web; using Edna.Bindings.LtiAdvantage.Models; diff --git a/backend/Bindings/Edna.Bindings.LtiAdvantage/Utils/LtiAdvantageExtensions.cs b/backend/Bindings/Edna.Bindings.LtiAdvantage/Utils/LtiAdvantageExtensions.cs index eaca58dd..c9c9ef1d 100644 --- a/backend/Bindings/Edna.Bindings.LtiAdvantage/Utils/LtiAdvantageExtensions.cs +++ b/backend/Bindings/Edna.Bindings.LtiAdvantage/Utils/LtiAdvantageExtensions.cs @@ -3,6 +3,8 @@ // Licensed under the MIT license. // -------------------------------------------------------------------------------------------- +// TODO - very important fiel seems to be responsible for the actual valid of the JWK Token + using System; using System.Collections.Generic; using System.IdentityModel.Tokens.Jwt; diff --git a/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs b/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs index 64957781..6c981ea5 100644 --- a/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs +++ b/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs @@ -190,6 +190,7 @@ public async Task ClearAssignmentLearnContent( User user = allUsers.FirstOrDefault(member => userEmails.Any(userEmail => (member.Email ?? String.Empty).Equals(userEmail))); if (user == null || !user.Role.Equals("teacher")) return new UnauthorizedResult(); + #endregion } List assignmentLearnContentEntities = await GetAllAssignmentLearnContentEntities(assignmentLearnContentTable, assignmentId); diff --git a/backend/Functions/Edna.Platforms/Edna.Platforms/PlatformsApi.cs b/backend/Functions/Edna.Platforms/Edna.Platforms/PlatformsApi.cs index a002fff1..b637f9d4 100644 --- a/backend/Functions/Edna.Platforms/Edna.Platforms/PlatformsApi.cs +++ b/backend/Functions/Edna.Platforms/Edna.Platforms/PlatformsApi.cs @@ -153,21 +153,25 @@ private bool ValidatePermission(HttpRequest req) // By checking appidacr claim, we can know if the call was made by a user or by the system. // https://docs.microsoft.com/en-us/azure/active-directory/develop/access-tokens string appidacr = claims.FirstOrDefault(claim => claim.Type == "appidacr")?.Value; + // made by system if (appidacr == "2") return true; + if (appidacr == "1") + return false; - if (appidacr == "0") - { - if (!TryGetUserEmails(claims, out List userEmails)) - { - _logger.LogError("Could not get any user email / uid for the current user."); - return false; - } + // TODO - find a more secure way of doing this: e.g. put the below in something saying (if appidacr == "0" OR this is a b2c token) with else being return false + // TODO- need to find a way to identify b2c tokens, same issue in HTTPCLaimsExtension.cs - return AllowedUsers.Intersect(userEmails).Any(); + // made by user so check they have permission + // return false if user does not exist + if (!TryGetUserEmails(claims, out List userEmails)) + { + _logger.LogError("Could not get any user email / uid for the current user."); + return false; } - return false; + // return value of if user email is in the allowed users list + return AllowedUsers.Intersect(userEmails).Any(); } private bool TryGetUserEmails(IEnumerable claims, out List userEmails) diff --git a/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/HttpClaimsExtension.cs b/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/HttpClaimsExtension.cs index c19e6e10..4ab5da72 100644 --- a/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/HttpClaimsExtension.cs +++ b/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/HttpClaimsExtension.cs @@ -35,18 +35,32 @@ private static bool GetClientAuthenticationType(Claim[] claims, out List // https://docs.microsoft.com/en-us/azure/active-directory/develop/access-tokens string appidacr = claims.FirstOrDefault(claim => claim.Type == "appidacr")?.Value; - switch (appidacr) - { - case "0": - return ParseUserEmailsFromClaims(claims, out userEmails); + // appidacr exists so this is an AAD token + if(appidacr != null){ + switch (appidacr) + { + case "0": + //appidacr 0: authenticate user using ParseUserEmails from claims + return ParseUserEmailsFromClaims(claims, out userEmails); + + case "2": + //appidacr 2: authed because its from server + return true; - case "2": - return true; + default: + //appidacr default: this is neither a valid call from user nor a valid server to server call + logAction?.Invoke("this is neither a valid call from user nor a valid server to server call"); + return false; + } + } - default: - logAction?.Invoke("this is neither a valid call from user nor a valid server to server call"); - return false; + // else appidacr is null so this is a B2C Token + else{ + //b2c authenticate user using ParseUserEmails from claims by default + return ParseUserEmailsFromClaims(claims, out userEmails); } + // TODO - at a later point add check that this is definitely a b2c token and then have the else to hadnle if it is neither AAD or B2C + // TODO- need to find a way to identify b2c tokens, same issue in PlatformApi.cs } private static bool ParseUserEmailsFromClaims(Claim[] claims, out List userEmails) From 5092ec50a14e81801945b14ba9034fbbfc577070 Mon Sep 17 00:00:00 2001 From: Sundram Goyal Date: Fri, 15 Jul 2022 12:44:30 +0100 Subject: [PATCH 067/285] asa --- deployment/Deploy.ps1 | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 8138a17b..64fd74b8 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -151,7 +151,13 @@ process { throw "Invalid Location Name Entered." } #endregion - + + Write-Title "Choose the authentication mode from below`r`n1.AD mode`r`n2.B2C mode" + [int]$ch = Read-Host "choose the mode by typing it's index (for eg: for AD mode, enter 1):" + + + + #region Create New App Registration in AzureAD Write-Title 'STEP #4 - Registering Azure Active Directory App' From 1a48441c9fe4456e3c940331ed5cc1826051015c Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Fri, 15 Jul 2022 17:03:04 +0100 Subject: [PATCH 068/285] Fixed bug in Limited-Install-Deploy due to 'uniqueIdentifier' producing nonunique values. Switched from picking random value in range to using the datetime second the script was ran --- deployment/Limited-Install-Deploy.ps1 | 31 ++++++++++++++++++++------ deployment/azuredeploy.json | 3 ++- deployment/azuredeployTemplate.json | Bin 0 -> 67156 bytes 3 files changed, 26 insertions(+), 8 deletions(-) create mode 100644 deployment/azuredeployTemplate.json diff --git a/deployment/Limited-Install-Deploy.ps1 b/deployment/Limited-Install-Deploy.ps1 index 99ae31f5..580812b3 100644 --- a/deployment/Limited-Install-Deploy.ps1 +++ b/deployment/Limited-Install-Deploy.ps1 @@ -28,6 +28,11 @@ process { } try { + #region "formatting a unique identifier to ensure we create a new keyvault for each run" + $uniqueIdentifier = [Int64]((Get-Date).ToString('yyyyMMddhhmmss')) #get the current second as being the unique identifier + ((Get-Content -path ".\azuredeployTemplate.json" -Raw) -replace '', ("'"+$uniqueIdentifier+"'")) | Set-Content -path (".\azuredeploy.json") + #endregion + #application ID and uri $clientId = "a15f3fac-c0e5-491f-8a17-41233e28ab8c" $apiURI = "api://a15f3fac-c0e5-491f-8a17-41233e28ab8c" @@ -132,7 +137,9 @@ process { else { $SubscriptionListOutput = $SubscriptionList | Select-Object @{ l="Subscription Name"; e={ $_.name } }, "id", "isDefault" Write-Host ($SubscriptionListOutput | Out-String) - $SubscriptionNameOrId = Read-Host 'Enter the Name or ID of the Subscription from Above List' + # $SubscriptionNameOrId = Read-Host 'Enter the Name or ID of the Subscription from Above List' #TODO - UNCOMMENT + $SubscriptionNameOrId = "COMP0111 2021-22 Project_Warren_Buhler" #TODO - REMOVE + #trimming the input for empty spaces, if any $SubscriptionNameOrId = $SubscriptionNameOrId.Trim() Write-Log -Message "User Entered Subscription Name/ID: $SubscriptionNameOrId" @@ -145,10 +152,12 @@ process { #region Choosing AAD app to update Write-Title ' Choose an Azure Active Directory App to update' - $AppName = Read-Host 'Enter the Name for Application' + # $AppName = Read-Host 'Enter the Name for Application' #TODO - UNCOMMENT + $AppName = "RB_policy1_MS-Learn-Lti-Tool-App" #TODO - REMOVE $AppName = $AppName.Trim() - $clientId = Read-Host 'Enter the Client ID of your registered application' + # $clientId = Read-Host 'Enter the Client ID of your registered application' #TODO - UNCOMMENT + $clientId = "3d440bc7-87f5-4600-8814-698b895d14d7" #TODO - REMOVE $clientId = $clientId.Trim() Write-Host "Checking if Application exists...." @@ -174,7 +183,8 @@ process { #region Choose Resource Group of above application Write-Title ' Choose a Resource Group to update' - $ResourceGroupName = Read-Host 'Enter the Name of Resource Group' + # $ResourceGroupName = Read-Host 'Enter the Name of Resource Group' # TODO - UNCOMMENT + $ResourceGroupName = "RB_policy1_MSLearnLTI" #TODO - REMOVE $ResourceGroupName = $ResourceGroupName.Trim() Write-Host "Checking If entered Resource Group exists...." $checkResourceGroupExist = (az group exists --resource-group $ResourceGroupName) @@ -198,7 +208,8 @@ process { if(!$LocationName) { Write-Host "$(az account list-locations --output table --query "[].{Name:name}" | Out-String)`n" - $LocationName = Read-Host 'Enter Location From Above List for Resource Provisioning' + # $LocationName = Read-Host 'Enter Location From Above List for Resource Provisioning' #TODO - UNCOMMENT + $LocationName = "uksouth" #TODO - REMOVE #trimming the input for empty spaces, if any $LocationName = $LocationName.Trim() } @@ -219,9 +230,15 @@ process { #region Provision Resources inside Resource Group on Azure using ARM template Write-Title 'STEP #6 - Creating Resources in Azure' + [int]$azver0= (az version | ConvertFrom-Json | Select -ExpandProperty "azure-cli").Split(".")[0] + [int]$azver1= (az version | ConvertFrom-Json | Select -ExpandProperty "azure-cli").Split(".")[1] + if( $azver0 -ge 2 -and $azver1 -ge 37){ + $userObjectId = az ad signed-in-user show --query id + } + else { $userObjectId = az ad signed-in-user show --query objectId - #$userObjectId - + } + $templateFileName = "azuredeploy.json" $deploymentName = "Deployment-$ExecutionStartTime" diff --git a/deployment/azuredeploy.json b/deployment/azuredeploy.json index b25e4dac..084af9b9 100644 --- a/deployment/azuredeploy.json +++ b/deployment/azuredeploy.json @@ -20,7 +20,7 @@ } }, "variables": { - "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, '80'),0,9)]", + "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, '20220715045557'),0,9)]", "functionList": [ "connect", "assignments", @@ -547,3 +547,4 @@ } } } + diff --git a/deployment/azuredeployTemplate.json b/deployment/azuredeployTemplate.json new file mode 100644 index 0000000000000000000000000000000000000000..15ee93e877c894596d83e229bdcb655af2f22ba8 GIT binary patch literal 67156 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�C2S^0i*4uY{3C5*kLFP=R?=Z*7bJql`Kut0$YOi6?0v6lJnA`D&X*uFgR^0qs*l%7&|LOJp0v*cOopxgx|MfwY z6WG@?e3lt6Qe$ZTAB^yVD!;Yb6Mkam=>9aCsarH{IWlcIiWpCy^u$D`ArD`2mzKS_ zL=iC~O*r>72fCc$Fa4NPTwVMzewSE|0c{&gy~IiZ^+DrwH1k60AT43u2(1tc(J%&g zvNBk&#d%b@YBo941Gn$o>2^E>TlyQ)4OOVRSH?`IhKH9%-o0o&W-2ThUz?dz%v@y* zbZQW#>iikiH172#F`4rG=a)e4#S(8}bc+a)N_5Cub9<(r{n}H%b+2Vw)qPGsk86wX zyL{>S9E`D=$jaBfjwE*>ze=H#txmS);J=lvzHntxwN2QMQ4Qc;LwNtq*e;!AIyQbj zSN?P|=8jU#XJ#pLR#|=jat@j%`xRp&r!C$fiZetm65~>?3$j@(%ecdtJLV$FoDuO& zoss6qgrzjb%NHL^z5FKd%oFs7$n1jSSC-=;g2(V3q9J~)Vw!W~;v%k_#Ytm4{aK}S zNXl;lw^XTQUcfPUeSlxZX7aeDpTd*`M(gzUw?`6QR#rWGEKztdM$(xgL9UyRAl*|~ z{QaJ885Sfqdp8V*vBEeu=AY3Q7*~PB64kTo}UZF0$q>?d;yk@(HPI&Y zAGPCPq>}^<8X6?NU7f_JR%#Y)r8S50AEs41`J?mp!A)b6Kfxxq tPc`~OO`QoA7x_173F$-S{hl54hti{Zq-lK>_O#maow6R4c*XMf{{a-Z9n$~+ literal 0 HcmV?d00001 From 933ad417a597b680923b53279c6252592852571c Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Sat, 16 Jul 2022 23:07:41 +0100 Subject: [PATCH 069/285] got authorization working again --- client/src/Core/Auth/AppAuthConfig.ts | 6 ++++-- client/src/Core/Auth/policies.ts | 15 ++++++++------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/client/src/Core/Auth/AppAuthConfig.ts b/client/src/Core/Auth/AppAuthConfig.ts index 8e21855e..d084d9a1 100644 --- a/client/src/Core/Auth/AppAuthConfig.ts +++ b/client/src/Core/Auth/AppAuthConfig.ts @@ -17,7 +17,8 @@ const authLogCallback = (level: LogLevel, message: string, _containsPii: boolean const configuration: Configuration = { auth: { - clientId: process.env.REACT_APP_EDNA_AUTH_CLIENT_ID!, //process.env.REACT_APP_EDNA_AAD_CLIENT_ID! + //clientId: process.env.REACT_APP_EDNA_AUTH_CLIENT_ID!, //process.env.REACT_APP_EDNA_AAD_CLIENT_ID! + clientId: '0cd1d1d6-a7aa-41e2-b569-1ca211147973', // TODO: don't hardcode redirectUri: process.env.REACT_APP_EDNA_MAIN_URL!, authority: b2cPolicies.authorities.signIn.authority, navigateToLoginRequestUrl: true, @@ -33,7 +34,8 @@ const configuration: Configuration = { }; const authParams: AuthenticationParameters = { - scopes: ['https://' + process.env.REACT_APP_EDNA_B2C_TENANT! + '.onmicrosoft.com/api/b2c.read'] // RB: 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read' + //scopes: ['https://' + process.env.REACT_APP_EDNA_B2C_TENANT! + '.onmicrosoft.com/api/b2c.read'] // RB: 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read' + scopes: ['https://ltimoodleb2c.onmicrosoft.com/api/b2c.read'] // RB: 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read' }; const options: IMsalAuthProviderConfig = { diff --git a/client/src/Core/Auth/policies.ts b/client/src/Core/Auth/policies.ts index 4b505098..ef620c5e 100644 --- a/client/src/Core/Auth/policies.ts +++ b/client/src/Core/Auth/policies.ts @@ -10,13 +10,14 @@ export const b2cPolicies = { }, authorities: { signIn: { - authority: - `https://` + - process.env.REACT_APP_EDNA_B2C_TENANT! + - `.b2clogin.com/` + - process.env.REACT_APP_EDNA_B2C_TENANT! + - '.onmicrosoft.com/b2c_1a_signup_signin' + authority: `https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin` + // `https://` + + // process.env.REACT_APP_EDNA_B2C_TENANT! + + // `.b2clogin.com/` + + // process.env.REACT_APP_EDNA_B2C_TENANT! + + // '.onmicrosoft.com/b2c_1a_signup_signin' } }, - authorityDomain: process.env.REACT_APP_EDNA_B2C_TENANT! + `.b2clogin.com/` // RB: don't hardcode + authorityDomain: `ltimoodleb2c.b2clogin.com` + //authorityDomain: process.env.REACT_APP_EDNA_B2C_TENANT! + `.b2clogin.com` // RB: don't hardcode }; From dbda0074b3ed9ebf4722f8adce055c17285b0ffd Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Sun, 17 Jul 2022 10:48:22 +0100 Subject: [PATCH 070/285] update for running --- client/.env.production | 19 ++++++++----------- deployment/Cleanup.ps1 | 4 ++-- deployment/Deploy.ps1 | 4 ++-- deployment/Limited-Install-Deploy.ps1 | 11 ++++------- deployment/azuredeploy.json | 2 +- 5 files changed, 17 insertions(+), 23 deletions(-) diff --git a/client/.env.production b/client/.env.production index 7e652be8..c2be420b 100644 --- a/client/.env.production +++ b/client/.env.production @@ -1,13 +1,10 @@ GENERATE_SOURCEMAP='false' -REACT_APP_EDNA_PLATFORM_SERVICE_URL='https://platforms-suda4znvd.azurewebsites.net/api' -REACT_APP_EDNA_USERS_SERVICE_URL='https://users-suda4znvd.azurewebsites.net/api' -REACT_APP_EDNA_LEARN_CONTENT='https://learncontent-suda4znvd.azurewebsites.net/api' -REACT_APP_EDNA_LINKS_SERVICE_URL='https://links-suda4znvd.azurewebsites.net/api' -REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL='https://assignments-suda4znvd.azurewebsites.net/api' +REACT_APP_EDNA_PLATFORM_SERVICE_URL='https://platforms-znvwm425a.azurewebsites.net/api' +REACT_APP_EDNA_USERS_SERVICE_URL='https://users-znvwm425a.azurewebsites.net/api' +REACT_APP_EDNA_LEARN_CONTENT='https://learncontent-znvwm425a.azurewebsites.net/api' +REACT_APP_EDNA_LINKS_SERVICE_URL='https://links-znvwm425a.azurewebsites.net/api' +REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL='https://assignments-znvwm425a.azurewebsites.net/api' REACT_APP_EDNA_TENANT_ID='21510bb9-6414-46d0-9a07-1faf98f25937' -REACT_APP_EDNA_DEFAULT_SCOPE='api://3d440bc7-87f5-4600-8814-698b895d14d7/user_impersonation' -REACT_APP_EDNA_MAIN_URL='https://learnclientsuda4znvd.z33.web.core.windows.net/' -REACT_APP_EDNA_AAD_CLIENT_ID='3d440bc7-87f5-4600-8814-698b895d14d7' -REACT_APP_EDNA_B2C_CLIENT_ID='0cd1d1d6-a7aa-41e2-b569-1ca211147973' -REACT_APP_EDNA_B2C_TENANT='ltimoodleb2c' -REACT_APP_EDNA_AUTH_CLIENT_ID='0cd1d1d6-a7aa-41e2-b569-1ca211147973' +REACT_APP_EDNA_DEFAULT_SCOPE='api://c9180be0-6a72-4bd4-9d5a-9e649a24688c/user_impersonation' +REACT_APP_EDNA_MAIN_URL='https://learnclientznvwm425a.z33.web.core.windows.net/' +REACT_APP_EDNA_AAD_CLIENT_ID='c9180be0-6a72-4bd4-9d5a-9e649a24688c' diff --git a/deployment/Cleanup.ps1 b/deployment/Cleanup.ps1 index 3ef2c8e2..5fc599e8 100644 --- a/deployment/Cleanup.ps1 +++ b/deployment/Cleanup.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "RB_a2_MSLearnLTI", - [string]$AppName = "RB_a2_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "RB_policy2_MSLearnLTI", + [string]$AppName = "RB_policy2_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null ) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 8138a17b..d9856749 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "RB_a2_MSLearnLTI", - [string]$AppName = "RB_a2_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "RB_policy2_MSLearnLTI", + [string]$AppName = "RB_policy2_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null diff --git a/deployment/Limited-Install-Deploy.ps1 b/deployment/Limited-Install-Deploy.ps1 index 99ae31f5..fd76b0df 100644 --- a/deployment/Limited-Install-Deploy.ps1 +++ b/deployment/Limited-Install-Deploy.ps1 @@ -13,8 +13,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "RB_a3_MSLearnLTI", - [string]$AppName = "RB_a3_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "RB_policy2_MSLearnLTI", + [string]$AppName = "RB_policy2_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null @@ -29,8 +29,8 @@ process { try { #application ID and uri - $clientId = "a15f3fac-c0e5-491f-8a17-41233e28ab8c" - $apiURI = "api://a15f3fac-c0e5-491f-8a17-41233e28ab8c" + $clientId = "c9180be0-6a72-4bd4-9d5a-9e649a24688c" + $apiURI = "api://c9180be0-6a72-4bd4-9d5a-9e649a24688c" #region Show Learn LTI Banner Write-Host '' @@ -225,9 +225,6 @@ process { $templateFileName = "azuredeploy.json" $deploymentName = "Deployment-$ExecutionStartTime" - $templateFileName = "azuredeploy.json" - $deploymentName = "Deployment-$ExecutionStartTime" - Write-Log -Message "Deploying ARM Template to Azure inside ResourceGroup: $ResourceGroupName with DeploymentName: $deploymentName, TemplateFile: $templateFileName, AppClientId: $clientId, IdentifiedURI: $apiURI" $deploymentOutput = (az deployment group create --resource-group $ResourceGroupName --name $deploymentName --template-file $templateFileName --parameters appRegistrationClientId=$clientId appRegistrationApiURI=$apiURI userEmailAddress=$($UserEmailAddress) userObjectId=$($userObjectId)) | ConvertFrom-Json; if(!$deploymentOutput) { diff --git a/deployment/azuredeploy.json b/deployment/azuredeploy.json index b25e4dac..99f64047 100644 --- a/deployment/azuredeploy.json +++ b/deployment/azuredeploy.json @@ -20,7 +20,7 @@ } }, "variables": { - "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, '80'),0,9)]", + "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id),0,9)]", "functionList": [ "connect", "assignments", From ce1f4b05ce2c14bf29d78a1eeb94d07b3f712ab1 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Sun, 17 Jul 2022 18:47:36 +0100 Subject: [PATCH 071/285] can call out and get into function code --- client/src/Core/Auth/AppAuthConfig.ts | 5 ++- client/src/Services/Platform.service.ts | 4 ++- deployment/Limited-Install-Deploy.ps1 | 45 ++++++++++++++++++------- 3 files changed, 40 insertions(+), 14 deletions(-) diff --git a/client/src/Core/Auth/AppAuthConfig.ts b/client/src/Core/Auth/AppAuthConfig.ts index d084d9a1..7c0c088e 100644 --- a/client/src/Core/Auth/AppAuthConfig.ts +++ b/client/src/Core/Auth/AppAuthConfig.ts @@ -35,7 +35,10 @@ const configuration: Configuration = { const authParams: AuthenticationParameters = { //scopes: ['https://' + process.env.REACT_APP_EDNA_B2C_TENANT! + '.onmicrosoft.com/api/b2c.read'] // RB: 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read' - scopes: ['https://ltimoodleb2c.onmicrosoft.com/api/b2c.read'] // RB: 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read' + scopes: [ + //'https://ltimoodleb2c.onmicrosoft.com/api/user_impersonation', + 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read' + ] // RB: 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read' }; const options: IMsalAuthProviderConfig = { diff --git a/client/src/Services/Platform.service.ts b/client/src/Services/Platform.service.ts index 61b019c0..8bf1c92a 100644 --- a/client/src/Services/Platform.service.ts +++ b/client/src/Services/Platform.service.ts @@ -10,10 +10,12 @@ import { ServiceError } from '../Core/Utils/Axios/ServiceError'; class PlatformServiceClass { public async getAllPlatforms(): Promise> { + console.log(`calling all platforms`); const allPlatformsResponse = await axios.get( `${process.env.REACT_APP_EDNA_PLATFORM_SERVICE_URL}/platforms` ); - + console.log(allPlatformsResponse); + console.log(`finished calling get all platforms`); return safeData(allPlatformsResponse); } diff --git a/deployment/Limited-Install-Deploy.ps1 b/deployment/Limited-Install-Deploy.ps1 index 580812b3..e58620c6 100644 --- a/deployment/Limited-Install-Deploy.ps1 +++ b/deployment/Limited-Install-Deploy.ps1 @@ -13,8 +13,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "RB_a3_MSLearnLTI", - [string]$AppName = "RB_a3_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "RB_policy2_MSLearnLTI", + [string]$AppName = "RB_policy2_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null @@ -29,13 +29,13 @@ process { try { #region "formatting a unique identifier to ensure we create a new keyvault for each run" - $uniqueIdentifier = [Int64]((Get-Date).ToString('yyyyMMddhhmmss')) #get the current second as being the unique identifier - ((Get-Content -path ".\azuredeployTemplate.json" -Raw) -replace '', ("'"+$uniqueIdentifier+"'")) | Set-Content -path (".\azuredeploy.json") + #$uniqueIdentifier = [Int64]((Get-Date).ToString('yyyyMMddhhmmss')) #get the current second as being the unique identifier + #((Get-Content -path ".\azuredeployTemplate.json" -Raw) -replace '', ("'"+$uniqueIdentifier+"'")) | Set-Content -path (".\azuredeploy.json") #endregion #application ID and uri - $clientId = "a15f3fac-c0e5-491f-8a17-41233e28ab8c" - $apiURI = "api://a15f3fac-c0e5-491f-8a17-41233e28ab8c" + $clientId = "7979bcbb-c70b-46f0-b229-0e3f9cec56a5" + $apiURI = "api://7979bcbb-c70b-46f0-b229-0e3f9cec56a5" #region Show Learn LTI Banner Write-Host '' @@ -153,11 +153,11 @@ process { #region Choosing AAD app to update Write-Title ' Choose an Azure Active Directory App to update' # $AppName = Read-Host 'Enter the Name for Application' #TODO - UNCOMMENT - $AppName = "RB_policy1_MS-Learn-Lti-Tool-App" #TODO - REMOVE + $AppName = "RB_policy2_MS-Learn-Lti-Tool-App" #TODO - REMOVE $AppName = $AppName.Trim() # $clientId = Read-Host 'Enter the Client ID of your registered application' #TODO - UNCOMMENT - $clientId = "3d440bc7-87f5-4600-8814-698b895d14d7" #TODO - REMOVE + #$clientId = "3d440bc7-87f5-4600-8814-698b895d14d7" #TODO - REMOVE $clientId = $clientId.Trim() Write-Host "Checking if Application exists...." @@ -184,7 +184,7 @@ process { Write-Title ' Choose a Resource Group to update' # $ResourceGroupName = Read-Host 'Enter the Name of Resource Group' # TODO - UNCOMMENT - $ResourceGroupName = "RB_policy1_MSLearnLTI" #TODO - REMOVE + #$ResourceGroupName = "RB_policy1_MSLearnLTI" #TODO - REMOVE $ResourceGroupName = $ResourceGroupName.Trim() Write-Host "Checking If entered Resource Group exists...." $checkResourceGroupExist = (az group exists --resource-group $ResourceGroupName) @@ -242,9 +242,6 @@ process { $templateFileName = "azuredeploy.json" $deploymentName = "Deployment-$ExecutionStartTime" - $templateFileName = "azuredeploy.json" - $deploymentName = "Deployment-$ExecutionStartTime" - Write-Log -Message "Deploying ARM Template to Azure inside ResourceGroup: $ResourceGroupName with DeploymentName: $deploymentName, TemplateFile: $templateFileName, AppClientId: $clientId, IdentifiedURI: $apiURI" $deploymentOutput = (az deployment group create --resource-group $ResourceGroupName --name $deploymentName --template-file $templateFileName --parameters appRegistrationClientId=$clientId appRegistrationApiURI=$apiURI userEmailAddress=$($UserEmailAddress) userObjectId=$($userObjectId)) | ConvertFrom-Json; if(!$deploymentOutput) { @@ -306,6 +303,30 @@ process { #region Build and Publish Client Artifacts Write-Title '======== Successfully Deployed Resources to Azure ===========' + + Write-Title '======== the Client deploy to Azure ===========' + + . .\Install-Client.ps1 + Write-Title "STEP #11 - Updating client's .env.production file" + + $ClientUpdateConfigParams = @{ + ConfigPath="../client/.env.production"; + AppId=$clientId; + LearnContentFunctionAppName=$deploymentOutput.properties.outputs.LearnContentFunctionName.value; + LinksFunctionAppName=$deploymentOutput.properties.outputs.LinksFunctionName.value; + AssignmentsFunctionAppName=$deploymentOutput.properties.outputs.AssignmentsFunctionName.value; + PlatformsFunctionAppName=$deploymentOutput.properties.outputs.PlatformsFunctionName.value; + UsersFunctionAppName=$deploymentOutput.properties.outputs.UsersFunctionName.value; + StaticWebsiteUrl=$deploymentOutput.properties.outputs.webClientURL.value; + } + Update-ClientConfig @ClientUpdateConfigParams + + Write-Title 'STEP #12 - Installing the client' + $ClientInstallParams = @{ + SourceRoot="../client"; + StaticWebsiteStorageAccount=$deploymentOutput.properties.outputs.StaticWebSiteName.value + } + Install-Client @ClientInstallParams Write-Log -Message "Deployment Complete" } From 81f4e10d1eeef59505804b03c7e7a2c421c7b8e6 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Mon, 18 Jul 2022 15:15:29 +0100 Subject: [PATCH 072/285] auth changes --- client/src/Core/Auth/AppAuthConfig.ts | 3 ++- client/src/Core/Auth/policies.ts | 7 +++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/client/src/Core/Auth/AppAuthConfig.ts b/client/src/Core/Auth/AppAuthConfig.ts index 7c0c088e..f2f34158 100644 --- a/client/src/Core/Auth/AppAuthConfig.ts +++ b/client/src/Core/Auth/AppAuthConfig.ts @@ -36,9 +36,10 @@ const configuration: Configuration = { const authParams: AuthenticationParameters = { //scopes: ['https://' + process.env.REACT_APP_EDNA_B2C_TENANT! + '.onmicrosoft.com/api/b2c.read'] // RB: 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read' scopes: [ + // TODO: unclear what is needed for custom policies //'https://ltimoodleb2c.onmicrosoft.com/api/user_impersonation', 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read' - ] // RB: 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read' + ] }; const options: IMsalAuthProviderConfig = { diff --git a/client/src/Core/Auth/policies.ts b/client/src/Core/Auth/policies.ts index ef620c5e..64a2c93f 100644 --- a/client/src/Core/Auth/policies.ts +++ b/client/src/Core/Auth/policies.ts @@ -6,11 +6,14 @@ export const b2cPolicies = { names: { - signIn: 'B2C_1A_SIGNUP_SIGNIN' + //signIn: 'B2C_1A_SIGNUP_SIGNIN' // custom policy + signin: `B2C_1_signup_signin_LTI` // user flow }, authorities: { signIn: { - authority: `https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin` + //authority: `https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/B2C_1A_SIGNUP_SIGNIN` // custom policy + authority: `https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/B2C_1_signup_signin_LTI` // user flow + // user flow: // `https://` + // process.env.REACT_APP_EDNA_B2C_TENANT! + // `.b2clogin.com/` + From b46c62e942e3b2caf76b6e35cfa843e4347abc18 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Mon, 18 Jul 2022 16:53:58 +0100 Subject: [PATCH 073/285] Using azure cosmos tables now -- logging works --- .../AssignmentLearnContentApi.cs | 2 +- .../AssignmentLearnContentEntity.cs | 2 +- .../Edna.AssignmentLearnContent.csproj | 2 +- .../Edna.AssignmentLearnContent/Profile.cs | 2 +- .../Edna.AssignmentLinks/AssignmentLinkEntity.cs | 2 +- .../Edna.AssignmentLinks/AssignmentLinksApi.cs | 2 +- .../Edna.AssignmentLinks.csproj | 2 +- .../Edna.Assignments/AssignmentDtoExtensions.cs | 2 +- .../Edna.Assignments/AssignmentEntity.cs | 2 +- .../Edna.Assignments/AssignmentsApi.cs | 2 +- .../Edna.Assignments/Edna.Assignments.csproj | 2 +- .../Edna.Platforms/PlatformEntity.cs | 2 +- .../Edna.Platforms/PlatformsApi.cs | 10 +++++++++- deployment/azuredeploy.json | 16 ++++++++++++++-- 14 files changed, 35 insertions(+), 15 deletions(-) diff --git a/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs b/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs index 6c981ea5..4e9e30cd 100644 --- a/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs +++ b/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs @@ -17,7 +17,7 @@ using Microsoft.Azure.WebJobs.Extensions.Http; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Logging; -using Microsoft.WindowsAzure.Storage.Table; +using Microsoft.Azure.Cosmos.Table; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Edna.Utils.Http; diff --git a/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentEntity.cs b/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentEntity.cs index 3371182b..673493e1 100644 --- a/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentEntity.cs +++ b/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentEntity.cs @@ -3,7 +3,7 @@ // Licensed under the MIT license. // -------------------------------------------------------------------------------------------- -using Microsoft.WindowsAzure.Storage.Table; +using Microsoft.Azure.Cosmos.Table; namespace Edna.AssignmentLearnContent { diff --git a/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent.csproj b/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent.csproj index 9108c177..11c14940 100644 --- a/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent.csproj +++ b/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent.csproj @@ -7,7 +7,7 @@ - + diff --git a/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/Profile.cs b/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/Profile.cs index 6363e99a..89e1979a 100644 --- a/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/Profile.cs +++ b/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/Profile.cs @@ -3,7 +3,7 @@ // Licensed under the MIT license. // -------------------------------------------------------------------------------------------- -using Microsoft.WindowsAzure.Storage.Table; +using Microsoft.Azure.Cosmos.Table; namespace Edna.AssignmentLearnContent { diff --git a/backend/Functions/Edna.AssignmentLinks/Edna.AssignmentLinks/AssignmentLinkEntity.cs b/backend/Functions/Edna.AssignmentLinks/Edna.AssignmentLinks/AssignmentLinkEntity.cs index 459fdfed..c5f84afb 100644 --- a/backend/Functions/Edna.AssignmentLinks/Edna.AssignmentLinks/AssignmentLinkEntity.cs +++ b/backend/Functions/Edna.AssignmentLinks/Edna.AssignmentLinks/AssignmentLinkEntity.cs @@ -3,7 +3,7 @@ // Licensed under the MIT license. // -------------------------------------------------------------------------------------------- -using Microsoft.WindowsAzure.Storage.Table; +using Microsoft.Azure.Cosmos.Table; using System.ComponentModel.DataAnnotations; namespace Edna.AssignmentLinks diff --git a/backend/Functions/Edna.AssignmentLinks/Edna.AssignmentLinks/AssignmentLinksApi.cs b/backend/Functions/Edna.AssignmentLinks/Edna.AssignmentLinks/AssignmentLinksApi.cs index 2cee97a4..2c2856f3 100644 --- a/backend/Functions/Edna.AssignmentLinks/Edna.AssignmentLinks/AssignmentLinksApi.cs +++ b/backend/Functions/Edna.AssignmentLinks/Edna.AssignmentLinks/AssignmentLinksApi.cs @@ -15,7 +15,7 @@ using Microsoft.Azure.WebJobs.Extensions.Http; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Logging; -using Microsoft.WindowsAzure.Storage.Table; +using Microsoft.Azure.Cosmos.Table; using Newtonsoft.Json; using Edna.Utils.Http; using Edna.Bindings.User.Attributes; diff --git a/backend/Functions/Edna.AssignmentLinks/Edna.AssignmentLinks/Edna.AssignmentLinks.csproj b/backend/Functions/Edna.AssignmentLinks/Edna.AssignmentLinks/Edna.AssignmentLinks.csproj index 3707819f..48ca71c6 100644 --- a/backend/Functions/Edna.AssignmentLinks/Edna.AssignmentLinks/Edna.AssignmentLinks.csproj +++ b/backend/Functions/Edna.AssignmentLinks/Edna.AssignmentLinks/Edna.AssignmentLinks.csproj @@ -6,7 +6,7 @@ - + diff --git a/backend/Functions/Edna.Assignments/Edna.Assignments/AssignmentDtoExtensions.cs b/backend/Functions/Edna.Assignments/Edna.Assignments/AssignmentDtoExtensions.cs index 77250ae1..194ada4a 100644 --- a/backend/Functions/Edna.Assignments/Edna.Assignments/AssignmentDtoExtensions.cs +++ b/backend/Functions/Edna.Assignments/Edna.Assignments/AssignmentDtoExtensions.cs @@ -4,7 +4,7 @@ // -------------------------------------------------------------------------------------------- using Microsoft.Extensions.Logging; -using Microsoft.WindowsAzure.Storage.Table; +using Microsoft.Azure.Cosmos.Table; using System; using System.Text; diff --git a/backend/Functions/Edna.Assignments/Edna.Assignments/AssignmentEntity.cs b/backend/Functions/Edna.Assignments/Edna.Assignments/AssignmentEntity.cs index 85740305..5d01ee54 100644 --- a/backend/Functions/Edna.Assignments/Edna.Assignments/AssignmentEntity.cs +++ b/backend/Functions/Edna.Assignments/Edna.Assignments/AssignmentEntity.cs @@ -4,7 +4,7 @@ // -------------------------------------------------------------------------------------------- using System; -using Microsoft.WindowsAzure.Storage.Table; +using Microsoft.Azure.Cosmos.Table; namespace Edna.Assignments { diff --git a/backend/Functions/Edna.Assignments/Edna.Assignments/AssignmentsApi.cs b/backend/Functions/Edna.Assignments/Edna.Assignments/AssignmentsApi.cs index 4695d5a5..663b78b2 100644 --- a/backend/Functions/Edna.Assignments/Edna.Assignments/AssignmentsApi.cs +++ b/backend/Functions/Edna.Assignments/Edna.Assignments/AssignmentsApi.cs @@ -14,7 +14,7 @@ using Microsoft.Azure.WebJobs; using Microsoft.Azure.WebJobs.Extensions.Http; using Microsoft.Extensions.Logging; -using Microsoft.WindowsAzure.Storage.Table; +using Microsoft.Azure.Cosmos.Table; using Newtonsoft.Json; using Edna.Utils.Http; using System.Collections.Generic; diff --git a/backend/Functions/Edna.Assignments/Edna.Assignments/Edna.Assignments.csproj b/backend/Functions/Edna.Assignments/Edna.Assignments/Edna.Assignments.csproj index b96c1407..1685d683 100644 --- a/backend/Functions/Edna.Assignments/Edna.Assignments/Edna.Assignments.csproj +++ b/backend/Functions/Edna.Assignments/Edna.Assignments/Edna.Assignments.csproj @@ -6,7 +6,7 @@ - + diff --git a/backend/Functions/Edna.Platforms/Edna.Platforms/PlatformEntity.cs b/backend/Functions/Edna.Platforms/Edna.Platforms/PlatformEntity.cs index 5c89c5cb..e248f49b 100644 --- a/backend/Functions/Edna.Platforms/Edna.Platforms/PlatformEntity.cs +++ b/backend/Functions/Edna.Platforms/Edna.Platforms/PlatformEntity.cs @@ -3,7 +3,7 @@ // Licensed under the MIT license. // -------------------------------------------------------------------------------------------- -using Microsoft.WindowsAzure.Storage.Table; +using Microsoft.Azure.Cosmos.Table; namespace Edna.Platforms { diff --git a/backend/Functions/Edna.Platforms/Edna.Platforms/PlatformsApi.cs b/backend/Functions/Edna.Platforms/Edna.Platforms/PlatformsApi.cs index b637f9d4..09139fd9 100644 --- a/backend/Functions/Edna.Platforms/Edna.Platforms/PlatformsApi.cs +++ b/backend/Functions/Edna.Platforms/Edna.Platforms/PlatformsApi.cs @@ -18,7 +18,7 @@ using Microsoft.Azure.WebJobs.Extensions.Http; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Logging; -using Microsoft.WindowsAzure.Storage.Table; +using Microsoft.Azure.Cosmos.Table; using System.Text; using System.Security.Cryptography; using Newtonsoft.Json; @@ -147,6 +147,8 @@ private bool ValidatePermission(HttpRequest req) return true; #endif + _logger.LogInformation("In validate"); + if (!req.Headers.TryGetTokenClaims(out Claim[] claims, message => _logger.LogError(message))) return false; @@ -188,6 +190,12 @@ private bool TryGetUserEmails(IEnumerable claims, out List userEm .Select(claim => claim.Value) .Distinct() .ToList(); + + _logger.LogInformation("In get user"); + // string emails = claimsArray.FirstOrDefault(claim => claim.Type == "emails").Value; + // string[] emailsCollection = emails.Split(","); + // userEmails.Concat(emailsCollection); + return userEmails.Any(); } diff --git a/deployment/azuredeploy.json b/deployment/azuredeploy.json index 084af9b9..acb0d415 100644 --- a/deployment/azuredeploy.json +++ b/deployment/azuredeploy.json @@ -20,7 +20,7 @@ } }, "variables": { - "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, '20220715045557'),0,9)]", + "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id),0,9)]", "functionList": [ "connect", "assignments", @@ -172,7 +172,19 @@ "wellKnownOpenIdConfiguration": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/B2C_1_signup_signin_LTI/v2.0/.well-known/openid-configuration" } } - } + }, + "AzureB2CCustomerPolicy": + { + "registration": { + "clientId": "0cd1d1d6-a7aa-41e2-b569-1ca211147973", + "clientCredential": { + "clientSecretSettingName": "AzureB2C_AUTHENTICATION_SECRET" + }, + "openIdConnectConfiguration": { + "wellKnownOpenIdConfiguration": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/B2C_1_signup_signin_LTI/v2.0/.well-known/openid-configuration?p=B2C_1A_SIGNUP_SIGNIN" + } + } + } } }, "login": { From 54fbd1a6c948d8c407fa070f40c650e50f920823 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Mon, 18 Jul 2022 17:32:58 +0100 Subject: [PATCH 074/285] working user flow into platforms --- .../Functions/Edna.Platforms/Edna.Platforms/PlatformsApi.cs | 5 +++-- deployment/Limited-Install-Deploy.ps1 | 5 ++--- deployment/azuredeploy.json | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/backend/Functions/Edna.Platforms/Edna.Platforms/PlatformsApi.cs b/backend/Functions/Edna.Platforms/Edna.Platforms/PlatformsApi.cs index 09139fd9..ea7e6ca9 100644 --- a/backend/Functions/Edna.Platforms/Edna.Platforms/PlatformsApi.cs +++ b/backend/Functions/Edna.Platforms/Edna.Platforms/PlatformsApi.cs @@ -29,7 +29,7 @@ public class PlatformsApi { private const string PlatformsTableName = "Platforms"; - private static readonly string[] PossibleEmailClaimTypes = { "email", "upn", "unique_name" }; + private static readonly string[] PossibleEmailClaimTypes = { "email", "emails", "upn", "unique_name" }; private static readonly string ConnectApiBaseUrl = Environment.GetEnvironmentVariable("ConnectApiBaseUrl").TrimEnd('/'); private static readonly string[] AllowedUsers = Environment.GetEnvironmentVariable("AllowedUsers")?.Split(";") ?? new string[0]; @@ -171,7 +171,8 @@ private bool ValidatePermission(HttpRequest req) _logger.LogError("Could not get any user email / uid for the current user."); return false; } - + _logger.LogInformation(String.Join(",",userEmails)); + _logger.LogInformation(String.Join(",",AllowedUsers)); // return value of if user email is in the allowed users list return AllowedUsers.Intersect(userEmails).Any(); } diff --git a/deployment/Limited-Install-Deploy.ps1 b/deployment/Limited-Install-Deploy.ps1 index e58620c6..670b23c9 100644 --- a/deployment/Limited-Install-Deploy.ps1 +++ b/deployment/Limited-Install-Deploy.ps1 @@ -34,8 +34,8 @@ process { #endregion #application ID and uri - $clientId = "7979bcbb-c70b-46f0-b229-0e3f9cec56a5" - $apiURI = "api://7979bcbb-c70b-46f0-b229-0e3f9cec56a5" + $clientId = "1ea637ca-5c43-4742-b590-f3c084af99d2" + $apiURI = "api://1ea637ca-5c43-4742-b590-f3c084af99d2" #region Show Learn LTI Banner Write-Host '' @@ -153,7 +153,6 @@ process { #region Choosing AAD app to update Write-Title ' Choose an Azure Active Directory App to update' # $AppName = Read-Host 'Enter the Name for Application' #TODO - UNCOMMENT - $AppName = "RB_policy2_MS-Learn-Lti-Tool-App" #TODO - REMOVE $AppName = $AppName.Trim() # $clientId = Read-Host 'Enter the Client ID of your registered application' #TODO - UNCOMMENT diff --git a/deployment/azuredeploy.json b/deployment/azuredeploy.json index acb0d415..dcca3e50 100644 --- a/deployment/azuredeploy.json +++ b/deployment/azuredeploy.json @@ -162,14 +162,14 @@ } }, "customOpenIdConnectProviders": { - "AzureB2C": { + "AzureB2CUserFlow": { "registration": { "clientId": "0cd1d1d6-a7aa-41e2-b569-1ca211147973", "clientCredential": { "clientSecretSettingName": "AzureB2C_AUTHENTICATION_SECRET" }, "openIdConnectConfiguration": { - "wellKnownOpenIdConfiguration": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/B2C_1_signup_signin_LTI/v2.0/.well-known/openid-configuration" + "wellKnownOpenIdConfiguration": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/v2.0/.well-known/openid-configuration?p=B2C_1_signup_signin_LTI" } } }, From 0bbc4764c616dcce86dfb9fe46b0b0473cd0cd37 Mon Sep 17 00:00:00 2001 From: DuyNguyen19993010 Date: Mon, 18 Jul 2022 18:36:52 +0100 Subject: [PATCH 075/285] B2C configuration updatable --- deployment/.env.production | 13 ++ deployment/Limited-Install-Deploy.ps1 | 68 +++++++- deployment/azuredeploy.json | 230 +++++++++++++------------- deployment/azuredeployTemplate.json | Bin 0 -> 66370 bytes deployment/test.json | 0 5 files changed, 191 insertions(+), 120 deletions(-) create mode 100644 deployment/.env.production create mode 100644 deployment/azuredeployTemplate.json create mode 100644 deployment/test.json diff --git a/deployment/.env.production b/deployment/.env.production new file mode 100644 index 00000000..3eda0f94 --- /dev/null +++ b/deployment/.env.production @@ -0,0 +1,13 @@ +GENERATE_SOURCEMAP='false' +REACT_APP_EDNA_PLATFORM_SERVICE_URL='https://platforms-suda4znvd.azurewebsites.net/api' +REACT_APP_EDNA_USERS_SERVICE_URL='https://users-suda4znvd.azurewebsites.net/api' +REACT_APP_EDNA_LEARN_CONTENT='https://learncontent-suda4znvd.azurewebsites.net/api' +REACT_APP_EDNA_LINKS_SERVICE_URL='https://links-suda4znvd.azurewebsites.net/api' +REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL='https://assignments-suda4znvd.azurewebsites.net/api' +REACT_APP_EDNA_TENANT_ID='21510bb9-6414-46d0-9a07-1faf98f25937' +REACT_APP_EDNA_DEFAULT_SCOPE='api://3d440bc7-87f5-4600-8814-698b895d14d7/user_impersonation' +REACT_APP_EDNA_MAIN_URL='https://learnclientsuda4znvd.z33.web.core.windows.net/' +REACT_APP_EDNA_AAD_CLIENT_ID='3d440bc7-87f5-4600-8814-698b895d14d7' +REACT_APP_EDNA_B2C_CLIENT_ID='0cd1d1d6-a7aa-41e2-b569-1ca211147973' +REACT_APP_EDNA_B2C_TENANT='ltimoodleb2c' +REACT_APP_EDNA_AUTH_CLIENT_ID='asdasdads' diff --git a/deployment/Limited-Install-Deploy.ps1 b/deployment/Limited-Install-Deploy.ps1 index 99ae31f5..ec201de7 100644 --- a/deployment/Limited-Install-Deploy.ps1 +++ b/deployment/Limited-Install-Deploy.ps1 @@ -26,12 +26,16 @@ process { Write-Host $Title Write-Host "=============================================================`n`n" } - try { #application ID and uri $clientId = "a15f3fac-c0e5-491f-8a17-41233e28ab8c" $apiURI = "api://a15f3fac-c0e5-491f-8a17-41233e28ab8c" + #B2C parameters + $REACT_APP_EDNA_B2C_CLIENT_ID = 'sdfsdfsdf' + $REACT_APP_EDNA_B2C_TENANT = 'sdfsdf' + $REACT_APP_EDNA_AUTH_CLIENT_ID = 'asdasdads' + #region Show Learn LTI Banner Write-Host '' Write-Host ' _ ______ _____ _ _ _ _______ _____ ' @@ -86,6 +90,57 @@ process { Write-Log -Message "Successfully logged in to Azure." #endregion + + + #region "formatting a unique identifier to ensure we create a new keyvault for each run" + ((Get-Content -path ".\azuredeployTemplate.json" -Raw) -replace "''", ('"213123123123123"')) | Set-Content -path (".\azuredeploy.json") + + [string]$dir = Get-Location + $dir += "\..\client\.env.production" + #$dir += ".env.production" + + $old_REACT_APP_EDNA_B2C_CLIENT_ID='' + $old_REACT_APP_EDNA_B2C_TENANT='' + $old_REACT_APP_EDNA_AUTH_CLIENT_ID='' + [System.IO.File]::ReadLines($dir) | ForEach-Object { + if( $_ -Match "REACT_APP_EDNA_B2C_CLIENT_ID" ){ + $configuration_line = $_ -split "=" + $old_REACT_APP_EDNA_B2C_CLIENT_ID = $_ + $REACT_APP_EDNA_B2C_CLIENT_ID = $configuration_line[0]+"="+"'"+$REACT_APP_EDNA_B2C_CLIENT_ID+"'" + echo $REACT_APP_EDNA_B2C_CLIENT_ID + } + elseif ( $_ -Match "REACT_APP_EDNA_B2C_TENANT"){ + $configuration_line = $_ -split "=" + $old_REACT_APP_EDNA_B2C_TENANT = $_ + $REACT_APP_EDNA_B2C_TENANT = $configuration_line[0]+"="+"'"+$REACT_APP_EDNA_B2C_TENANT+"'" + echo $REACT_APP_EDNA_B2C_TENANT + } + elseif ( $_ -Match "REACT_APP_EDNA_AUTH_CLIENT_ID"){ + $configuration_line = $_ -split "=" + $old_REACT_APP_EDNA_AUTH_CLIENT_ID = $_ + $REACT_APP_EDNA_AUTH_CLIENT_ID = $configuration_line[0]+"="+"'"+$REACT_APP_EDNA_AUTH_CLIENT_ID+"'" + echo $REACT_APP_EDNA_AUTH_CLIENT_ID + } + else{ + echo $false + } + } + $filecontent = Get-Content $dir + $filecontent -replace $old_REACT_APP_EDNA_B2C_CLIENT_ID,$REACT_APP_EDNA_B2C_CLIENT_ID | Set-Content ".env.production" + + $filecontent = Get-Content $dir + $filecontent -replace $old_REACT_APP_EDNA_B2C_TENANT,$REACT_APP_EDNA_B2C_TENANT | Set-Content ".env.production" + + $filecontent = Get-Content $dir + $filecontent -replace $old_REACT_APP_EDNA_AUTH_CLIENT_ID,$REACT_APP_EDNA_AUTH_CLIENT_ID | Set-Content ".env.production" + + Read-Host 'Debug stop.....' + #endregion + + + + + #region Choose Active Subcription Write-Title 'STEP #2 - Choose Subscription' @@ -212,12 +267,13 @@ process { - + + + - #region Provision Resources inside Resource Group on Azure using ARM template - Write-Title 'STEP #6 - Creating Resources in Azure' + Write-Title 'STEP #5 - Creating Resources in Azure' $userObjectId = az ad signed-in-user show --query objectId #$userObjectId @@ -236,7 +292,7 @@ process { Write-Host 'Resource Creation in Azure Completed Successfully' - Write-Title 'Step #7 - Updating KeyVault with LTI 1.3 Key' + Write-Title 'Step #6 - Updating KeyVault with LTI 1.3 Key' @@ -270,7 +326,7 @@ process { #region Build and Publish Function Apps . .\Limited-Install-Backend.ps1 - Write-Title "STEP #10 - Installing the backend" + Write-Title "STEP #7 - Installing the backend" # Comment out any you don't want to deploy diff --git a/deployment/azuredeploy.json b/deployment/azuredeploy.json index b25e4dac..fae3b9f8 100644 --- a/deployment/azuredeploy.json +++ b/deployment/azuredeploy.json @@ -1,58 +1,59 @@ { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", - "parameters": { - "appRegistrationClientId": { - "type": "string", - "defaultValue": "dc0fcdd9-727f-47a3-8f15-4dcb813919fc" - }, - "appRegistrationApiURI": { - "type": "string", - "defaultValue": "api://10ef1e6b-1171-4888-92d5-c661b428796b" - }, - "userEmailAddress": { - "type": "string", - "defaultValue": "user@microsoft.com" - }, - "userObjectId": { - "type": "string", - "defaultValue": "" - } + "parameters": { + "appRegistrationClientId": { + "type": "string", + "defaultValue": "dc0fcdd9-727f-47a3-8f15-4dcb813919fc" + }, + "appRegistrationApiURI": { + "type": "string", + "defaultValue": "api://10ef1e6b-1171-4888-92d5-c661b428796b" }, - "variables": { - "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, '80'),0,9)]", - "functionList": [ - "connect", - "assignments", - "learncontent", - "links", - "platforms", - "users" - ], - "enabledForDeployment": false, - "enabledForDiskEncryption": false, - "enabledForTemplateDeployment": false, - "tenantId": "[subscription().tenantId]", - "skuName": "Standard", - "location": "[resourceGroup().location]", - "runtimeStack": "dotnet", - "resourceGroupName": "[resourceGroup().name]", - "StorageAccountSuffix": "[toLower(replace(variables('uniqueIdentifier'),'-',''))]", - "ProjectNameSuffix": "[concat('-', variables('StorageAccountSuffix'))]", - "staticWebsite": "[toLower(concat('learnclient', variables('StorageAccountSuffix')))]", - "keyVaultName": "[toLower(concat('kv', variables('ProjectNameSuffix')))]", - "KeyVaultAuditLogsStorageAccountName": "[toLower(concat('kv' , variables('StorageAccountSuffix'), 'auditlogs'))]", - "readerRoleDefinitionId": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]", - "KVKeyPermissions": [ - "encrypt", - "decrypt", - "wrapKey", - "unwrapKey", - "sign", - "verify", - "get" - ] + "userEmailAddress": { + "type": "string", + "defaultValue": "user@microsoft.com" }, + "userObjectId": { + "type": "string", + "defaultValue": "" + } + }, + "variables": { + "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, '80'),0,9)]", + "functionList": [ + "connect", + "assignments", + "learncontent", + "links", + "platforms", + "users" + ], + "AzureB2C_AUTHENTICATION_SECRET": "213123123123123", + "enabledForDeployment": false, + "enabledForDiskEncryption": false, + "enabledForTemplateDeployment": false, + "tenantId": "[subscription().tenantId]", + "skuName": "Standard", + "location": "[resourceGroup().location]", + "runtimeStack": "dotnet", + "resourceGroupName": "[resourceGroup().name]", + "StorageAccountSuffix": "[toLower(replace(variables('uniqueIdentifier'),'-',''))]", + "ProjectNameSuffix": "[concat('-', variables('StorageAccountSuffix'))]", + "staticWebsite": "[toLower(concat('learnclient', variables('StorageAccountSuffix')))]", + "keyVaultName": "[toLower(concat('kv', variables('ProjectNameSuffix')))]", + "KeyVaultAuditLogsStorageAccountName": "[toLower(concat('kv' , variables('StorageAccountSuffix'), 'auditlogs'))]", + "readerRoleDefinitionId": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]", + "KVKeyPermissions": [ + "encrypt", + "decrypt", + "wrapKey", + "unwrapKey", + "sign", + "verify", + "get" + ] + }, "resources": [ { "type": "Microsoft.Web/sites", @@ -195,24 +196,24 @@ "dependsOn": [ "[resourceId('Microsoft.Web/sites', concat('connect' , variables('ProjectNameSuffix')))]" ], - "properties": { - "AuthUrl": "[parameters('appRegistrationApiURI')]", - "DidDeployWork": "true", - "AzureB2C_AUTHENTICATION_SECRET": "jHr8Q~tEPWGJBdBtNn0MNfZRXUZjpGghi~6zBalB", - "AssignmentsServiceUrl": "[concat('https://', 'assignments' , variables('ProjectNameSuffix'), '.azurewebsites.net/api/')]", - "Lti1Secret": "LearnLTI", - "PlatformsServiceUrl": "[concat('https://', 'platforms', variables('ProjectNameSuffix'), '.azurewebsites.net/api/')]", - "RedirectUrl": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('staticWebsite'))).primaryEndpoints.web]", - "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", - "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('connect' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('connect' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", - "FUNCTIONS_EXTENSION_VERSION": "~3", - "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components', concat('connect' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]", - "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat('connect' , variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('connect' , variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]", - "WEBSITE_CONTENTSHARE": "[toLower(concat('connect' , variables('ProjectNameSuffix')))]", - "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('connect' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", - "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", - "WEBSITE_RUN_FROM_PACKAGE": "1" - } + "properties": { + "AuthUrl": "[parameters('appRegistrationApiURI')]", + "DidDeployWork": "true", + "AzureB2C_AUTHENTICATION_SECRET": "[variables('AzureB2C_AUTHENTICATION_SECRET')]", + "AssignmentsServiceUrl": "[concat('https://', 'assignments' , variables('ProjectNameSuffix'), '.azurewebsites.net/api/')]", + "Lti1Secret": "LearnLTI", + "PlatformsServiceUrl": "[concat('https://', 'platforms', variables('ProjectNameSuffix'), '.azurewebsites.net/api/')]", + "RedirectUrl": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('staticWebsite'))).primaryEndpoints.web]", + "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", + "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('connect' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('connect' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", + "FUNCTIONS_EXTENSION_VERSION": "~3", + "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components', concat('connect' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]", + "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat('connect' , variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('connect' , variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]", + "WEBSITE_CONTENTSHARE": "[toLower(concat('connect' , variables('ProjectNameSuffix')))]", + "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('connect' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", + "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", + "WEBSITE_RUN_FROM_PACKAGE": "1" + } }, { "name": "[concat('users', variables('ProjectNameSuffix'), '/appsettings')]", @@ -222,22 +223,22 @@ "dependsOn": [ "[resourceId('Microsoft.Web/sites', concat('users', variables('ProjectNameSuffix')))]" ], - "properties": { - "AuthUrl": "[parameters('appRegistrationApiURI')]", - "AzureB2C_AUTHENTICATION_SECRET": "jHr8Q~tEPWGJBdBtNn0MNfZRXUZjpGghi~6zBalB", - "AssignmentsServiceUrl": "[concat('https://', 'assignments', variables('ProjectNameSuffix'), '.azurewebsites.net/api/')]", - "Lti1Secret": "LearnLTI", - "PlatformsServiceUrl": "[concat('https://', 'platforms', variables('ProjectNameSuffix'), '.azurewebsites.net/api/')]", - "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", - "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('users' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('users' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", - "FUNCTIONS_EXTENSION_VERSION": "~3", - "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components', concat('users' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]", - "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat('users' , variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('users' , variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]", - "WEBSITE_CONTENTSHARE": "[toLower(concat('users' , variables('ProjectNameSuffix')))]", - "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('users' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", - "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", - "WEBSITE_RUN_FROM_PACKAGE": "1" - } + "properties": { + "AuthUrl": "[parameters('appRegistrationApiURI')]", + "AzureB2C_AUTHENTICATION_SECRET": "[variables('AzureB2C_AUTHENTICATION_SECRET')]", + "AssignmentsServiceUrl": "[concat('https://', 'assignments', variables('ProjectNameSuffix'), '.azurewebsites.net/api/')]", + "Lti1Secret": "LearnLTI", + "PlatformsServiceUrl": "[concat('https://', 'platforms', variables('ProjectNameSuffix'), '.azurewebsites.net/api/')]", + "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", + "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('users' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('users' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", + "FUNCTIONS_EXTENSION_VERSION": "~3", + "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components', concat('users' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]", + "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat('users' , variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('users' , variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]", + "WEBSITE_CONTENTSHARE": "[toLower(concat('users' , variables('ProjectNameSuffix')))]", + "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('users' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", + "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", + "WEBSITE_RUN_FROM_PACKAGE": "1" + } }, { "name": "[concat('assignments' , variables('ProjectNameSuffix'), '/appsettings')]", @@ -250,7 +251,7 @@ "properties": { "AuthUrl": "[parameters('appRegistrationApiURI')]", "DidDeployWork": "true", - "AzureB2C_AUTHENTICATION_SECRET": "jHr8Q~tEPWGJBdBtNn0MNfZRXUZjpGghi~6zBalB", + "AzureB2C_AUTHENTICATION_SECRET": "[variables('AzureB2C_AUTHENTICATION_SECRET')]", "PlatformsServiceUrl": "[concat('https://','platforms' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", "UsersServiceUrl": "[concat('https://','users' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", @@ -274,7 +275,7 @@ ], "properties": { "AllowedUsers": "[parameters('userEmailAddress')]", - "AzureB2C_AUTHENTICATION_SECRET": "jHr8Q~tEPWGJBdBtNn0MNfZRXUZjpGghi~6zBalB", + "AzureB2C_AUTHENTICATION_SECRET": "[variables('AzureB2C_AUTHENTICATION_SECRET')]", "AuthUrl": "[parameters('appRegistrationApiURI')]", "DidDeployWork": "true", "ConnectApiBaseUrl": "[concat('https://','connect' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", @@ -297,20 +298,20 @@ "dependsOn": [ "[resourceId('Microsoft.Web/sites', concat('links' , variables('ProjectNameSuffix')))]" ], - "properties": { - "AuthUrl": "[parameters('appRegistrationApiURI')]", - "AzureB2C_AUTHENTICATION_SECRET": "jHr8Q~tEPWGJBdBtNn0MNfZRXUZjpGghi~6zBalB", - "UsersServiceUrl": "[concat('https://','users' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", - "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", - "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('links' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('links' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", - "FUNCTIONS_EXTENSION_VERSION": "~3", - "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components', concat('links' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]", - "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat('links' , variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('links' , variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]", - "WEBSITE_CONTENTSHARE": "[toLower(concat('links' , variables('ProjectNameSuffix')))]", - "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('links' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", - "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", - "WEBSITE_RUN_FROM_PACKAGE": "1" - } + "properties": { + "AuthUrl": "[parameters('appRegistrationApiURI')]", + "AzureB2C_AUTHENTICATION_SECRET": "[variables('AzureB2C_AUTHENTICATION_SECRET')]", + "UsersServiceUrl": "[concat('https://','users' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", + "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", + "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('links' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('links' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", + "FUNCTIONS_EXTENSION_VERSION": "~3", + "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components', concat('links' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]", + "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat('links' , variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('links' , variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]", + "WEBSITE_CONTENTSHARE": "[toLower(concat('links' , variables('ProjectNameSuffix')))]", + "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('links' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", + "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", + "WEBSITE_RUN_FROM_PACKAGE": "1" + } }, { "name": "[concat('learncontent', variables('ProjectNameSuffix'), '/appsettings')]", @@ -320,20 +321,20 @@ "dependsOn": [ "[resourceId('Microsoft.Web/sites', concat('learncontent' , variables('ProjectNameSuffix')))]" ], - "properties": { - "AuthUrl": "[parameters('appRegistrationApiURI')]", - "AzureB2C_AUTHENTICATION_SECRET": "jHr8Q~tEPWGJBdBtNn0MNfZRXUZjpGghi~6zBalB", - "UsersServiceUrl": "[concat('https://','users' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", - "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", - "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('learncontent' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('learncontent' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", - "FUNCTIONS_EXTENSION_VERSION": "~3", - "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components', concat('learncontent' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]", - "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat('learncontent' , variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('learncontent' , variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]", - "WEBSITE_CONTENTSHARE": "[toLower(concat('learncontent' , variables('ProjectNameSuffix')))]", - "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('learncontent' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", - "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", - "WEBSITE_RUN_FROM_PACKAGE": "1" - } + "properties": { + "AuthUrl": "[parameters('appRegistrationApiURI')]", + "AzureB2C_AUTHENTICATION_SECRET": "[variables('AzureB2C_AUTHENTICATION_SECRET')]", + "UsersServiceUrl": "[concat('https://','users' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", + "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", + "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('learncontent' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('learncontent' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", + "FUNCTIONS_EXTENSION_VERSION": "~3", + "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components', concat('learncontent' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]", + "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat('learncontent' , variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('learncontent' , variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]", + "WEBSITE_CONTENTSHARE": "[toLower(concat('learncontent' , variables('ProjectNameSuffix')))]", + "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('learncontent' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", + "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", + "WEBSITE_RUN_FROM_PACKAGE": "1" + } }, { "type": "Microsoft.Web/serverfarms", @@ -547,3 +548,4 @@ } } } + diff --git a/deployment/azuredeployTemplate.json b/deployment/azuredeployTemplate.json new file mode 100644 index 0000000000000000000000000000000000000000..52dff5a9e25085f2321bb7b1e1561c00db9920d2 GIT binary patch literal 66370 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∈fm2PWfsQDV0rE{h7Gx>a@}lltOtJIH-Kc1hhR&8W4fWvmP`Y? zp`23VhW4v;ePmZg7J#jhj#toz7sfZ}g9BB|QX2>rtDaZ_rnOS}K5JH)@-aYrKAWwj zYRzEvyG5I*HHCCqNTQo@lTspVp{LDHaqVj5hq}h%x6ORHxP8$&{3~Y+ekq*WA zC32A%mvUW@&0<-_9nReK5T%ArqpL%YQ@ni1bW<;X8hGXj`a|Ds34U5}RdF>QB6tkn zAsQ0)l4dzeDlOu=S)4S*)1OyL$E5rwa7&fSr;yAK;PnB16`LV?sPi&aHkXpXXr12v z?nuI`%4%khB?>RcNVY}oSm6av*5{G41c{CL(9}U~#;2T@l}tU&GojT@(VOWpaEL?p z5qlO_SG%)_%u;kYDn6@N7e#g}Ip}|dBXjqzugmCN(^oh*f8+Dh`Dnf0CODQ^Kg3bE z$Oin!MNQOchU zRqh{O4#Qs1N67so+1k^Tt8KJJ_QDmNBxul0=p;t9?d-yP^V%sKowqM Date: Mon, 18 Jul 2022 18:53:45 +0100 Subject: [PATCH 076/285] Use variables for b2c secrets configuration --- deployment/.env.production | 2 +- deployment/Limited-Install-Deploy.ps1 | 13 ++++++++----- deployment/azuredeploy.json | 2 +- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/deployment/.env.production b/deployment/.env.production index 3eda0f94..c474891e 100644 --- a/deployment/.env.production +++ b/deployment/.env.production @@ -10,4 +10,4 @@ REACT_APP_EDNA_MAIN_URL='https://learnclientsuda4znvd.z33.web.core.windows.net/' REACT_APP_EDNA_AAD_CLIENT_ID='3d440bc7-87f5-4600-8814-698b895d14d7' REACT_APP_EDNA_B2C_CLIENT_ID='0cd1d1d6-a7aa-41e2-b569-1ca211147973' REACT_APP_EDNA_B2C_TENANT='ltimoodleb2c' -REACT_APP_EDNA_AUTH_CLIENT_ID='asdasdads' +REACT_APP_EDNA_AUTH_CLIENT_ID='hard-code client id' diff --git a/deployment/Limited-Install-Deploy.ps1 b/deployment/Limited-Install-Deploy.ps1 index ec201de7..9e8ad752 100644 --- a/deployment/Limited-Install-Deploy.ps1 +++ b/deployment/Limited-Install-Deploy.ps1 @@ -32,9 +32,10 @@ process { $apiURI = "api://a15f3fac-c0e5-491f-8a17-41233e28ab8c" #B2C parameters - $REACT_APP_EDNA_B2C_CLIENT_ID = 'sdfsdfsdf' - $REACT_APP_EDNA_B2C_TENANT = 'sdfsdf' - $REACT_APP_EDNA_AUTH_CLIENT_ID = 'asdasdads' + $b2c_secret = "hard-code value" + $REACT_APP_EDNA_B2C_CLIENT_ID = 'hard-code client id' + $REACT_APP_EDNA_B2C_TENANT = 'hard-code b2c tenant' + $REACT_APP_EDNA_AUTH_CLIENT_ID = 'hard-code client id' #region Show Learn LTI Banner Write-Host '' @@ -93,10 +94,12 @@ process { #region "formatting a unique identifier to ensure we create a new keyvault for each run" - ((Get-Content -path ".\azuredeployTemplate.json" -Raw) -replace "''", ('"213123123123123"')) | Set-Content -path (".\azuredeploy.json") + + $b2c_secret = '"'+$b2c_secret+'"' + ((Get-Content -path ".\azuredeployTemplate.json" -Raw) -replace "''", $b2c_secret) | Set-Content -path (".\azuredeploy.json") [string]$dir = Get-Location - $dir += "\..\client\.env.production" + $dir += "/../client/.env.production" #$dir += ".env.production" $old_REACT_APP_EDNA_B2C_CLIENT_ID='' diff --git a/deployment/azuredeploy.json b/deployment/azuredeploy.json index fae3b9f8..18e1a693 100644 --- a/deployment/azuredeploy.json +++ b/deployment/azuredeploy.json @@ -29,7 +29,7 @@ "platforms", "users" ], - "AzureB2C_AUTHENTICATION_SECRET": "213123123123123", + "AzureB2C_AUTHENTICATION_SECRET": "hard-code value", "enabledForDeployment": false, "enabledForDiskEncryption": false, "enabledForTemplateDeployment": false, From 9736cae4186cab5b961504c8979b270f7ac26977 Mon Sep 17 00:00:00 2001 From: DuyNguyen19993010 Date: Tue, 19 Jul 2022 12:01:10 +0100 Subject: [PATCH 077/285] Quote fixes --- deployment/.env.production | 13 ------------- deployment/Limited-Install-Deploy.ps1 | 2 +- deployment/azuredeployTemplate.json | Bin 66370 -> 66370 bytes deployment/test.json | 0 4 files changed, 1 insertion(+), 14 deletions(-) delete mode 100644 deployment/.env.production delete mode 100644 deployment/test.json diff --git a/deployment/.env.production b/deployment/.env.production deleted file mode 100644 index c474891e..00000000 --- a/deployment/.env.production +++ /dev/null @@ -1,13 +0,0 @@ -GENERATE_SOURCEMAP='false' -REACT_APP_EDNA_PLATFORM_SERVICE_URL='https://platforms-suda4znvd.azurewebsites.net/api' -REACT_APP_EDNA_USERS_SERVICE_URL='https://users-suda4znvd.azurewebsites.net/api' -REACT_APP_EDNA_LEARN_CONTENT='https://learncontent-suda4znvd.azurewebsites.net/api' -REACT_APP_EDNA_LINKS_SERVICE_URL='https://links-suda4znvd.azurewebsites.net/api' -REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL='https://assignments-suda4znvd.azurewebsites.net/api' -REACT_APP_EDNA_TENANT_ID='21510bb9-6414-46d0-9a07-1faf98f25937' -REACT_APP_EDNA_DEFAULT_SCOPE='api://3d440bc7-87f5-4600-8814-698b895d14d7/user_impersonation' -REACT_APP_EDNA_MAIN_URL='https://learnclientsuda4znvd.z33.web.core.windows.net/' -REACT_APP_EDNA_AAD_CLIENT_ID='3d440bc7-87f5-4600-8814-698b895d14d7' -REACT_APP_EDNA_B2C_CLIENT_ID='0cd1d1d6-a7aa-41e2-b569-1ca211147973' -REACT_APP_EDNA_B2C_TENANT='ltimoodleb2c' -REACT_APP_EDNA_AUTH_CLIENT_ID='hard-code client id' diff --git a/deployment/Limited-Install-Deploy.ps1 b/deployment/Limited-Install-Deploy.ps1 index 9e8ad752..59d68f57 100644 --- a/deployment/Limited-Install-Deploy.ps1 +++ b/deployment/Limited-Install-Deploy.ps1 @@ -96,7 +96,7 @@ process { #region "formatting a unique identifier to ensure we create a new keyvault for each run" $b2c_secret = '"'+$b2c_secret+'"' - ((Get-Content -path ".\azuredeployTemplate.json" -Raw) -replace "''", $b2c_secret) | Set-Content -path (".\azuredeploy.json") + ((Get-Content -path ".\azuredeployTemplate.json" -Raw) -replace '""', $b2c_secret) | Set-Content -path (".\azuredeploy.json") [string]$dir = Get-Location $dir += "/../client/.env.production" diff --git a/deployment/azuredeployTemplate.json b/deployment/azuredeployTemplate.json index 52dff5a9e25085f2321bb7b1e1561c00db9920d2..102cbcc61461d5fdccb26549b3be19cbd0d334e5 100644 GIT binary patch delta 24 gcmX@q#&W2QWrGzvqtaw+cH_yPID|Ggupjyj0Bz+7O8@`> delta 22 ecmX@q#&W2QWrGzvqxxiPc4J2M&H3z?e**wmCkNR8 diff --git a/deployment/test.json b/deployment/test.json deleted file mode 100644 index e69de29b..00000000 From 1af293bb7419a330da7099f89031c509b965a6e4 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Tue, 19 Jul 2022 12:15:02 +0100 Subject: [PATCH 078/285] removed hardcoded values --- .../AssignmentLearnContentApi.cs | 24 +++++++------------ client/src/Core/Auth/AppAuthConfig.ts | 5 ++-- client/src/Features/Platform/PlatformPage.tsx | 1 + deployment/Limited-Install-Deploy.ps1 | 19 ++++++--------- 4 files changed, 18 insertions(+), 31 deletions(-) diff --git a/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs b/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs index 6c981ea5..5ff4289e 100644 --- a/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs +++ b/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs @@ -83,7 +83,7 @@ public async Task SaveAssignmentLearnContent( string contentUid, [User] UsersClient usersClient) { - #region "DM: VALIDATION OF USER EMAIL EXISTING, DOUBT THE CHANGE OF AD TO B2C WILL CHANGE THIS API BUT FLAGGED TO CHECK FURTHER" + // TODO - VALIDATION OF USER EMAIL EXISTING, DOUBT THE CHANGE OF AD TO B2C WILL CHANGE THIS API BUT FLAGGED TO CHECK FURTHER" // validating user email exists in the request header bool isSystemCallOrUserWithValidEmail = req.Headers.TryGetUserEmails(out List userEmails); if (!isSystemCallOrUserWithValidEmail) @@ -91,11 +91,10 @@ public async Task SaveAssignmentLearnContent( _logger.LogError("Could not get user email."); return new BadRequestErrorMessageResult("Could not get user email."); } - #endregion if (userEmails.Count > 0) { - #region "DM: getting list of for the assignment from AD and checking they are authorized (teacher status)" + // TODO - "DM: getting list of for the assignment from AD and checking they are authorized (teacher status)" _logger.LogInformation($"Getting user information for '{string.Join(';', userEmails)}'."); // Creating logger for logging user (email owner) information User[] allUsers = await usersClient.GetAllUsers(assignmentId); // Getting all users for the assignment @@ -103,7 +102,6 @@ public async Task SaveAssignmentLearnContent( // If the user is not found or the user is NOT a teacher, return UnauthorizedResult if (user == null || !user.Role.Equals("teacher")) return new UnauthorizedResult(); - #endregion } _logger.LogInformation($"Saving assignment learn content with uid [{contentUid}] to assignment {assignmentId}"); @@ -128,7 +126,7 @@ public async Task RemoveAssignmentLearnContent( string contentUid, [User] UsersClient usersClient) { - #region "DM: VALIDATION OF USER EMAIL EXISTING, DOUBT THE CHANGE OF AD TO B2C WILL CHANGE THIS API BUT FLAGGED TO CHECK FURTHER" + // TODO - "DM: VALIDATION OF USER EMAIL EXISTING, DOUBT THE CHANGE OF AD TO B2C WILL CHANGE THIS API BUT FLAGGED TO CHECK FURTHER" // validating user email exists in the request header bool isSystemCallOrUserWithValidEmail = req.Headers.TryGetUserEmails(out List userEmails); if (!isSystemCallOrUserWithValidEmail) @@ -136,18 +134,16 @@ public async Task RemoveAssignmentLearnContent( _logger.LogError("Could not get user email."); return new BadRequestErrorMessageResult("Could not get user email."); } - #endregion if (userEmails.Count > 0) { - #region "DM: [SAME AS LINE 98] getting list of for the assignment from AD and checking they are authorized (teacher status)" + // TODO - "DM: [SAME AS LINE 98] getting list of for the assignment from AD and checking they are authorized (teacher status)" _logger.LogInformation($"Getting user information for '{string.Join(';', userEmails)}'."); User[] allUsers = await usersClient.GetAllUsers(assignmentId); User user = allUsers.FirstOrDefault(member => userEmails.Any(userEmail => (member.Email ?? String.Empty).Equals(userEmail))); if (user == null || !user.Role.Equals("teacher")) return new UnauthorizedResult(); - #endregion } if (assignmentLearnContentEntityToDelete == null) @@ -171,7 +167,7 @@ public async Task ClearAssignmentLearnContent( string assignmentId, [User] UsersClient usersClient) { - #region "DM: VALIDATION OF USER EMAIL EXISTING, DOUBT THE CHANGE OF AD TO B2C WILL CHANGE THIS API BUT FLAGGED TO CHECK FURTHER" + // TODO - "DM: VALIDATION OF USER EMAIL EXISTING, DOUBT THE CHANGE OF AD TO B2C WILL CHANGE THIS API BUT FLAGGED TO CHECK FURTHER" // validating user email exists in the request header bool isSystemCallOrUserWithValidEmail = req.Headers.TryGetUserEmails(out List userEmails); if (!isSystemCallOrUserWithValidEmail) @@ -179,18 +175,16 @@ public async Task ClearAssignmentLearnContent( _logger.LogError("Could not get user email."); return new BadRequestErrorMessageResult("Could not get user email."); } - #endregion if (userEmails.Count > 0) { - #region "DM: [SAME AS LINE98] getting list of for the assignment from AD and checking they are authorized (teacher status)" + //TODO - "DM: [SAME AS LINE98] getting list of for the assignment from AD and checking they are authorized (teacher status)" _logger.LogInformation($"Getting user information for '{string.Join(';', userEmails)}'."); User[] allUsers = await usersClient.GetAllUsers(assignmentId); User user = allUsers.FirstOrDefault(member => userEmails.Any(userEmail => (member.Email ?? String.Empty).Equals(userEmail))); if (user == null || !user.Role.Equals("teacher")) return new UnauthorizedResult(); - #endregion } List assignmentLearnContentEntities = await GetAllAssignmentLearnContentEntities(assignmentLearnContentTable, assignmentId); @@ -214,7 +208,7 @@ public async Task ClearAssignmentLearnContent( } - #region "DM: (POSSIBLY) IMPORTANT FUNCTION FOR OUR MODIFIED AUTHORIZATION, UTILISES TOKENS" + //TODO - "DM: (POSSIBLY) IMPORTANT FUNCTION FOR OUR MODIFIED AUTHORIZATION, UTILISES TOKENS" // function for getting all the assignmentLearnContent entities in the tenant (?) private async Task> GetAllAssignmentLearnContentEntities(CloudTable assignmentLearnContentTable, string assignmentId) { @@ -237,9 +231,8 @@ private async Task> GetAllAssignmentLearnCont return assignmentSelectedLearnContent; } - #endregion - #region "DM: (POSSIBLY) IMPORTANT FUNCTION FOR OUR MODIFIED AUTHORIZATION, UTILISES JSON TOKENS" + //TODO - "DM: (POSSIBLY) IMPORTANT FUNCTION FOR OUR MODIFIED AUTHORIZATION, UTILISES JSON TOKENS" // takes in a JSON token for the content private void ChangeUrlQueryToEdnaIdentifier(JToken contentJToken) { @@ -255,6 +248,5 @@ private void ChangeUrlQueryToEdnaIdentifier(JToken contentJToken) contentJToken["url"] = newUriBuilder.Uri.ToString(); //update the JSON tokens url with the newly generated url } - #endregion } } \ No newline at end of file diff --git a/client/src/Core/Auth/AppAuthConfig.ts b/client/src/Core/Auth/AppAuthConfig.ts index 7c0c088e..0623dd7d 100644 --- a/client/src/Core/Auth/AppAuthConfig.ts +++ b/client/src/Core/Auth/AppAuthConfig.ts @@ -17,8 +17,7 @@ const authLogCallback = (level: LogLevel, message: string, _containsPii: boolean const configuration: Configuration = { auth: { - //clientId: process.env.REACT_APP_EDNA_AUTH_CLIENT_ID!, //process.env.REACT_APP_EDNA_AAD_CLIENT_ID! - clientId: '0cd1d1d6-a7aa-41e2-b569-1ca211147973', // TODO: don't hardcode + clientId: process.env.REACT_APP_EDNA_AUTH_CLIENT_ID!, //process.env.REACT_APP_EDNA_AAD_CLIENT_ID! redirectUri: process.env.REACT_APP_EDNA_MAIN_URL!, authority: b2cPolicies.authorities.signIn.authority, navigateToLoginRequestUrl: true, @@ -34,7 +33,7 @@ const configuration: Configuration = { }; const authParams: AuthenticationParameters = { - //scopes: ['https://' + process.env.REACT_APP_EDNA_B2C_TENANT! + '.onmicrosoft.com/api/b2c.read'] // RB: 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read' + scopes: ['https://' + process.env.REACT_APP_EDNA_B2C_TENANT! + '.onmicrosoft.com/api/b2c.read'] // RB: 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read' scopes: [ //'https://ltimoodleb2c.onmicrosoft.com/api/user_impersonation', 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read' diff --git a/client/src/Features/Platform/PlatformPage.tsx b/client/src/Features/Platform/PlatformPage.tsx index f607150a..f842ef55 100644 --- a/client/src/Features/Platform/PlatformPage.tsx +++ b/client/src/Features/Platform/PlatformPage.tsx @@ -74,6 +74,7 @@ const PlatformPageInner = ({ styles }: IStylesOnly): JSX.Ele labelPosition="bottom" /> ) : ( + // TODO - either finish this functionality or remove it // should this div have the "className={classes.content}" too? )); }; -function showAdOrB2C() { - const checkBox = document.getElementById('myCheck')! as HTMLInputElement; - const b2c_div = document.getElementById('b2c_tenant')!; - const ad_div = document.getElementById('ad_tenant')!; - - if (checkBox.checked == true) { - ad_div.style.display = 'none'; - b2c_div.style.display = 'block'; - } else { - ad_div.style.display = 'block'; - b2c_div.style.display = 'none'; - } -} - const platformPageStyle = ({ theme }: IThemeOnlyProps): PlatformPageStyles => ({ root: [ { From 56a744df13bfbaad9e80df180ef735ff2a26045f Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Thu, 28 Jul 2022 10:59:35 +0100 Subject: [PATCH 136/285] tweaks to authentication --- client/src/Core/Auth/AppAuthConfig.ts | 24 ++---------------------- deployment/azuredeploy.json | 2 +- 2 files changed, 3 insertions(+), 23 deletions(-) diff --git a/client/src/Core/Auth/AppAuthConfig.ts b/client/src/Core/Auth/AppAuthConfig.ts index 914a0235..3f197155 100644 --- a/client/src/Core/Auth/AppAuthConfig.ts +++ b/client/src/Core/Auth/AppAuthConfig.ts @@ -13,14 +13,14 @@ export let request; let authority; // Swap out needed B2C vs AD options if (process.env.REACT_APP_EDNA_B2C_TENANT! != 'NULL') { - console.log(process.env.REACT_APP_EDNA_B2C_TENANT!); + console.log(process.env.REACT_APP_EDNA_B2C_TENANT!); // TODO, remove console.log('in B2C mode'); request = { scopes: ['openid', 'profile', 'https://' + process.env.REACT_APP_EDNA_B2C_TENANT! + '.onmicrosoft.com/api/b2c.read'] }; authority = b2cPolicies.authorities.signIn.authority; } else { - console.log('in AD mode'); + console.log('in AD mode'); // TODO, remove request = { scopes: [process.env.REACT_APP_EDNA_DEFAULT_SCOPE!] }; @@ -74,24 +74,4 @@ const config: Configuration = { } }; -// Todo, may no longer be neccessary -// const authParams: AuthenticationParameters = { -// //scopes: ['https://' + process.env.REACT_APP_EDNA_B2C_TENANT! + '.onmicrosoft.com/api/b2c.read'] // RB: 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read' -// scopes: [ -// // TODO: unclear what is needed for custom policies -// //'https://ltimoodleb2c.onmicrosoft.com/api/user_impersonation', -// 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read', -// 'openid', -// 'profile' -// ] -// }; - -// Todo, may no longer be neccessary -// const options: IMsalAuthProviderConfig = { -// loginType: LoginType.Redirect, - -// }; - -//export const AppAuthConfig = new MsalAuthProvider(configuration, authParams, options); - export const AppAuthConfig = new PublicClientApplication(config); diff --git a/deployment/azuredeploy.json b/deployment/azuredeploy.json index bf7befe0..f8318056 100644 --- a/deployment/azuredeploy.json +++ b/deployment/azuredeploy.json @@ -171,7 +171,7 @@ "clientSecretSettingName": "AzureB2C_AUTHENTICATION_SECRET" }, "openIdConnectConfiguration": { - "wellKnownOpenIdConfiguration": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/B2C_1_signin_LTI/v2.0/.well-known/openid-configuration?p=B2C_1A_SIGNIN" + "wellKnownOpenIdConfiguration": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/B2C_1a_signin/v2.0/.well-known/openid-configuration?p=B2C_1A_SIGNIN" } } } From bb8d8252b691348cc83e8cc63d82f48610467689 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Thu, 28 Jul 2022 11:15:52 +0100 Subject: [PATCH 137/285] change to the policy we add --- deployment/B2CDeployment.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 8fcc2baf..abdb5fd4 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -619,7 +619,7 @@ Write-Host "Uploading/updating each of the custom policies" CustomPolicyUpdateOrUpload "B2C_1A_TrustFrameworkBase" $customPolicies $access_token CustomPolicyUpdateOrUpload "B2C_1A_TrustFrameworkLocalization" $customPolicies $access_token CustomPolicyUpdateOrUpload "B2C_1A_TrustFrameworkExtensions" $customPolicies $access_token -CustomPolicyUpdateOrUpload "B2C_1A_signup_signin" $customPolicies $access_token +CustomPolicyUpdateOrUpload "B2C_1A_signin" $customPolicies $access_token CustomPolicyUpdateOrUpload "B2C_1A_ProfileEdit" $customPolicies $access_token CustomPolicyUpdateOrUpload "B2C_1A_PasswordReset" $customPolicies $access_token #endregionWebClientID From df69db102217f3d7f7839648c795454cb8414255 Mon Sep 17 00:00:00 2001 From: DuyNguyen19993010 Date: Thu, 28 Jul 2022 12:09:04 +0100 Subject: [PATCH 138/285] Update function app settings --- deployment/Deploy.ps1 | 26 ++++++++++++++++++--- deployment/azuredeploy.json | 31 ++++++++++++++++++++------ deployment/azuredeployB2CTemplate.json | 25 ++++++++++++++++----- deployment/test_text.txt | 2 ++ 4 files changed, 69 insertions(+), 15 deletions(-) create mode 100644 deployment/test_text.txt diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index fa8d1afc..31fdfae9 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -30,8 +30,8 @@ process { Write-Host '|______|______/_/ \_\_| \_\_| \_| |______|_| |_____|' Write-Host '' Write-Host '' - #endregion - + #endregion | Set-Content -path (".\test_text.txt") + #region "getting the setup mode for b2c vs ad" $b2cOrAD = "none" while($b2cOrAD -ne "b2c" -and $b2cOrAD -ne "ad") { @@ -39,18 +39,38 @@ process { } #endregion + + #region "formatting a unique identifier to ensure we create a new keyvault for each run" $uniqueIdentifier = [Int64]((Get-Date).ToString('yyyyMMddhhmmss')) #get the current second as being the unique identifier #if its b2c load the b2c azuredeploy template if($b2cOrAD -eq "b2c"){ ((Get-Content -path ".\azuredeployB2CTemplate.json" -Raw) -replace '', ("'"+$uniqueIdentifier+"'")) | Set-Content -path (".\azuredeploy.json") + + #Update's prerequsites + + $b2c_tenant_name = "ltimoodleb2c" + $policy_name = "b2c_1a_signup_signin" + + #Updating function apps's settings + + $B2C_APP_CLIENT_ID_IDENTIFIER = "0cd1d1d6-a7aa-41e2-b569-1ca211147973" # TODO remove hardcode + $AD_APP_CLIENT_ID_IDENTIFIER = "cb508fc8-6a5f-49b1-b688-dac065ba59e4" # TODO remove hardcode + $OPENID_B2C_CONFIG_URL_IDENTIFIER = "https://"+$b2c_tenant_name+".b2clogin.com/ltimoodleb2c.onmicrosoft.com/"+$policy_name+"/v2.0/.well-known/openid-configuration" # TODO remove hardcode + $OPENDID_AD_CONFIG_URL_IDENTIFIER = "https://login.microsoft.com/uclmsclearnlti.onmicrosoft.com/v2.0/.well-known/openid-configuration" # TODO remove hardcode + + ((Get-Content -path ".\azuredeploy.json" -Raw) -replace '', ($B2C_APP_CLIENT_ID_IDENTIFIER))` + -replace '', ($AD_APP_CLIENT_ID_IDENTIFIER)` + -replace '', ($OPENID_B2C_CONFIG_URL_IDENTIFIER)` + -replace '', ($OPENDID_AD_CONFIG_URL_IDENTIFIER) | Set-Content -path (".\azuredeploy.json") + } #else its AD load the AD azuredeploy template else{ ((Get-Content -path ".\azuredeployADTemplate.json" -Raw) -replace '', ("'"+$uniqueIdentifier+"'")) | Set-Content -path (".\azuredeploy.json") } #endregion - + Read-Host "Debug stop..." #region Setup Logging . .\Write-Log.ps1 $ScriptPath = split-path -parent $MyInvocation.MyCommand.Definition diff --git a/deployment/azuredeploy.json b/deployment/azuredeploy.json index 83df41e0..cd5bce48 100644 --- a/deployment/azuredeploy.json +++ b/deployment/azuredeploy.json @@ -20,7 +20,7 @@ } }, "variables": { - "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, '20220727122022'),0,9)]", + "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, '20220728120636'),0,9)]", "functionList": [ "connect", "assignments", @@ -29,7 +29,7 @@ "platforms", "users" ], - "AzureB2C_AUTHENTICATION_SECRET": "9bg8Q~y8lU1VLV4IrUcfjfY1lNSb3hCB43pJHc.2", + "AzureB2C_AUTHENTICATION_SECRET": "", "enabledForDeployment": false, "enabledForDiskEncryption": false, "enabledForTemplateDeployment": false, @@ -237,7 +237,10 @@ "WEBSITE_CONTENTSHARE": "[toLower(concat('users' , variables('ProjectNameSuffix')))]", "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('users' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", - "WEBSITE_RUN_FROM_PACKAGE": "1" + "WEBSITE_RUN_FROM_PACKAGE": "1", + "ValidAudience": "0cd1d1d6-a7aa-41e2-b569-1ca211147973,cb508fc8-6a5f-49b1-b688-dac065ba59e4", + "ADConfigurationUrl": "https://login.microsoft.com/uclmsclearnlti.onmicrosoft.com/v2.0/.well-known/openid-configuration", + "B2CConfigurationUrl": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin/v2.0/.well-known/openid-configuration" } }, { @@ -262,7 +265,10 @@ "WEBSITE_CONTENTSHARE": "[toLower(concat('assignments' , variables('ProjectNameSuffix')))]", "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('assignments' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", - "WEBSITE_RUN_FROM_PACKAGE": "1" + "WEBSITE_RUN_FROM_PACKAGE": "1", + "ValidAudience": "0cd1d1d6-a7aa-41e2-b569-1ca211147973,cb508fc8-6a5f-49b1-b688-dac065ba59e4", + "ADConfigurationUrl": "https://login.microsoft.com/uclmsclearnlti.onmicrosoft.com/v2.0/.well-known/openid-configuration", + "B2CConfigurationUrl": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin/v2.0/.well-known/openid-configuration" } }, { @@ -287,7 +293,10 @@ "WEBSITE_CONTENTSHARE": "[toLower(concat('platforms' , variables('ProjectNameSuffix')))]", "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('platforms' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", - "WEBSITE_RUN_FROM_PACKAGE": "1" + "WEBSITE_RUN_FROM_PACKAGE": "1", + "ValidAudience": "0cd1d1d6-a7aa-41e2-b569-1ca211147973,cb508fc8-6a5f-49b1-b688-dac065ba59e4", + "ADConfigurationUrl": "https://login.microsoft.com/uclmsclearnlti.onmicrosoft.com/v2.0/.well-known/openid-configuration", + "B2CConfigurationUrl": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin/v2.0/.well-known/openid-configuration" } }, { @@ -310,7 +319,10 @@ "WEBSITE_CONTENTSHARE": "[toLower(concat('links' , variables('ProjectNameSuffix')))]", "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('links' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", - "WEBSITE_RUN_FROM_PACKAGE": "1" + "WEBSITE_RUN_FROM_PACKAGE": "1", + "ValidAudience": "0cd1d1d6-a7aa-41e2-b569-1ca211147973,cb508fc8-6a5f-49b1-b688-dac065ba59e4", + "ADConfigurationUrl": "https://login.microsoft.com/uclmsclearnlti.onmicrosoft.com/v2.0/.well-known/openid-configuration", + "B2CConfigurationUrl": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin/v2.0/.well-known/openid-configuration" } }, { @@ -333,7 +345,10 @@ "WEBSITE_CONTENTSHARE": "[toLower(concat('learncontent' , variables('ProjectNameSuffix')))]", "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('learncontent' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", - "WEBSITE_RUN_FROM_PACKAGE": "1" + "WEBSITE_RUN_FROM_PACKAGE": "1", + "ValidAudience": "0cd1d1d6-a7aa-41e2-b569-1ca211147973,cb508fc8-6a5f-49b1-b688-dac065ba59e4", + "ADConfigurationUrl": "https://login.microsoft.com/uclmsclearnlti.onmicrosoft.com/v2.0/.well-known/openid-configuration", + "B2CConfigurationUrl": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin/v2.0/.well-known/openid-configuration" } }, { @@ -550,3 +565,5 @@ } + + diff --git a/deployment/azuredeployB2CTemplate.json b/deployment/azuredeployB2CTemplate.json index 9521b0c7..67924047 100644 --- a/deployment/azuredeployB2CTemplate.json +++ b/deployment/azuredeployB2CTemplate.json @@ -237,7 +237,10 @@ "WEBSITE_CONTENTSHARE": "[toLower(concat('users' , variables('ProjectNameSuffix')))]", "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('users' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", - "WEBSITE_RUN_FROM_PACKAGE": "1" + "WEBSITE_RUN_FROM_PACKAGE": "1", + "ValidAudience": ",", + "ADConfigurationUrl": "", + "B2CConfigurationUrl": "" } }, { @@ -262,7 +265,10 @@ "WEBSITE_CONTENTSHARE": "[toLower(concat('assignments' , variables('ProjectNameSuffix')))]", "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('assignments' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", - "WEBSITE_RUN_FROM_PACKAGE": "1" + "WEBSITE_RUN_FROM_PACKAGE": "1", + "ValidAudience": ",", + "ADConfigurationUrl": "", + "B2CConfigurationUrl": "" } }, { @@ -287,7 +293,10 @@ "WEBSITE_CONTENTSHARE": "[toLower(concat('platforms' , variables('ProjectNameSuffix')))]", "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('platforms' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", - "WEBSITE_RUN_FROM_PACKAGE": "1" + "WEBSITE_RUN_FROM_PACKAGE": "1", + "ValidAudience": ",", + "ADConfigurationUrl": "", + "B2CConfigurationUrl": "" } }, { @@ -310,7 +319,10 @@ "WEBSITE_CONTENTSHARE": "[toLower(concat('links' , variables('ProjectNameSuffix')))]", "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('links' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", - "WEBSITE_RUN_FROM_PACKAGE": "1" + "WEBSITE_RUN_FROM_PACKAGE": "1", + "ValidAudience": ",", + "ADConfigurationUrl": "", + "B2CConfigurationUrl": "" } }, { @@ -333,7 +345,10 @@ "WEBSITE_CONTENTSHARE": "[toLower(concat('learncontent' , variables('ProjectNameSuffix')))]", "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('learncontent' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", - "WEBSITE_RUN_FROM_PACKAGE": "1" + "WEBSITE_RUN_FROM_PACKAGE": "1", + "ValidAudience": ",", + "ADConfigurationUrl": "", + "B2CConfigurationUrl": "" } }, { diff --git a/deployment/test_text.txt b/deployment/test_text.txt new file mode 100644 index 00000000..42f8a8cd --- /dev/null +++ b/deployment/test_text.txt @@ -0,0 +1,2 @@ +B2C client id +B2C config url From eea4503b6a82ddf54038cd868a82543e640bf5a3 Mon Sep 17 00:00:00 2001 From: DuyNguyen19993010 Date: Thu, 28 Jul 2022 12:15:25 +0100 Subject: [PATCH 139/285] Deleted azuredeploy --- deployment/azuredeploy.json | 567 ------------------------------------ 1 file changed, 567 deletions(-) delete mode 100644 deployment/azuredeploy.json diff --git a/deployment/azuredeploy.json b/deployment/azuredeploy.json deleted file mode 100644 index adb82eca..00000000 --- a/deployment/azuredeploy.json +++ /dev/null @@ -1,567 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "appRegistrationClientId": { - "type": "string", - "defaultValue": "dc0fcdd9-727f-47a3-8f15-4dcb813919fc" - }, - "appRegistrationApiURI": { - "type": "string", - "defaultValue": "api://10ef1e6b-1171-4888-92d5-c661b428796b" - }, - "userEmailAddress": { - "type": "string", - "defaultValue": "user@microsoft.com" - }, - "userObjectId": { - "type": "string", - "defaultValue": "" - } - }, - "variables": { - "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, '20220727122022'),0,9)]", - "functionList": [ - "connect", - "assignments", - "learncontent", - "links", - "platforms", - "users" - ], - "AzureB2C_AUTHENTICATION_SECRET": "", - "enabledForDeployment": false, - "enabledForDiskEncryption": false, - "enabledForTemplateDeployment": false, - "tenantId": "[subscription().tenantId]", - "skuName": "Standard", - "location": "[resourceGroup().location]", - "runtimeStack": "dotnet", - "resourceGroupName": "[resourceGroup().name]", - "StorageAccountSuffix": "[toLower(replace(variables('uniqueIdentifier'),'-',''))]", - "ProjectNameSuffix": "[concat('-', variables('StorageAccountSuffix'))]", - "staticWebsite": "[toLower(concat('learnclient', variables('StorageAccountSuffix')))]", - "keyVaultName": "[toLower(concat('kv', variables('ProjectNameSuffix')))]", - "KeyVaultAuditLogsStorageAccountName": "[toLower(concat('kv' , variables('StorageAccountSuffix'), 'auditlogs'))]", - "readerRoleDefinitionId": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]", - "KVKeyPermissions": [ - "encrypt", - "decrypt", - "wrapKey", - "unwrapKey", - "sign", - "verify", - "get" - ] - }, - "resources": [ - { - "type": "Microsoft.Web/sites", - "apiVersion": "2019-08-01", - "name": "[concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix'))]", - "location": "[variables('location')]", - "dependsOn": [ - "[resourceId('Microsoft.Web/serverfarms', concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix')))]", - "[resourceId('Microsoft.Storage/storageAccounts', concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('StorageAccountSuffix')))]", - "[resourceId('microsoft.insights/components', concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix')))]" - ], - "kind": "functionapp", - "identity": { - "type": "SystemAssigned" - }, - "properties": { - "httpsOnly": true, - "siteConfig": { - "appSettings": [ - { - "name": "FUNCTIONS_WORKER_RUNTIME", - "value": "[variables('runtimeStack')]" - }, - { - "name": "AzureWebJobsStorage", - "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]" - }, - { - "name": "FUNCTIONS_EXTENSION_VERSION", - "value": "~3" - }, - { - "name": "APPINSIGHTS_INSTRUMENTATIONKEY", - "value": "[reference(resourceId('microsoft.insights/components', concat(variables('functionList')[copyIndex('FunctionatIndex')] , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]" - }, - { - "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING", - "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]" - }, - { - "name": "WEBSITE_CONTENTSHARE", - "value": "[toLower(concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix')))]" - }, - { - "name": "APPLICATIONINSIGHTS_CONNECTION_STRING", - "value": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]" - }, - { - "name": "WEBSITE_ENABLE_SYNC_UPDATE_SITE", - "value": "true" - }, - { - "name": "WEBSITE_RUN_FROM_PACKAGE", - "value": "1" - } - ], - "cors": { - "allowedOrigins": [ - "[substring(reference(resourceId('Microsoft.Storage/storageAccounts/', variables('staticWebsite'))).primaryEndpoints.web,0,sub(length(reference(resourceId('Microsoft.Storage/storageAccounts/', variables('staticWebsite'))).primaryEndpoints.web),1))]" - ] - }, - "ftpsState": "Disabled", - "minTlsVersion": "1.2" - }, - "name": "[concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix'))]", - "clientAffinityEnabled": false, - "serverFarmId": "[resourceId('Microsoft.Web/serverfarms/',concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix')))]" - }, - "copy": { - "name": "FunctionatIndex", - "count": "[length(variables('functionList'))]" - } - }, - { - "name": "[concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix'),'/authsettingsV2')]", - "apiVersion": "2021-03-01", - "type": "Microsoft.Web/sites/config", - "location": "[resourceGroup().location]", - "dependsOn": [ - "[resourceId('Microsoft.Web/sites', concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix')))]" - ], - "properties": { - "platform": { - "enabled": "[if(equals(concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix')),concat('connect', variables('ProjectNameSuffix'))), 'false', 'true')]", - "runtimeVersion": "~1" - }, - "globalValidation": { - "requireAuthentication": true, - "unauthenticatedClientAction": "RedirectToLoginPage", - "redirectToProvider": "AzureB2C" - }, - "identityProviders": { - "azureActiveDirectory": { - "enabled": true, - "registration": { - "openIdIssuer": "[concat('https://sts.windows.net/', variables('tenantId'), '/')]", - "clientId": "[parameters('appRegistrationClientId')]" - }, - "validation": { - "jwtClaimChecks": {}, - "allowedAudiences": [ - "[parameters('appRegistrationApiURI')]" - ], - "defaultAuthorizationPolicy": { - "allowedPrincipals": {} - } - } - }, - "customOpenIdConnectProviders": { - "AzureB2C": { - "registration": { - "clientId": "0cd1d1d6-a7aa-41e2-b569-1ca211147973", - "clientCredential": { - "clientSecretSettingName": "AzureB2C_AUTHENTICATION_SECRET" - }, - "openIdConnectConfiguration": { - "wellKnownOpenIdConfiguration": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/B2C_1_signup_signin_LTI/v2.0/.well-known/openid-configuration" - } - } - } - } - }, - "login": { - "tokenStore": { - "enabled": true - }, - "preserveUrlFragmentsForLogins": false - } - }, - "copy": { - "name": "FunctionatIndex", - "count": "[length(variables('functionList'))]" - } - }, - { - "name": "[concat('connect', variables('ProjectNameSuffix'), '/appsettings')]", - "apiVersion": "2018-11-01", - "type": "Microsoft.Web/sites/config", - "location": "[resourceGroup().location]", - "dependsOn": [ - "[resourceId('Microsoft.Web/sites', concat('connect' , variables('ProjectNameSuffix')))]" - ], - "properties": { - "AuthUrl": "[parameters('appRegistrationApiURI')]", - "DidDeployWork": "true", - "AzureB2C_AUTHENTICATION_SECRET": "[variables('AzureB2C_AUTHENTICATION_SECRET')]", - "AssignmentsServiceUrl": "[concat('https://', 'assignments' , variables('ProjectNameSuffix'), '.azurewebsites.net/api/')]", - "Lti1Secret": "LearnLTI", - "PlatformsServiceUrl": "[concat('https://', 'platforms', variables('ProjectNameSuffix'), '.azurewebsites.net/api/')]", - "RedirectUrl": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('staticWebsite'))).primaryEndpoints.web]", - "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", - "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('connect' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('connect' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", - "FUNCTIONS_EXTENSION_VERSION": "~3", - "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components', concat('connect' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]", - "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat('connect' , variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('connect' , variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]", - "WEBSITE_CONTENTSHARE": "[toLower(concat('connect' , variables('ProjectNameSuffix')))]", - "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('connect' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", - "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", - "WEBSITE_RUN_FROM_PACKAGE": "1" - } - }, - { - "name": "[concat('users', variables('ProjectNameSuffix'), '/appsettings')]", - "apiVersion": "2018-11-01", - "type": "Microsoft.Web/sites/config", - "location": "[resourceGroup().location]", - "dependsOn": [ - "[resourceId('Microsoft.Web/sites', concat('users', variables('ProjectNameSuffix')))]" - ], - "properties": { - "AuthUrl": "[parameters('appRegistrationApiURI')]", - "AzureB2C_AUTHENTICATION_SECRET": "[variables('AzureB2C_AUTHENTICATION_SECRET')]", - "AssignmentsServiceUrl": "[concat('https://', 'assignments', variables('ProjectNameSuffix'), '.azurewebsites.net/api/')]", - "Lti1Secret": "LearnLTI", - "PlatformsServiceUrl": "[concat('https://', 'platforms', variables('ProjectNameSuffix'), '.azurewebsites.net/api/')]", - "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", - "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('users' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('users' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", - "FUNCTIONS_EXTENSION_VERSION": "~3", - "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components', concat('users' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]", - "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat('users' , variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('users' , variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]", - "WEBSITE_CONTENTSHARE": "[toLower(concat('users' , variables('ProjectNameSuffix')))]", - "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('users' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", - "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", - "WEBSITE_RUN_FROM_PACKAGE": "1", - "ValidAudience": "0cd1d1d6-a7aa-41e2-b569-1ca211147973,cb508fc8-6a5f-49b1-b688-dac065ba59e4", - "ADConfigurationUrl": "https://login.microsoft.com/uclmsclearnlti.onmicrosoft.com/v2.0/.well-known/openid-configuration", - "B2CConfigurationUrl": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin/v2.0/.well-known/openid-configuration" - } - }, - { - "name": "[concat('assignments' , variables('ProjectNameSuffix'), '/appsettings')]", - "apiVersion": "2018-11-01", - "type": "Microsoft.Web/sites/config", - "location": "[resourceGroup().location]", - "dependsOn": [ - "[resourceId('Microsoft.Web/sites', concat('assignments' , variables('ProjectNameSuffix')))]" - ], - "properties": { - "AuthUrl": "[parameters('appRegistrationApiURI')]", - "DidDeployWork": "true", - "AzureB2C_AUTHENTICATION_SECRET": "[variables('AzureB2C_AUTHENTICATION_SECRET')]", - "PlatformsServiceUrl": "[concat('https://','platforms' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", - "UsersServiceUrl": "[concat('https://','users' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", - "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", - "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('assignments' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('assignments' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", - "FUNCTIONS_EXTENSION_VERSION": "~3", - "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components', concat('assignments' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]", - "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat('assignments' , variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('assignments' , variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]", - "WEBSITE_CONTENTSHARE": "[toLower(concat('assignments' , variables('ProjectNameSuffix')))]", - "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('assignments' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", - "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", - "WEBSITE_RUN_FROM_PACKAGE": "1", - "ValidAudience": "0cd1d1d6-a7aa-41e2-b569-1ca211147973,cb508fc8-6a5f-49b1-b688-dac065ba59e4", - "ADConfigurationUrl": "https://login.microsoft.com/uclmsclearnlti.onmicrosoft.com/v2.0/.well-known/openid-configuration", - "B2CConfigurationUrl": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin/v2.0/.well-known/openid-configuration" - } - }, - { - "name": "[concat('platforms' , variables('ProjectNameSuffix'),'/appsettings')]", - "apiVersion": "2018-11-01", - "type": "Microsoft.Web/sites/config", - "location": "[resourceGroup().location]", - "dependsOn": [ - "[resourceId('Microsoft.Web/sites', concat('platforms' , variables('ProjectNameSuffix')))]" - ], - "properties": { - "AllowedUsers": "[parameters('userEmailAddress')]", - "AzureB2C_AUTHENTICATION_SECRET": "[variables('AzureB2C_AUTHENTICATION_SECRET')]", - "AuthUrl": "[parameters('appRegistrationApiURI')]", - "DidDeployWork": "true", - "ConnectApiBaseUrl": "[concat('https://','connect' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", - "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", - "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('platforms' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('platforms' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", - "FUNCTIONS_EXTENSION_VERSION": "~3", - "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components', concat('platforms' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]", - "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat('platforms' , variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('platforms' , variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]", - "WEBSITE_CONTENTSHARE": "[toLower(concat('platforms' , variables('ProjectNameSuffix')))]", - "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('platforms' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", - "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", - "WEBSITE_RUN_FROM_PACKAGE": "1", - "ValidAudience": "0cd1d1d6-a7aa-41e2-b569-1ca211147973,cb508fc8-6a5f-49b1-b688-dac065ba59e4", - "ADConfigurationUrl": "https://login.microsoft.com/uclmsclearnlti.onmicrosoft.com/v2.0/.well-known/openid-configuration", - "B2CConfigurationUrl": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin/v2.0/.well-known/openid-configuration" - } - }, - { - "name": "[concat('links', variables('ProjectNameSuffix'), '/appsettings')]", - "apiVersion": "2018-11-01", - "type": "Microsoft.Web/sites/config", - "location": "[resourceGroup().location]", - "dependsOn": [ - "[resourceId('Microsoft.Web/sites', concat('links' , variables('ProjectNameSuffix')))]" - ], - "properties": { - "AuthUrl": "[parameters('appRegistrationApiURI')]", - "AzureB2C_AUTHENTICATION_SECRET": "[variables('AzureB2C_AUTHENTICATION_SECRET')]", - "UsersServiceUrl": "[concat('https://','users' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", - "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", - "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('links' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('links' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", - "FUNCTIONS_EXTENSION_VERSION": "~3", - "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components', concat('links' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]", - "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat('links' , variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('links' , variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]", - "WEBSITE_CONTENTSHARE": "[toLower(concat('links' , variables('ProjectNameSuffix')))]", - "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('links' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", - "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", - "WEBSITE_RUN_FROM_PACKAGE": "1", - "ValidAudience": "0cd1d1d6-a7aa-41e2-b569-1ca211147973,cb508fc8-6a5f-49b1-b688-dac065ba59e4", - "ADConfigurationUrl": "https://login.microsoft.com/uclmsclearnlti.onmicrosoft.com/v2.0/.well-known/openid-configuration", - "B2CConfigurationUrl": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin/v2.0/.well-known/openid-configuration" - } - }, - { - "name": "[concat('learncontent', variables('ProjectNameSuffix'), '/appsettings')]", - "apiVersion": "2018-11-01", - "type": "Microsoft.Web/sites/config", - "location": "[resourceGroup().location]", - "dependsOn": [ - "[resourceId('Microsoft.Web/sites', concat('learncontent' , variables('ProjectNameSuffix')))]" - ], - "properties": { - "AuthUrl": "[parameters('appRegistrationApiURI')]", - "AzureB2C_AUTHENTICATION_SECRET": "[variables('AzureB2C_AUTHENTICATION_SECRET')]", - "UsersServiceUrl": "[concat('https://','users' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", - "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", - "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('learncontent' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('learncontent' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", - "FUNCTIONS_EXTENSION_VERSION": "~3", - "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components', concat('learncontent' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]", - "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat('learncontent' , variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('learncontent' , variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]", - "WEBSITE_CONTENTSHARE": "[toLower(concat('learncontent' , variables('ProjectNameSuffix')))]", - "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('learncontent' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", - "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", - "WEBSITE_RUN_FROM_PACKAGE": "1", - "ValidAudience": "0cd1d1d6-a7aa-41e2-b569-1ca211147973,cb508fc8-6a5f-49b1-b688-dac065ba59e4", - "ADConfigurationUrl": "https://login.microsoft.com/uclmsclearnlti.onmicrosoft.com/v2.0/.well-known/openid-configuration", - "B2CConfigurationUrl": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin/v2.0/.well-known/openid-configuration" - } - }, - { - "type": "Microsoft.Web/serverfarms", - "apiVersion": "2019-08-01", - "name": "[concat(variables('functionList')[copyIndex('FunctionatIndex')] , variables('ProjectNameSuffix'))]", - "location": "[variables('location')]", - "sku": { - "name": "Y1", - "tier": "Dynamic", - "size": "Y1", - "family": "Y", - "capacity": 0 - }, - "properties": { - "name": "[concat(variables('functionList')[copyIndex('FunctionatIndex')] , variables('ProjectNameSuffix'))]" - }, - "copy": { - "name": "FunctionatIndex", - "count": "[length(variables('functionList'))]" - } - }, - { - "type": "Microsoft.Storage/storageAccounts", - "apiVersion": "2019-04-01", - "name": "[variables('staticWebsite')]", - "location": "[resourceGroup().location]", - "sku": { - "name": "Standard_LRS", - "tier": "Standard" - }, - "kind": "StorageV2" - }, - { - "type": "Microsoft.Storage/storageAccounts", - "apiVersion": "2019-06-01", - "name": "[concat(variables('functionList')[copyIndex('FunctionatIndex')] , variables('StorageAccountSuffix'))]", - "location": "[variables('location')]", - "sku": { - "name": "Standard_LRS" - }, - "copy": { - "name": "FunctionatIndex", - "count": "[length(variables('functionList'))]" - } - }, - { - "type": "Microsoft.Storage/storageAccounts", - "apiVersion": "2019-06-01", - "name": "[variables('KeyVaultAuditLogsStorageAccountName')]", - "location": "[variables('location')]", - "sku": { - "name": "Standard_LRS" - } - }, - { - "type": "Microsoft.Insights/components", - "apiVersion": "2018-05-01-preview", - "name": "[concat(variables('functionList')[copyIndex('FunctionatIndex')] , variables('ProjectNameSuffix'))]", - "location": "[variables('location')]", - "tags": { - "[concat('hidden-link:', resourceId('Microsoft.Web/sites/',concat(variables('functionList')[copyIndex('FunctionatIndex')] , variables('ProjectNameSuffix')) ))]": "Resource" - }, - "properties": { - "ApplicationId": "[concat(variables('functionList')[copyIndex('FunctionatIndex')] , variables('ProjectNameSuffix'))]" - }, - "copy": { - "name": "FunctionatIndex", - "count": "[length(variables('functionList'))]" - } - }, - { - "type": "Microsoft.KeyVault/vaults", - "name": "[variables('keyVaultName')]", - "apiVersion": "2018-02-14", - "location": "[variables('location')]", - "properties": { - "enabledForDeployment": "[variables('enabledForDeployment')]", - "enabledForDiskEncryption": "[variables('enabledForDiskEncryption')]", - "enabledForTemplateDeployment": "[variables('enabledForTemplateDeployment')]", - "enableSoftDelete": false, - "tenantId": "[variables('tenantId')]", - "accessPolicies": [ - { - "objectId": "[parameters('userObjectId')]", - "tenantId": "[variables('tenantId')]", - "permissions": { - "keys": [ - "All" - ], - "secrets": [ - "All" - ] - } - } - ], - "sku": { - "name": "[variables('skuName')]", - "family": "A" - }, - "networkAcls": { - "defaultAction": "Allow", - "bypass": "AzureServices" - } - } - }, - { - "type": "Microsoft.KeyVault/vaults/providers/diagnosticSettings", - "apiVersion": "2017-05-01-preview", - "name": "[concat(variables('keyVaultName'), '/Microsoft.Insights/Send to all locations')]", - "dependsOn": [ - "[resourceId('Microsoft.KeyVault/vaults', variables('keyVaultName'))]", - "[resourceId('Microsoft.Storage/storageAccounts', variables('KeyVaultAuditLogsStorageAccountName'))]" - ], - "properties": { - "storageAccountId": "[concat( '/subscriptions/', subscription().subscriptionId, '/resourceGroups/', variables('resourceGroupName'), '/providers/Microsoft.Storage/storageAccounts/', variables('KeyVaultAuditLogsStorageAccountName'))]", - "logs": [ - { - "category": "AuditEvent", - "enabled": true, - "RetentionEnabled": true, - "RetentionInDays": 90 - } - ] - } - }, - { - "type": "Microsoft.KeyVault/vaults/accessPolicies", - "name": "[concat(variables('keyVaultName'), '/add')]", - "apiVersion": "2019-09-01", - "properties": { - "accessPolicies": [ - { - "tenantId": "[variables('tenantId')]", - "objectId": "[reference(resourceId('Microsoft.Web/sites',concat('connect' , variables('ProjectNameSuffix'))), '2019-08-01', 'Full').identity.principalId]", - "permissions": { - "keys": "[variables('KVKeyPermissions')]" - } - }, - { - "tenantId": "[variables('tenantId')]", - "objectId": "[reference(resourceId('Microsoft.Web/sites',concat('users' , variables('ProjectNameSuffix'))), '2019-08-01', 'Full').identity.principalId]", - "permissions": { - "keys": "[variables('KVKeyPermissions')]" - } - }, - { - "tenantId": "[variables('tenantId')]", - "objectId": "[reference(resourceId('Microsoft.Web/sites',concat('platforms' , variables('ProjectNameSuffix'))), '2019-08-01', 'Full').identity.principalId]", - "permissions": { - "keys": "[variables('KVKeyPermissions')]" - } - } - ] - } - }, - { - "type": "Microsoft.Authorization/roleAssignments", - "apiVersion": "2018-09-01-preview", - "name": "[guid(concat(resourceGroup().id, variables('functionList')[copyIndex('FunctionatIndex')] , variables('ProjectNameSuffix')))]", - "dependsOn": [ - "[resourceId('Microsoft.Web/sites',concat(variables('functionList')[copyIndex('FunctionatIndex')] , variables('ProjectNameSuffix')))]" - ], - "properties": { - "roleDefinitionId": "[variables('readerRoleDefinitionId')]", - "principalId": "[reference(resourceId('Microsoft.Web/sites', concat(variables('functionList')[copyIndex('FunctionatIndex')] , variables('ProjectNameSuffix'))), '2019-08-01', 'full').identity.principalId]", - "scope": "[resourceGroup().id]", - "principalType": "ServicePrincipal" - }, - "copy": { - "name": "FunctionatIndex", - "count": "[length(variables('functionList'))]" - } - } - ], - "outputs": { - "WebClientURL": { - "value": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('staticWebsite'))).primaryEndpoints.web]", - "type": "string" - }, - "ConnectFunctionName": { - "value": "[concat('connect', variables('ProjectNameSuffix'))]", - "type": "string" - }, - "PlatformsFunctionName": { - "value": "[concat('platforms', variables('ProjectNameSuffix'))]", - "type": "string" - }, - "UsersFunctionName": { - "value": "[concat('users', variables('ProjectNameSuffix'))]", - "type": "string" - }, - "KeyVaultName": { - "value": "[variables('keyVaultName')]", - "type": "string" - }, - "LearnContentFunctionName": { - "value": "[concat('learncontent', variables('ProjectNameSuffix'))]", - "type": "string" - }, - "AssignmentsFunctionName": { - "value": "[concat('assignments', variables('ProjectNameSuffix'))]", - "type": "string" - }, - "LinksFunctionName": { - "value": "[concat('links', variables('ProjectNameSuffix'))]", - "type": "string" - }, - "StaticWebSiteName": { - "value": "[variables('staticWebsite')]", - "type": "string" - } - } -} - - From 75b03d3d14a4d1bed889dab8df38de7c54a799c9 Mon Sep 17 00:00:00 2001 From: Lilin Huang Date: Thu, 28 Jul 2022 12:17:08 +0100 Subject: [PATCH 140/285] Add title when clean up completed before redeploy --- deployment/Deploy.ps1 | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 0fedaae5..bb41f1a5 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "LH_a1_MSLearnLTI", - [string]$AppName = "LH_a1_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "LH_a2_MSLearnLTI", + [string]$AppName = "LH_a2_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null @@ -211,11 +211,12 @@ process { $checkResourceGroupExist = (az group exists --resource-group $ResourceGroupName) if($checkResourceGroupExist -eq $true){ Write-Host "Resource Group exists. Please cleanup the existing resources to create the new one." - $choice = Read-Host "Do you want to cleanup the resources or do you want to exit?(y for cleanup or any other key for exit):" + $choice = Read-Host "Do you want to cleanup the resources or do you want to exit? ('y' for cleanup or any other key for exit)" $choice = $choice.Trim() if ($choice -eq 'y') { Write-Title "Running Cleanup Script" $clean = & ".\cleanup.ps1" -ResourceGroupName $ResourceGroupName -AppName $AppName + Write-Title "Continue Re-deployment from Step 3" } else { Write-Host "Exiting..." From ef1d4aa1a5bd0853e4de5e786c1112de7e96a28e Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Thu, 28 Jul 2022 14:42:36 +0100 Subject: [PATCH 141/285] Fixed issues in B2CDeployment.ps1 and Deploy.ps1 resulting in script crashing; and added defensive programming to them --- deployment/B2CCleanup.ps1 | 16 +++---- deployment/B2CDeployment.ps1 | 84 ++++++++++++++++++------------------ deployment/Cleanup.ps1 | 10 ++--- deployment/Deploy.ps1 | 33 ++++++++------ 4 files changed, 75 insertions(+), 68 deletions(-) diff --git a/deployment/B2CCleanup.ps1 b/deployment/B2CCleanup.ps1 index 26fca6a6..d65a6561 100644 --- a/deployment/B2CCleanup.ps1 +++ b/deployment/B2CCleanup.ps1 @@ -8,9 +8,9 @@ function Write-Title([string]$Title) { } #endregion -#region "STEP 1: Getting the token to be used in the HTML REQUESTS" +#region "B2C STEP 1: Getting the token to be used in the HTML REQUESTS" # relevant docs: https://docs.microsoft.com/en-us/graph/auth-v2-service#4-get-an-access-token -Write-Title "STEP 1: Getting the token to be used in the HTML REQUESTS" +Write-Title "B2C B2C STEP 1: Getting the token to be used in the HTML REQUESTS" $B2cTenantName = Read-Host "Please enter your B2C tenant name" $PermissionClientID = Read-Host "Please enter the client ID of the permission management application" @@ -30,9 +30,9 @@ $access_token = "Bearer " + $access_token #endregion -#region "STEP 2: Connecting to the b2c tenant and removing the custom policies already uploaded to the b2c tenant" +#region "B2C STEP 2: Connecting to the b2c tenant and removing the custom policies already uploaded to the b2c tenant" #reference: https://docs.microsoft.com/en-us/graph/api/trustframeworkpolicy-delete?view=graph-rest-beta&tabs=http -Write-Title "STEP 2: Cleaning up the custom policies from the b2c tenant" +Write-Title "B2C STEP 2: Cleaning up the custom policies from the b2c tenant" $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $headers.Add("Authorization", $access_token) @@ -56,8 +56,8 @@ Write-Host "Deleting B2C_1A_PasswordReset" $response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies/B2C_1A_PasswordReset' -Method 'DELETE' -Headers $headers #endregion -#region "STEP 3: Cleaning up the keysets from the b2c tenant" -Write-Title "STEP 3: Cleaning up the keysets from the b2c tenant" +#region "B2C STEP 3: Cleaning up the keysets from the b2c tenant" +Write-Title "B2C STEP 3: Cleaning up the keysets from the b2c tenant" $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $headers.Add("Authorization", $access_token) @@ -71,8 +71,8 @@ Write-Host "Deleting B2C_1A_FacebookSecret" $response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets/B2C_1A_FacebookSecret' -Method 'DELETE' -Headers $headers #endregion -#region "STEP 4: Deleting the generated applications" -Write-Title "STEP 4: Deleting the generated applications" +#region "B2C STEP 4: Deleting the generated applications" +Write-Title "B2C STEP 4: Deleting the generated applications" $AppInfoCSVPath = ".\AppInfo.csv" $AppInfo = Import-Csv -Path $AppInfoCSVPath -Header @("AppID", "TenantID") $LastTenantID = "" diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 90aecdf3..1fd10aa9 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -15,9 +15,9 @@ function Write-Color($Color, [string]$Text) { #function for writing errors function Write-Error([string]$Text) { - Write-Host "`n`n=============================================================`n" -ForegroundColor "black" -BackgroundColor "DarkRed" -NoNewline - Write-Host "Error!`n$Text" -ForegroundColor "black" -BackgroundColor "DarkRed" -NoNewline - Write-Host "`n=============================================================" -ForegroundColor "black" -BackgroundColor "DarkRed" + Write-Host "`n`n=============================================================`n" -ForegroundColor "red" -BackgroundColor "black" -NoNewline + Write-Host "Error!`n$Text" -ForegroundColor "red" -BackgroundColor "black" -NoNewline + Write-Host "`n=============================================================" -ForegroundColor "red" -BackgroundColor "black" } @@ -41,11 +41,11 @@ $PermissionAppName = "b2c_AD_PMA" $PermissionClientSecretName = "b2c_AD_PMA_secret" #endregion -#region "STEP 1: Create Active Directory application" +#region "B2C STEP 1: Create Active Directory application" $B2cTenantName = Read-Host "Please enter your B2C tenant name" $ADTenantName = Read-Host "Please enter your AD tenant name" -Write-Title "STEP 1: Create AD application" +Write-Title "B2C STEP 1: Create AD application" Write-Host "Please login to $ADTenantName via the pop-up window that has launched in your browser" az login --tenant "$ADTenantName.onmicrosoft.com" --allow-no-subscriptions --only-show-errors > $null # $MultiTenantAppName = Read-Host "Please give a name for the AD application to be created" @@ -69,7 +69,7 @@ $ADAppManifest = "{ }" Out-File -FilePath "manifest.json" -InputObject $ADAppManifest $MultiTenantAppID = (az ad app create --display-name $MultiTenantAppName --sign-in-audience AzureADandPersonalMicrosoftAccount --web-redirect-uris https://$B2cTenantName.b2clogin.com/$B2cTenantName.onmicrosoft.com/oauth2/authresp --optional-claims "@manifest.json" --query appId --output tsv --only-show-errors) -Start-SLeep 2 +Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it "$MultiTenantAppID,$ADTenantName" | Out-File -FilePath $AppInfoCSVPath -Append # Create client secret @@ -94,18 +94,18 @@ Remove-Item manifest.json #endregion -#region "STEP 2: login" -Write-Title "STEP 2: Logging into the B2C Tenant" +#region "B2C STEP 2: login" +Write-Title "B2C STEP 2: Logging into the B2C Tenant" Write-Host "Please login to $B2cTenantName via the pop-up window that has launched in your browser" az login --tenant "$B2cTenantName.onmicrosoft.com" --allow-no-subscriptions --only-show-errors > $null #endregion -#region "STEP 3: Create the web app" -Write-Title "STEP 3: Creating the B2C Web application" +#region "B2C STEP 3: Create the web app" +Write-Title "B2C STEP 3: Creating the B2C Web application" # $B2cAppName = Read-Host "Please give a name for the web application to be created" $appinfo = (az ad app create --display-name $B2cAppName --sign-in-audience AzureADandPersonalMicrosoftAccount --web-redirect-uris https://jwt.ms --enable-access-token-issuance true --enable-id-token-issuance true --only-show-errors) | ConvertFrom-Json -Start-SLeep 2 +Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it $WebClientID = $appinfo.appId $ObjectId = $appinfo.id @@ -131,11 +131,11 @@ az ad app permission add --id $WebClientID --api 00000003-0000-0000-c000-0000000 #endregion -#region "STEP 4: Create IdentityExperienceFramework app" -Write-Title "STEP 4: Creating the Identity Experience Framework application" +#region "B2C STEP 4: Create IdentityExperienceFramework app" +Write-Title "B2C STEP 4: Creating the Identity Experience Framework application" $IEFAppName = "IdentityExperienceFramework" $IEFClientID = (az ad app create --display-name $IEFAppName --sign-in-audience AzureADMyOrg --web-redirect-uris https://$B2cTenantName.b2clogin.com/$B2cTenantName.onmicrosoft.com --query appId --output tsv --only-show-errors) -Start-SLeep 2 +Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it "$IEFClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append # set permissions for the IEF app @@ -172,11 +172,11 @@ Remove-Item userImpersonationScope.json #endregion -#region "STEP 5: Create ProxyIEF app" -Write-Title "STEP 5: Creating the Proxy Identity Experience Framework application" +#region "B2C STEP 5: Create ProxyIEF app" +Write-Title "B2C STEP 5: Creating the Proxy Identity Experience Framework application" $ProxyIEFAppName = "ProxyIdentityExperienceFramework" $ProxyIEFClientID = (az ad app create --display-name $ProxyIEFAppName --sign-in-audience AzureADMyOrg --public-client-redirect-uris myapp://auth --is-fallback-public-client true --query appId --output tsv --only-show-errors) -Start-SLeep 2 +Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it "$ProxyIEFClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append Write-Host "Granting permissions to the Proxy IEF application" @@ -187,11 +187,11 @@ az ad app permission grant --id $ProxyIEFClientID --api $IEFClientID --scope "us az ad app permission add --id $ProxyIEFClientID --api $IEFClientID --api-permissions "$IEFScopeGUID=Scope" --only-show-errors #endregion -#region "STEP 6: Create Permission Management app" -Write-Title "STEP 6: Creating Permission Management application" +#region "B2C STEP 6: Create Permission Management app" +Write-Title "B2C STEP 6: Creating Permission Management application" # $PermissionAppName = Read-Host "Please give a name for the permission management application to be created" $PermissionClientID = (az ad app create --display-name $PermissionAppName --sign-in-audience AzureADMyOrg --query appId --output tsv --only-show-errors) -Start-SLeep 2 +Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it "$PermissionClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append # create client secret @@ -215,16 +215,16 @@ az ad app permission add --id $PermissionClientID --api 00000003-0000-0000-c000- az ad app permission admin-consent --id $PermissionClientID --only-show-errors #endregion -#region "STEP 7: restrict access via whitelisting tenants" +#region "B2C STEP 7: restrict access via whitelisting tenants" # https://docs.microsoft.com/en-us/azure/active-directory-b2c/identity-provider-azure-ad-multi-tenant?pivots=b2c-custom-policy#restrict-access -Write-Title "STEP 7: Creating a whitelist for the tenants we wish to give access to" +Write-Title "B2C STEP 7: Creating a whitelist for the tenants we wish to give access to" Write-Host "Important - if no tenants are whitelisted; nobody will be able to access the AD" #TODO - make it a file $fileOrInputs="" while($fileOrInputs -ne "1" -and $fileOrInputs -ne "2") { - $fileOrInputs = Read-Host "Would you like to either:`n1. import a file with *all* the tenant ID's to be whitelisted`n2. input them 1 by 1 into the console? (1/2)" + $fileOrInputs = Read-Host "Would you like to either:`n1. import a file with *all* the tenant ID's to be whitelisted`n2. input them 1 by 1 into the console? `n(1/2)" } @@ -280,8 +280,8 @@ $whitelistString = $whitelist -join "," #endregion -#region "STEP 8: (Optional) linking facebook apps" -Write-Title "STEP 8: (Optional) linking facebook app" +#region "B2C STEP 8: (Optional) linking facebook apps" +Write-Title "B2C STEP 8: (Optional) linking facebook app" $HasFaceBookApp = "" while($HasFaceBookApp -ne "y" -and $HasFaceBookApp -ne "n"){ $HasFaceBookApp = Read-Host "Do you have a facebook application set up that you'd like to link? (y/n)" @@ -295,16 +295,16 @@ if($HasFaceBookApp -eq "y"){ #endregion -#region "STEP 9: looping through each CustomPolicyTemplate and creating bases of them in CustomTemplates" -Write-Title "STEP 9: Creating template custom policies" +#region "B2C STEP 9: looping through each CustomPolicyTemplate and creating bases of them in CustomTemplates" +Write-Title "B2C STEP 9: Creating template custom policies" Get-ChildItem ".\CustomPolicyTemplates\" | Foreach-Object { ((Get-Content -path $_.FullName -Raw)) | Set-Content -path (".\CustomPolicy\"+$_.Name) } #endregion -#region "Step 10: looping through each CustomPolicy and replacing their placeholder values to generate the final custom policies" -Write-Title "Step 10: Replacing values in template custom policies to generate finalised custom policies" +#region "B2C STEP 10: looping through each CustomPolicy and replacing their placeholder values to generate the final custom policies" +Write-Title "B2C STEP 10: Replacing values in template custom policies to generate finalised custom policies" Get-ChildItem ".\CustomPolicy\" | Foreach-Object { #ignore the gitkeep if($_.Name -ne ".gitkeep"){ @@ -325,7 +325,7 @@ Get-ChildItem ".\CustomPolicy\" | Foreach-Object { } #endregion -#region "STEP 11: Add signing and encryption keys and AADAppSecret for the IEF applications" +#region "B2C STEP 11: Add signing and encryption keys and AADAppSecret for the IEF applications" #region "Function for calculating the not before and expiry datetimes for the keys" function getNbfExp($num_months){ @@ -338,7 +338,7 @@ function getNbfExp($num_months){ } #endregion -Write-Title "Step 11: Adding signing and encryption keys and AADAppSecret for the IEF applications" +Write-Title "B2C STEP 11: Adding signing and encryption keys and AADAppSecret for the IEF applications" $num_months = 0 while($num_months -le 0){ @@ -385,8 +385,8 @@ while(1){ } } -#region "Step 11.A: Create the signing key" -Write-Title "Step 11.A: Creating the Signing Key" +#region "B2C STEP 11.A: Create the signing key" +Write-Title "B2C STEP 11.A: Creating the Signing Key" if($keysets -contains "B2C_1A_TokenSigningKeyContainer"){ Read-Host "B2C_1A_TokenSigningKeyContainer already exists, so cannot upload it again. If this is not expected, please terminate this script and run B2CCleanup.ps1 first." @@ -436,8 +436,8 @@ else{ #endregion -#region "Step 11.B: Create the encryption key" -Write-Title "Step 11.B: Creating the Signing Key" +#region "B2C STEP 11.B: Create the encryption key" +Write-Title "B2C STEP 11.B: Creating the Signing Key" if($keysets -contains "B2C_1A_TokenSigningKeyContainer"){ Read-Host "B2C_1A_TokenSigningKeyContainer already exists, so cannot upload it again. If this is not expected, please terminate this script and run B2CCleanup.ps1 first." @@ -486,8 +486,8 @@ Write-Host "Successfully generated and uploaded the encryption key" #endregion -#region "Step 11.C: Create the AADSecret keyset" -Write-Title "Step 11.C: Creating the AADAppSecret Key" +#region "B2C STEP 11.C: Create the AADSecret keyset" +Write-Title "B2C STEP 11.C: Creating the AADAppSecret Key" if($keysets -contains "B2C_1A_AADAppSecret"){ Read-Host "B2C_1A_AADAppSecret already exists, so cannot upload it again. If this is not expected, please terminate this script and run B2CCleanup.ps1 first." @@ -536,9 +536,9 @@ else{ #endregion -#region "Step 11.D: Create the Facebook keyset" -#TODO - eventually only run this step if we are using Facebook (and then use different contract templates for linking facebook vs without) -Write-Title "Step 11.D: Creating the Facebook Key" +#region "B2C STEP 11.D: Create the Facebook keyset" +#TODO - eventually only run this B2C STEP if we are using Facebook (and then use different contract templates for linking facebook vs without) +Write-Title "B2C STEP 11.D: Creating the Facebook Key" if($keysets -contains "B2C_1A_FacebookSecret"){ Read-Host "B2C_1A_FacebookSecret already exists, so cannot upload it again. If this is not expected, please terminate this script and run B2CCleanup.ps1 first." @@ -588,7 +588,7 @@ else{ #endregion #endregion -#region "STEP 12: uploading the custom policies to the b2c tenant" +#region "B2C STEP 12: uploading the custom policies to the b2c tenant" #region "Function for updating existing custom policy or uploading new custom policies" function CustomPolicyUpdateOrUpload($customPolicyName, $customPolicies, $access_token) { @@ -622,7 +622,7 @@ function CustomPolicyUpdateOrUpload($customPolicyName, $customPolicies, $access_ } #endregion -Write-Title "STEP 12: Uploading the custom policies to the b2c tenant" +Write-Title "B2C STEP 12: Uploading the custom policies to the b2c tenant" #getting list of all users in the tenant Write-Host "Getting the list of all custom policies in the tenant" diff --git a/deployment/Cleanup.ps1 b/deployment/Cleanup.ps1 index 64b86548..06ba311b 100644 --- a/deployment/Cleanup.ps1 +++ b/deployment/Cleanup.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "DM_ad14_MSLearnLTI", - [string]$AppName = "DM_ad14_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "DM_ad15_MSLearnLTI", + [string]$AppName = "DM_ad15_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null ) @@ -27,9 +27,9 @@ process { #function for writing errors function Write-Error([string]$Text) { - Write-Host "`n`n=============================================================`n" -ForegroundColor "black" -BackgroundColor "DarkRed" -NoNewline - Write-Host "Error!`n$Text" -ForegroundColor "black" -BackgroundColor "DarkRed" -NoNewline - Write-Host "`n=============================================================" -ForegroundColor "black" -BackgroundColor "DarkRed" + Write-Host "`n`n=============================================================`n" -ForegroundColor "red" -BackgroundColor "black" -NoNewline + Write-Host "Error!`n$Text" -ForegroundColor "red" -BackgroundColor "black" -NoNewline + Write-Host "`n=============================================================" -ForegroundColor "red" -BackgroundColor "black" } #endregion diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 3b8f9870..9a2441c6 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "DM_ad14_MSLearnLTI", - [string]$AppName = "DM_ad14_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "DM_ad15_MSLearnLTI", + [string]$AppName = "DM_ad15_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null @@ -28,9 +28,9 @@ process { #function for writing errors function Write-Error([string]$Text) { - Write-Host "`n`n=============================================================`n" -ForegroundColor "black" -BackgroundColor "DarkRed" -NoNewline - Write-Host "Error!`n$Text" -ForegroundColor "black" -BackgroundColor "DarkRed" -NoNewline - Write-Host "`n=============================================================" -ForegroundColor "black" -BackgroundColor "DarkRed" + Write-Host "`n`n=============================================================`n" -ForegroundColor "red" -BackgroundColor "black" -NoNewline + Write-Host "Error!`n$Text" -ForegroundColor "red" -BackgroundColor "black" -NoNewline + Write-Host "`n=============================================================" -ForegroundColor "red" -BackgroundColor "black" } #endregion @@ -44,7 +44,7 @@ process { class InvalidAzureRegionException: System.Exception{ $Emessage - InvalidAzureSubscriptionException([string]$msg){ + InvalidAzureRegionException([string]$msg){ $this.Emessage=$msg } } @@ -103,7 +103,7 @@ process { $REACT_APP_EDNA_B2C_TENANT = "'NA'" $B2C_ObjectID = "'NA'" if($b2cOrAD -eq "b2c"){ - Write-Title "B2C Step #1: Running the B2C Setup Script" + Write-Title "B2C Step #0: Running the B2C Setup Script" # TODO - verify these values are correct e.g. are we returning the correct values or should we return something else? $results = & ".\B2CDeployment.ps1" # TODO - verify that this can run this multiplatform as it only works on windows; may put mac and windows commands in a try catch @@ -165,7 +165,7 @@ process { $subscription = ($List | Where-Object { ($_.name -ieq $NameOrId) -or ($_.id -ieq $NameOrId) }) if(!$subscription) { - throw "Invalid Subscription Name/ID Entered." + throw [InvalidAzureSubscriptionException] "Invalid Subscription Name/ID Entered." } az account set --subscription $NameOrId #Intentionally not catching an exception here since the set subscription commands behavior (output) is different from others @@ -241,6 +241,10 @@ process { } catch [InvalidAzureRegionException]{ Write-Error $Error[0] + + $LocationName = Read-Host 'Enter Location From Above List for Resource Provisioning' + #trimming the input for empty spaces, if any + $LocationName = $LocationName.Trim() } } #endregion @@ -349,11 +353,6 @@ process { Write-Log -Message "Pointing to $graphUrl and using body $body" az rest --method PATCH --uri $graphUrl --headers 'Content-Type=application/json' --body $body - if ($b2cOrAD -eq "b2c"){ #Set the SPA uri link on the B2C as well - $graphUrl = "https://graph.microsoft.com/v1.0/applications/$B2C_ObjectID" - az rest --method PATCH --uri $graphUrl --headers 'Content-Type=application/json' --body $body - } - #Intentionally not catching an exception here since the app update commands behavior (output) is different from others Write-Host 'App Update Completed Successfully' @@ -428,6 +427,14 @@ process { Install-Client @ClientInstallParams #endregion + if ($b2cOrAD -eq "b2c"){ #Set the SPA uri link on the B2C as well + Write-Title 'STEP #13 (B2C Only) - Updating the B2C WebApp redirect URI' + az login --tenant "$REACT_APP_EDNA_B2C_TENANT.onmicrosoft.com" --allow-no-subscriptions --only-show-errors > $null + $graphUrl = "https://graph.microsoft.com/v1.0/applications/$B2C_ObjectID" + az rest --method PATCH --uri $graphUrl --headers 'Content-Type=application/json' --body $body + } + + Write-Title "TOOL REGISTRATION URL (Please Copy, Required for Next Steps) -> $($deploymentOutput.properties.outputs.webClientURL.value)platform" Write-Title '======== Successfully Deployed Resources to Azure ===========' From 88a88b069aa7f930375db421c21c026d0bd31aa4 Mon Sep 17 00:00:00 2001 From: DuyNguyen19993010 Date: Thu, 28 Jul 2022 14:50:08 +0100 Subject: [PATCH 142/285] Removed debug stop --- deployment/Deploy.ps1 | 1 - 1 file changed, 1 deletion(-) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 214754c2..aebcb3e8 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -101,7 +101,6 @@ process { ((Get-Content -path ".\azuredeployADTemplate.json" -Raw) -replace '', ("'"+$uniqueIdentifier+"'")) | Set-Content -path (".\azuredeploy.json") } #endregion - Read-Host "Debug stop..." #region Setup Logging . .\Write-Log.ps1 $ScriptPath = split-path -parent $MyInvocation.MyCommand.Definition From 9d92f0606ad4566035e9e2ea1f228b3ab59bb811 Mon Sep 17 00:00:00 2001 From: Lilin Huang Date: Thu, 28 Jul 2022 15:23:19 +0100 Subject: [PATCH 143/285] Add changes for the pull requested --- deployment/Deploy.ps1 | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index bb41f1a5..2d8f98aa 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -26,16 +26,16 @@ process { exit } else { - Write-Host "Azure CLI is installed." + Write-Host "Azure CLI $AzCliCheck is installed. We currently recommend using Microsoft CLI version 2.27. The most recent version is of Azure CLI has deprecated commands in use which will be addressed later." } # Checking .Net Framework is installed - $NetFrCheck= (dotnet --list-sdks) + $NetFrCheck= (dotnet --version) if( $NetFrCheck -eq $null){ Write-Host ".Net Framework is not installed and please go to this link to install. (https://dotnet.microsoft.com/en-us/download/dotnet/3.1?WT.mc_id=learnlti-github-cxa)" exit } else { - Write-Host ".Net Framework is installed." + Write-Host ".Net Framework $NetFrCheck is installed." } # Checking Node.js is installed $NodejsCheck= (node -v) @@ -44,7 +44,7 @@ process { exit } else { - Write-Host "Node.js is installed." + Write-Host "Node.js $NodejsCheck is installed." } # Checking Git is installed $GitCheck= (git --version) @@ -53,10 +53,10 @@ process { exit } else { - Write-Host "Git is installed." + Write-Host "$GitCheck is installed." } - Write-Host "All pre-requisites checks are done." + Write-Title "Confirming all pre-requisites are installed." try { #region Show Learn LTI Banner @@ -210,8 +210,8 @@ process { Write-Host "Checking if resource group already exists..." $checkResourceGroupExist = (az group exists --resource-group $ResourceGroupName) if($checkResourceGroupExist -eq $true){ - Write-Host "Resource Group exists. Please cleanup the existing resources to create the new one." - $choice = Read-Host "Do you want to cleanup the resources or do you want to exit? ('y' for cleanup or any other key for exit)" + Write-Host "The specified Resource Group $ResourceGroupName already exists." + $choice = Read-Host "Would you like to automatically cleanup this resource group, or exit the deployment process? ('y' for cleanup or any other key for exit)" $choice = $choice.Trim() if ($choice -eq 'y') { Write-Title "Running Cleanup Script" @@ -223,11 +223,7 @@ process { exit } } - else { - Write-Host "Continuing deployment process..." - } - #region Choose Region for Deployment Write-Title "STEP #3 - Choose Location`n(Please refer to the Documentation / ReadMe on Github for the List of Supported Locations)" From 7342c381ea7520bf2d730f22a5b68040cf031d70 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Thu, 28 Jul 2022 15:43:40 +0100 Subject: [PATCH 144/285] fixing merging issues --- client/.env.development | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/client/.env.development b/client/.env.development index 305e67e8..1ad0bd71 100644 --- a/client/.env.development +++ b/client/.env.development @@ -1,18 +1,3 @@ -<<<<<<< HEAD -GENERATE_SOURCEMAP='false' -REACT_APP_EDNA_AUTH_CLIENT_ID='2dcdb504-34c3-4463-ab8f-33a5c6e285c3' -REACT_APP_EDNA_B2C_TENANT='playltib2c' -REACT_APP_EDNA_B2C_CLIENT_ID='2dcdb504-34c3-4463-ab8f-33a5c6e285c3' -REACT_APP_EDNA_PLATFORM_SERVICE_URL='http://localhost:7075/api' -REACT_APP_EDNA_USERS_SERVICE_URL='http://localhost:7075/api' -REACT_APP_EDNA_LEARN_CONTENT='http://localhost:7074/api' -REACT_APP_EDNA_LINKS_SERVICE_URL='http://localhost:7073/api' -REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL='http://localhost:7071/api' -REACT_APP_EDNA_TENANT_ID='21510bb9-6414-46d0-9a07-1faf98f25937' -REACT_APP_EDNA_DEFAULT_SCOPE='api://f47872b6-bdeb-4b69-a3c2-25528a9a9f5b/default' -REACT_APP_EDNA_MAIN_URL='http://localhost:3000' -REACT_APP_EDNA_AAD_CLIENT_ID='f47872b6-bdeb-4b69-a3c2-25528a9a9f5b' -======= REACT_APP_EDNA_AAD_CLIENT_ID="f47872b6-bdeb-4b69-a3c2-25528a9a9f5b" REACT_APP_EDNA_MAIN_URL="http://localhost:3000" REACT_APP_EDNA_DEFAULT_SCOPE="api://f47872b6-bdeb-4b69-a3c2-25528a9a9f5b/default" @@ -25,4 +10,3 @@ REACT_APP_EDNA_PLATFORM_SERVICE_URL="http://localhost:7072/api" REACT_APP_EDNA_B2C_CLIENT_ID='0cd1d1d6-a7aa-41e2-b569-1ca211147973' REACT_APP_EDNA_B2C_TENANT='ltimoodleb2c' REACT_APP_EDNA_AUTH_CLIENT_ID='0cd1d1d6-a7aa-41e2-b569-1ca211147973' ->>>>>>> origin/all-test1 From 202c9b0e3db6d9356d6961989125d610ff82c05b Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Thu, 28 Jul 2022 15:44:20 +0100 Subject: [PATCH 145/285] Fixed merge error --- client/.env.development | 15 --------------- client/src/Core/Auth/AppAuthConfig.ts | 24 +++++------------------- 2 files changed, 5 insertions(+), 34 deletions(-) diff --git a/client/.env.development b/client/.env.development index 305e67e8..0ee19953 100644 --- a/client/.env.development +++ b/client/.env.development @@ -1,4 +1,3 @@ -<<<<<<< HEAD GENERATE_SOURCEMAP='false' REACT_APP_EDNA_AUTH_CLIENT_ID='2dcdb504-34c3-4463-ab8f-33a5c6e285c3' REACT_APP_EDNA_B2C_TENANT='playltib2c' @@ -12,17 +11,3 @@ REACT_APP_EDNA_TENANT_ID='21510bb9-6414-46d0-9a07-1faf98f25937' REACT_APP_EDNA_DEFAULT_SCOPE='api://f47872b6-bdeb-4b69-a3c2-25528a9a9f5b/default' REACT_APP_EDNA_MAIN_URL='http://localhost:3000' REACT_APP_EDNA_AAD_CLIENT_ID='f47872b6-bdeb-4b69-a3c2-25528a9a9f5b' -======= -REACT_APP_EDNA_AAD_CLIENT_ID="f47872b6-bdeb-4b69-a3c2-25528a9a9f5b" -REACT_APP_EDNA_MAIN_URL="http://localhost:3000" -REACT_APP_EDNA_DEFAULT_SCOPE="api://f47872b6-bdeb-4b69-a3c2-25528a9a9f5b/default" -REACT_APP_EDNA_TENANT_ID="21510bb9-6414-46d0-9a07-1faf98f25937" -REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL="http://localhost:7071/api" -REACT_APP_EDNA_LINKS_SERVICE_URL="http://localhost:7073/api" -REACT_APP_EDNA_LEARN_CONTENT="http://localhost:7074/api" -REACT_APP_EDNA_USERS_SERVICE_URL="http://localhost:7075/api" -REACT_APP_EDNA_PLATFORM_SERVICE_URL="http://localhost:7072/api" -REACT_APP_EDNA_B2C_CLIENT_ID='0cd1d1d6-a7aa-41e2-b569-1ca211147973' -REACT_APP_EDNA_B2C_TENANT='ltimoodleb2c' -REACT_APP_EDNA_AUTH_CLIENT_ID='0cd1d1d6-a7aa-41e2-b569-1ca211147973' ->>>>>>> origin/all-test1 diff --git a/client/src/Core/Auth/AppAuthConfig.ts b/client/src/Core/Auth/AppAuthConfig.ts index ee8efd16..86fdeabd 100644 --- a/client/src/Core/Auth/AppAuthConfig.ts +++ b/client/src/Core/Auth/AppAuthConfig.ts @@ -74,29 +74,15 @@ const config: Configuration = { } }; -<<<<<<< HEAD const authParams: AuthenticationParameters = { //TODO - remove the hard coded ltimoodleb2c!!! //old hard coded scopes - scopes: ['https://' + process.env.REACT_APP_EDNA_B2C_TENANT! + '.onmicrosoft.com/api/b2c.read'] // RB: 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read' // b2c scope - // scopes: [ //AD scopes - // //'https://ltimoodleb2c.onmicrosoft.com/api/user_impersonation', - // 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read' - // ] // RB: 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read' + // scopes: ['https://' + process.env.REACT_APP_EDNA_B2C_TENANT! + '.onmicrosoft.com/api/b2c.read'] // RB: 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read' // b2c scope + scopes: [ //AD scopes + //'https://ltimoodleb2c.onmicrosoft.com/api/user_impersonation', + 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read' + ] // RB: 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read' }; -======= -// Todo, may no longer be neccessary -// const authParams: AuthenticationParameters = { -// //scopes: ['https://' + process.env.REACT_APP_EDNA_B2C_TENANT! + '.onmicrosoft.com/api/b2c.read'] // RB: 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read' -// scopes: [ -// // TODO: unclear what is needed for custom policies -// //'https://ltimoodleb2c.onmicrosoft.com/api/user_impersonation', -// 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read', -// 'openid', -// 'profile' -// ] -// }; ->>>>>>> origin/all-test1 // Todo, may no longer be neccessary // const options: IMsalAuthProviderConfig = { From 6d5696ebbd216f79c9a5c260d6a70880ff66fd09 Mon Sep 17 00:00:00 2001 From: Sundram Goyal Date: Thu, 28 Jul 2022 18:21:09 +0100 Subject: [PATCH 146/285] update on .net framework --- deployment/Deploy.ps1 | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 2d8f98aa..d5811e08 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -28,15 +28,22 @@ process { else { Write-Host "Azure CLI $AzCliCheck is installed. We currently recommend using Microsoft CLI version 2.27. The most recent version is of Azure CLI has deprecated commands in use which will be addressed later." } - # Checking .Net Framework is installed + # Checking .Net core 3.1 Framework is installed $NetFrCheck= (dotnet --version) if( $NetFrCheck -eq $null){ - Write-Host ".Net Framework is not installed and please go to this link to install. (https://dotnet.microsoft.com/en-us/download/dotnet/3.1?WT.mc_id=learnlti-github-cxa)" - exit + Write-Host ".Net Framework is not installed and please go to this link to install '.Net core 3.1 version'. (https://dotnet.microsoft.com/en-us/download/dotnet/3.1?WT.mc_id=learnlti-github-cxa)" + exit } else { - Write-Host ".Net Framework $NetFrCheck is installed." - } + [int]$NetFrCheck1= (dotnet --version).Split(".")[0] + [int]$NetFrCheck2= (dotnet --version).Split(".")[1] + if( $NetFrCheck1 -eq 3 && $NetFrCheck2 -eq 1){ + Write-Host ".Net Framework $NetFrCheck is installed." + } + else { + Write-Host "Correct .Net Framework is not installed and please go to this link to install '.Net core 3.1 version'. (https://dotnet.microsoft.com/en-us/download/dotnet/3.1?WT.mc_id=learnlti-github-cxa)" + exit + } # Checking Node.js is installed $NodejsCheck= (node -v) if( $NodejsCheck -eq $null){ From 77c2ecf31799c799d553db79f2359553824746d9 Mon Sep 17 00:00:00 2001 From: Lilin Huang Date: Thu, 28 Jul 2022 18:43:39 +0100 Subject: [PATCH 147/285] Add the lost bracket --- deployment/Deploy.ps1 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index d5811e08..8810bef7 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -41,9 +41,10 @@ process { Write-Host ".Net Framework $NetFrCheck is installed." } else { - Write-Host "Correct .Net Framework is not installed and please go to this link to install '.Net core 3.1 version'. (https://dotnet.microsoft.com/en-us/download/dotnet/3.1?WT.mc_id=learnlti-github-cxa)" + Write-Host "Correct .Net Framework is not installed and your version is $NetFrCheck. Please go to this link to install '.Net core 3.1 version'. (https://dotnet.microsoft.com/en-us/download/dotnet/3.1?WT.mc_id=learnlti-github-cxa)" exit } + } # Checking Node.js is installed $NodejsCheck= (node -v) if( $NodejsCheck -eq $null){ From df809afea51b203a41256585d20e234b69b83ad5 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Fri, 29 Jul 2022 10:55:09 +0100 Subject: [PATCH 148/285] testing changes --- deployment/B2CCleanup.ps1 | 4 +- deployment/B2CDeployment.ps1 | 19 +- deployment/Deploy.ps1 | 65 ++- deployment/azuredeployB2CTemplate.json | 578 +------------------------ 4 files changed, 56 insertions(+), 610 deletions(-) diff --git a/deployment/B2CCleanup.ps1 b/deployment/B2CCleanup.ps1 index d65a6561..8b6ab50c 100644 --- a/deployment/B2CCleanup.ps1 +++ b/deployment/B2CCleanup.ps1 @@ -46,8 +46,8 @@ $response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/p Write-Host "Deleting B2C_1A_TrustFrameworkExtensions" $response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies/B2C_1A_TrustFrameworkExtensions' -Method 'DELETE' -Headers $headers -Write-Host "Deleting B2C_1A_signup_signin" -$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies/B2C_1A_signup_signin' -Method 'DELETE' -Headers $headers +Write-Host "Deleting B2C_1A_signin" +$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies/B2C_1A_signin' -Method 'DELETE' -Headers $headers Write-Host "Deleting B2C_1A_ProfileEdit" $response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies/B2C_1A_ProfileEdit' -Method 'DELETE' -Headers $headers diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 1efd914f..35f2a24c 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -112,10 +112,11 @@ $ObjectId = $appinfo.id "$WebClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append # create client secret -Write-Host "Creating the client secret for $B2cAppName" +Write-Host "Creating the client secret for $B2cAppName with id $WebClientID" # $WebClientSecretName = Read-Host "Please give a name for the client secret to be created" $WebClientSecretDuration = 1 -$WebClientSecret = (az ad app credential reset --id $WebClientID --append --display-name $WebClientSecretName --years $WebClientSecretDuration --query password --output tsv --only-show-errors) +$WebClientInfo = (az ad app credential reset --id $WebClientID --append --display-name $WebClientSecretName --years $WebClientSecretDuration --only-show-errors) | ConvertFrom-Json +$WebClientSecret = $webClientInfo.password Write-Color "green" "Client ID for $B2cAppName`: $WebClientID" Write-Color "green" "Please take a moment to make a note of and protect the following client secret; as you will not be able to access it again." Write-Color "green" "Client secret for $B2cAppName`: $WebClientSecret" @@ -134,12 +135,13 @@ az ad app permission add --id $WebClientID --api 00000003-0000-0000-c000-0000000 #region "B2C STEP 4: Create IdentityExperienceFramework app" Write-Title "B2C STEP 4: Creating the Identity Experience Framework application" $IEFAppName = "IdentityExperienceFramework" -$IEFClientID = (az ad app create --display-name $IEFAppName --sign-in-audience AzureADMyOrg --web-redirect-uris https://$B2cTenantName.b2clogin.com/$B2cTenantName.onmicrosoft.com --query appId --output tsv --only-show-errors) +$IEFAppInfo = (az ad app create --display-name $IEFAppName --sign-in-audience AzureADMyOrg --web-redirect-uris https://$B2cTenantName.b2clogin.com/$B2cTenantName.onmicrosoft.com --only-show-errors) | ConvertFrom-Json +$IEFClientID = $IEFAppInfo.appId Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it "$IEFClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append # set permissions for the IEF app -Write-Host "Granting permissions to the IEF application" +Write-Host "Granting permissions to the IEF application at id $IEFClientID" az ad sp create --id $IEFClientID --only-show-errors 2>&1 > $null az ad app permission grant --id $IEFClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null az ad app permission add --id $IEFClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors @@ -147,7 +149,7 @@ az ad app permission add --id $IEFClientID --api 00000003-0000-0000-c000-0000000 # expose the user_impersonation API Write-Host "Exposing the user_impersonation API" az ad app update --id $IEFClientID --identifier-uris "https://$B2cTenantName.onmicrosoft.com/$IEFClientID" --only-show-errors -$IEFAppInfo = (az ad app show --id $IEFClientID --only-show-errors | ConvertFrom-Json) +$IEFAppInfo = (az ad app show --id $IEFClientID --only-show-errors) | ConvertFrom-Json $IEFAppApiInfo = $IEFAppInfo.api $IEFScopeGUID = [guid]::NewGuid() $UserImpersonationScope = "{ @@ -175,11 +177,12 @@ Remove-Item userImpersonationScope.json #region "B2C STEP 5: Create ProxyIEF app" Write-Title "B2C STEP 5: Creating the Proxy Identity Experience Framework application" $ProxyIEFAppName = "ProxyIdentityExperienceFramework" -$ProxyIEFClientID = (az ad app create --display-name $ProxyIEFAppName --sign-in-audience AzureADMyOrg --public-client-redirect-uris myapp://auth --is-fallback-public-client true --query appId --output tsv --only-show-errors) +$ProxyIEFAppInfo = (az ad app create --display-name $ProxyIEFAppName --sign-in-audience AzureADMyOrg --public-client-redirect-uris myapp://auth --is-fallback-public-client true --only-show-errors) | ConvertFrom-Json +$ProxyIEFClientID = $ProxyIEFAppInfo.appId Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it "$ProxyIEFClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append -Write-Host "Granting permissions to the Proxy IEF application" +Write-Host "Granting permissions to the Proxy IEF application at Id $ProxyIEFClientID" az ad sp create --id $ProxyIEFClientID --only-show-errors 2>&1 > $null az ad app permission grant --id $ProxyIEFClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null az ad app permission add --id $ProxyIEFClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors @@ -645,4 +648,4 @@ CustomPolicyUpdateOrUpload "B2C_1A_PasswordReset" $customPolicies $access_token #endregionWebClientID #returning values required by the Deploy.ps1 script -return $WebClientID, $WebClientSecret, $B2cTenantName, $ObjectId \ No newline at end of file +return $ADTenantName, $B2cTenantName, $WebClientID, $WebClientSecret, $B2cTenantName, $ObjectId \ No newline at end of file diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 7b7a96b2..99d9c452 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "DM_ad15_MSLearnLTI", - [string]$AppName = "DM_ad15_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "AllB2C_test2_MSLearnLTI", + [string]$AppName = "AllB2C_test2_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null @@ -70,37 +70,6 @@ process { } #endregion - - - #region "formatting a unique identifier to ensure we create a new keyvault for each run" - $uniqueIdentifier = [Int64]((Get-Date).ToString('yyyyMMddhhmmss')) #get the current second as being the unique identifier - #if its b2c load the b2c azuredeploy template - if($b2cOrAD -eq "b2c"){ - ((Get-Content -path ".\azuredeployB2CTemplate.json" -Raw) -replace '', ("'"+$uniqueIdentifier+"'")) | Set-Content -path (".\azuredeploy.json") - - #Update's prerequsites - - $b2c_tenant_name = "ltimoodleb2c" - $policy_name = "b2c_1a_signup_signin" - - #Updating function apps's settings - - $B2C_APP_CLIENT_ID_IDENTIFIER = "0cd1d1d6-a7aa-41e2-b569-1ca211147973" # TODO remove hardcode - $AD_APP_CLIENT_ID_IDENTIFIER = "cb508fc8-6a5f-49b1-b688-dac065ba59e4" # TODO remove hardcode - $OPENID_B2C_CONFIG_URL_IDENTIFIER = "https://"+$b2c_tenant_name+".b2clogin.com/ltimoodleb2c.onmicrosoft.com/"+$policy_name+"/v2.0/.well-known/openid-configuration" # TODO remove hardcode - $OPENDID_AD_CONFIG_URL_IDENTIFIER = "https://login.microsoft.com/uclmsclearnlti.onmicrosoft.com/v2.0/.well-known/openid-configuration" # TODO remove hardcode - - ((Get-Content -path ".\azuredeploy.json" -Raw) -replace '', ($B2C_APP_CLIENT_ID_IDENTIFIER))` - -replace '', ($AD_APP_CLIENT_ID_IDENTIFIER)` - -replace '', ($OPENID_B2C_CONFIG_URL_IDENTIFIER)` - -replace '', ($OPENDID_AD_CONFIG_URL_IDENTIFIER) | Set-Content -path (".\azuredeploy.json") - - } - #else its AD load the AD azuredeploy template - else{ - ((Get-Content -path ".\azuredeployADTemplate.json" -Raw) -replace '', ("'"+$uniqueIdentifier+"'")) | Set-Content -path (".\azuredeploy.json") - } - #endregion #region Setup Logging . .\Write-Log.ps1 $ScriptPath = split-path -parent $MyInvocation.MyCommand.Definition @@ -114,6 +83,8 @@ process { Start-Transcript -Path $TranscriptFile; #endregion + #formatting a unique identifier to ensure we create a new keyvault for each run + $uniqueIdentifier = [Int64]((Get-Date).ToString('yyyyMMddhhmmss')) #get the current second as being the unique identifier #region "B2C STEP 1: Calling B2CDeployment to set up the b2c script and retrieving the returned values to be used later on" $REACT_APP_EDNA_B2C_CLIENT_ID = "'NA'" @@ -121,20 +92,48 @@ process { $b2c_secret = "'NA'" $REACT_APP_EDNA_B2C_TENANT = "'NA'" $B2C_ObjectID = "'NA'" + $b2c_tenant_name = "'NA'" if($b2cOrAD -eq "b2c"){ Write-Title "B2C Step #0: Running the B2C Setup Script" # TODO - verify these values are correct e.g. are we returning the correct values or should we return something else? $results = & ".\B2CDeployment.ps1" # TODO - verify that this can run this multiplatform as it only works on windows; may put mac and windows commands in a try catch # TODO - indexing from -1 etc. because it seems to return meaningless values before the final 3 which we actually want; need to work out why and perhaps fix if it is deemed an issue + $AD_Tenant_Name = $results[-6] # tenant name of the AD server + $b2c_tenant_name = $results[-5] #b2c tenant name $REACT_APP_EDNA_B2C_CLIENT_ID = $results[-4] #webclient ID $REACT_APP_EDNA_AUTH_CLIENT_ID = $results[-4] #webclient ID $b2c_secret = $results[-3] #webclient secret $REACT_APP_EDNA_B2C_TENANT = $results[-2] #b2c tenant name $B2C_ObjectID = $results[-1] # b2c webapp id that needs the SPA uri + + #update b2c deploy template + $policy_name = "b2c_1a_signin" + + #Updating function apps's settings + ((Get-Content -path ".\azuredeployB2CTemplate.json" -Raw) -replace '', ("'"+$uniqueIdentifier+"'")) | Set-Content -path (".\azuredeploy.json") + + #$B2C_APP_CLIENT_ID_IDENTIFIER = "0cd1d1d6-a7aa-41e2-b569-1ca211147973" # TODO remove hardcode + #$AD_APP_CLIENT_ID_IDENTIFIER = "cb508fc8-6a5f-49b1-b688-dac065ba59e4" # TODO remove hardcode + $OPENID_B2C_CONFIG_URL_IDENTIFIER = "https://${b2c_tenant_name}.b2clogin.com/${b2c_tenant_name}.onmicrosoft.com/${policy_name}/v2.0/.well-known/openid-configuration" + $OPENID_AD_CONFIG_URL_IDENTIFIER = "https://login.microsoft.com/${AD_Tenant_Name}.onmicrosoft.com/v2.0/.well-known/openid-configuration" + + Write-Title $OPENID_B2C_CONFIG_URL_IDENTIFIER + Write-Title $OPENID_AD_CONFIG_URL_IDENTIFIER + + (Get-Content -path ".\azuredeployB2CTemplate.json" -Raw) ` + -replace '', ($REACT_APP_EDNA_B2C_CLIENT_ID) ` + -replace '', ("'"+$uniqueIdentifier+"'") ` + -replace '', ($OPENID_B2C_CONFIG_URL_IDENTIFIER) ` + -replace '', ($OPENID_AD_CONFIG_URL_IDENTIFIER) | Set-Content -path (".\azuredeploy.json") } #endregion + #else its AD load the AD azuredeploy template + else{ + ((Get-Content -path ".\azuredeployADTemplate.json" -Raw) -replace '', ("'"+$uniqueIdentifier+"'")) | Set-Content -path (".\azuredeploy.json") + } + #region Login to Azure CLI Write-Title 'STEP #1 - Logging into Azure' diff --git a/deployment/azuredeployB2CTemplate.json b/deployment/azuredeployB2CTemplate.json index ba7aa2f6..0e67f1ff 100644 --- a/deployment/azuredeployB2CTemplate.json +++ b/deployment/azuredeployB2CTemplate.json @@ -1,558 +1,3 @@ -<<<<<<< HEAD:deployment/azuredeploy.json -{ - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "appRegistrationClientId": { - "type": "string", - "defaultValue": "dc0fcdd9-727f-47a3-8f15-4dcb813919fc" - }, - "appRegistrationApiURI": { - "type": "string", - "defaultValue": "api://10ef1e6b-1171-4888-92d5-c661b428796b" - }, - "userEmailAddress": { - "type": "string", - "defaultValue": "user@microsoft.com" - }, - "userObjectId": { - "type": "string", - "defaultValue": "" - } - }, - "variables": { - "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, '20220725104006'),0,9)]", - "functionList": [ - "connect", - "assignments", - "learncontent", - "links", - "platforms", - "users" - ], - "AzureB2C_AUTHENTICATION_SECRET": "", - "enabledForDeployment": false, - "enabledForDiskEncryption": false, - "enabledForTemplateDeployment": false, - "tenantId": "[subscription().tenantId]", - "skuName": "Standard", - "location": "[resourceGroup().location]", - "runtimeStack": "dotnet", - "resourceGroupName": "[resourceGroup().name]", - "StorageAccountSuffix": "[toLower(replace(variables('uniqueIdentifier'),'-',''))]", - "ProjectNameSuffix": "[concat('-', variables('StorageAccountSuffix'))]", - "staticWebsite": "[toLower(concat('learnclient', variables('StorageAccountSuffix')))]", - "keyVaultName": "[toLower(concat('kv', variables('ProjectNameSuffix')))]", - "KeyVaultAuditLogsStorageAccountName": "[toLower(concat('kv' , variables('StorageAccountSuffix'), 'auditlogs'))]", - "readerRoleDefinitionId": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]", - "KVKeyPermissions": [ - "encrypt", - "decrypt", - "wrapKey", - "unwrapKey", - "sign", - "verify", - "get" - ] - }, - "resources": [ - { - "type": "Microsoft.Web/sites", - "apiVersion": "2019-08-01", - "name": "[concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix'))]", - "location": "[variables('location')]", - "dependsOn": [ - "[resourceId('Microsoft.Web/serverfarms', concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix')))]", - "[resourceId('Microsoft.Storage/storageAccounts', concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('StorageAccountSuffix')))]", - "[resourceId('microsoft.insights/components', concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix')))]" - ], - "kind": "functionapp", - "identity": { - "type": "SystemAssigned" - }, - "properties": { - "httpsOnly": true, - "siteConfig": { - "appSettings": [ - { - "name": "FUNCTIONS_WORKER_RUNTIME", - "value": "[variables('runtimeStack')]" - }, - { - "name": "AzureWebJobsStorage", - "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]" - }, - { - "name": "FUNCTIONS_EXTENSION_VERSION", - "value": "~3" - }, - { - "name": "APPINSIGHTS_INSTRUMENTATIONKEY", - "value": "[reference(resourceId('microsoft.insights/components', concat(variables('functionList')[copyIndex('FunctionatIndex')] , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]" - }, - { - "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING", - "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]" - }, - { - "name": "WEBSITE_CONTENTSHARE", - "value": "[toLower(concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix')))]" - }, - { - "name": "APPLICATIONINSIGHTS_CONNECTION_STRING", - "value": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]" - }, - { - "name": "WEBSITE_ENABLE_SYNC_UPDATE_SITE", - "value": "true" - }, - { - "name": "WEBSITE_RUN_FROM_PACKAGE", - "value": "1" - } - ], - "cors": { - "allowedOrigins": [ - "[substring(reference(resourceId('Microsoft.Storage/storageAccounts/', variables('staticWebsite'))).primaryEndpoints.web,0,sub(length(reference(resourceId('Microsoft.Storage/storageAccounts/', variables('staticWebsite'))).primaryEndpoints.web),1))]" - ] - }, - "ftpsState": "Disabled", - "minTlsVersion": "1.2" - }, - "name": "[concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix'))]", - "clientAffinityEnabled": false, - "serverFarmId": "[resourceId('Microsoft.Web/serverfarms/',concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix')))]" - }, - "copy": { - "name": "FunctionatIndex", - "count": "[length(variables('functionList'))]" - } - }, - { - "name": "[concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix'),'/authsettingsV2')]", - "apiVersion": "2021-03-01", - "type": "Microsoft.Web/sites/config", - "location": "[resourceGroup().location]", - "dependsOn": [ - "[resourceId('Microsoft.Web/sites', concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix')))]" - ], - "properties": { - "platform": { - "enabled": "[if(equals(concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix')),concat('connect', variables('ProjectNameSuffix'))), 'false', 'true')]", - "runtimeVersion": "~1" - }, - "globalValidation": { - "requireAuthentication": true, - "unauthenticatedClientAction": "RedirectToLoginPage", - "redirectToProvider": "AzureB2CCustomPolicy" - }, - "identityProviders": { - "azureActiveDirectory": { - "enabled": true, - "registration": { - "openIdIssuer": "[concat('https://sts.windows.net/', variables('tenantId'), '/')]", - "clientId": "[parameters('appRegistrationClientId')]" - }, - "validation": { - "jwtClaimChecks": {}, - "allowedAudiences": [ - "[parameters('appRegistrationApiURI')]" - ], - "defaultAuthorizationPolicy": { - "allowedPrincipals": {} - } - } - }, - "customOpenIdConnectProviders": { - "AzureB2CCustomPolicy": - { - "registration": { - "clientId": "0cd1d1d6-a7aa-41e2-b569-1ca211147973", - "clientCredential": { - "clientSecretSettingName": "AzureB2C_AUTHENTICATION_SECRET" - }, - "openIdConnectConfiguration": { - "wellKnownOpenIdConfiguration": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/B2C_1a_signin/v2.0/.well-known/openid-configuration?p=B2C_1A_SIGNIN" - } - } - } - } - }, - "login": { - "tokenStore": { - "enabled": true - }, - "preserveUrlFragmentsForLogins": false - } - }, - "copy": { - "name": "FunctionatIndex", - "count": "[length(variables('functionList'))]" - } - }, - { - "name": "[concat('connect', variables('ProjectNameSuffix'), '/appsettings')]", - "apiVersion": "2018-11-01", - "type": "Microsoft.Web/sites/config", - "location": "[resourceGroup().location]", - "dependsOn": [ - "[resourceId('Microsoft.Web/sites', concat('connect' , variables('ProjectNameSuffix')))]" - ], - "properties": { - "AuthUrl": "[parameters('appRegistrationApiURI')]", - "DidDeployWork": "true", - "AzureB2C_AUTHENTICATION_SECRET": "[variables('AzureB2C_AUTHENTICATION_SECRET')]", - "AssignmentsServiceUrl": "[concat('https://', 'assignments' , variables('ProjectNameSuffix'), '.azurewebsites.net/api/')]", - "Lti1Secret": "LearnLTI", - "PlatformsServiceUrl": "[concat('https://', 'platforms', variables('ProjectNameSuffix'), '.azurewebsites.net/api/')]", - "RedirectUrl": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('staticWebsite'))).primaryEndpoints.web]", - "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", - "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('connect' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('connect' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", - "FUNCTIONS_EXTENSION_VERSION": "~3", - "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components', concat('connect' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]", - "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat('connect' , variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('connect' , variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]", - "WEBSITE_CONTENTSHARE": "[toLower(concat('connect' , variables('ProjectNameSuffix')))]", - "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('connect' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", - "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", - "WEBSITE_RUN_FROM_PACKAGE": "1" - } - }, - { - "name": "[concat('users', variables('ProjectNameSuffix'), '/appsettings')]", - "apiVersion": "2018-11-01", - "type": "Microsoft.Web/sites/config", - "location": "[resourceGroup().location]", - "dependsOn": [ - "[resourceId('Microsoft.Web/sites', concat('users', variables('ProjectNameSuffix')))]" - ], - "properties": { - "AuthUrl": "[parameters('appRegistrationApiURI')]", - "AzureB2C_AUTHENTICATION_SECRET": "[variables('AzureB2C_AUTHENTICATION_SECRET')]", - "AssignmentsServiceUrl": "[concat('https://', 'assignments', variables('ProjectNameSuffix'), '.azurewebsites.net/api/')]", - "Lti1Secret": "LearnLTI", - "PlatformsServiceUrl": "[concat('https://', 'platforms', variables('ProjectNameSuffix'), '.azurewebsites.net/api/')]", - "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", - "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('users' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('users' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", - "FUNCTIONS_EXTENSION_VERSION": "~3", - "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components', concat('users' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]", - "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat('users' , variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('users' , variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]", - "WEBSITE_CONTENTSHARE": "[toLower(concat('users' , variables('ProjectNameSuffix')))]", - "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('users' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", - "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", - "WEBSITE_RUN_FROM_PACKAGE": "1" - } - }, - { - "name": "[concat('assignments' , variables('ProjectNameSuffix'), '/appsettings')]", - "apiVersion": "2018-11-01", - "type": "Microsoft.Web/sites/config", - "location": "[resourceGroup().location]", - "dependsOn": [ - "[resourceId('Microsoft.Web/sites', concat('assignments' , variables('ProjectNameSuffix')))]" - ], - "properties": { - "AuthUrl": "[parameters('appRegistrationApiURI')]", - "DidDeployWork": "true", - "AzureB2C_AUTHENTICATION_SECRET": "[variables('AzureB2C_AUTHENTICATION_SECRET')]", - "PlatformsServiceUrl": "[concat('https://','platforms' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", - "UsersServiceUrl": "[concat('https://','users' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", - "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", - "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('assignments' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('assignments' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", - "FUNCTIONS_EXTENSION_VERSION": "~3", - "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components', concat('assignments' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]", - "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat('assignments' , variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('assignments' , variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]", - "WEBSITE_CONTENTSHARE": "[toLower(concat('assignments' , variables('ProjectNameSuffix')))]", - "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('assignments' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", - "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", - "WEBSITE_RUN_FROM_PACKAGE": "1" - } - }, - { - "name": "[concat('platforms' , variables('ProjectNameSuffix'),'/appsettings')]", - "apiVersion": "2018-11-01", - "type": "Microsoft.Web/sites/config", - "location": "[resourceGroup().location]", - "dependsOn": [ - "[resourceId('Microsoft.Web/sites', concat('platforms' , variables('ProjectNameSuffix')))]" - ], - "properties": { - "AllowedUsers": "[parameters('userEmailAddress')]", - "AzureB2C_AUTHENTICATION_SECRET": "[variables('AzureB2C_AUTHENTICATION_SECRET')]", - "AuthUrl": "[parameters('appRegistrationApiURI')]", - "DidDeployWork": "true", - "ConnectApiBaseUrl": "[concat('https://','connect' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", - "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", - "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('platforms' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('platforms' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", - "FUNCTIONS_EXTENSION_VERSION": "~3", - "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components', concat('platforms' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]", - "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat('platforms' , variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('platforms' , variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]", - "WEBSITE_CONTENTSHARE": "[toLower(concat('platforms' , variables('ProjectNameSuffix')))]", - "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('platforms' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", - "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", - "WEBSITE_RUN_FROM_PACKAGE": "1" - } - }, - { - "name": "[concat('links', variables('ProjectNameSuffix'), '/appsettings')]", - "apiVersion": "2018-11-01", - "type": "Microsoft.Web/sites/config", - "location": "[resourceGroup().location]", - "dependsOn": [ - "[resourceId('Microsoft.Web/sites', concat('links' , variables('ProjectNameSuffix')))]" - ], - "properties": { - "AuthUrl": "[parameters('appRegistrationApiURI')]", - "AzureB2C_AUTHENTICATION_SECRET": "[variables('AzureB2C_AUTHENTICATION_SECRET')]", - "UsersServiceUrl": "[concat('https://','users' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", - "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", - "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('links' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('links' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", - "FUNCTIONS_EXTENSION_VERSION": "~3", - "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components', concat('links' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]", - "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat('links' , variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('links' , variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]", - "WEBSITE_CONTENTSHARE": "[toLower(concat('links' , variables('ProjectNameSuffix')))]", - "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('links' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", - "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", - "WEBSITE_RUN_FROM_PACKAGE": "1" - } - }, - { - "name": "[concat('learncontent', variables('ProjectNameSuffix'), '/appsettings')]", - "apiVersion": "2018-11-01", - "type": "Microsoft.Web/sites/config", - "location": "[resourceGroup().location]", - "dependsOn": [ - "[resourceId('Microsoft.Web/sites', concat('learncontent' , variables('ProjectNameSuffix')))]" - ], - "properties": { - "AuthUrl": "[parameters('appRegistrationApiURI')]", - "AzureB2C_AUTHENTICATION_SECRET": "[variables('AzureB2C_AUTHENTICATION_SECRET')]", - "UsersServiceUrl": "[concat('https://','users' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", - "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", - "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('learncontent' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('learncontent' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", - "FUNCTIONS_EXTENSION_VERSION": "~3", - "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components', concat('learncontent' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]", - "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat('learncontent' , variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('learncontent' , variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]", - "WEBSITE_CONTENTSHARE": "[toLower(concat('learncontent' , variables('ProjectNameSuffix')))]", - "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('learncontent' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", - "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", - "WEBSITE_RUN_FROM_PACKAGE": "1" - } - }, - { - "type": "Microsoft.Web/serverfarms", - "apiVersion": "2019-08-01", - "name": "[concat(variables('functionList')[copyIndex('FunctionatIndex')] , variables('ProjectNameSuffix'))]", - "location": "[variables('location')]", - "sku": { - "name": "Y1", - "tier": "Dynamic", - "size": "Y1", - "family": "Y", - "capacity": 0 - }, - "properties": { - "name": "[concat(variables('functionList')[copyIndex('FunctionatIndex')] , variables('ProjectNameSuffix'))]" - }, - "copy": { - "name": "FunctionatIndex", - "count": "[length(variables('functionList'))]" - } - }, - { - "type": "Microsoft.Storage/storageAccounts", - "apiVersion": "2019-04-01", - "name": "[variables('staticWebsite')]", - "location": "[resourceGroup().location]", - "sku": { - "name": "Standard_LRS", - "tier": "Standard" - }, - "kind": "StorageV2" - }, - { - "type": "Microsoft.Storage/storageAccounts", - "apiVersion": "2019-06-01", - "name": "[concat(variables('functionList')[copyIndex('FunctionatIndex')] , variables('StorageAccountSuffix'))]", - "location": "[variables('location')]", - "sku": { - "name": "Standard_LRS" - }, - "copy": { - "name": "FunctionatIndex", - "count": "[length(variables('functionList'))]" - } - }, - { - "type": "Microsoft.Storage/storageAccounts", - "apiVersion": "2019-06-01", - "name": "[variables('KeyVaultAuditLogsStorageAccountName')]", - "location": "[variables('location')]", - "sku": { - "name": "Standard_LRS" - } - }, - { - "type": "Microsoft.Insights/components", - "apiVersion": "2018-05-01-preview", - "name": "[concat(variables('functionList')[copyIndex('FunctionatIndex')] , variables('ProjectNameSuffix'))]", - "location": "[variables('location')]", - "tags": { - "[concat('hidden-link:', resourceId('Microsoft.Web/sites/',concat(variables('functionList')[copyIndex('FunctionatIndex')] , variables('ProjectNameSuffix')) ))]": "Resource" - }, - "properties": { - "ApplicationId": "[concat(variables('functionList')[copyIndex('FunctionatIndex')] , variables('ProjectNameSuffix'))]" - }, - "copy": { - "name": "FunctionatIndex", - "count": "[length(variables('functionList'))]" - } - }, - { - "type": "Microsoft.KeyVault/vaults", - "name": "[variables('keyVaultName')]", - "apiVersion": "2018-02-14", - "location": "[variables('location')]", - "properties": { - "enabledForDeployment": "[variables('enabledForDeployment')]", - "enabledForDiskEncryption": "[variables('enabledForDiskEncryption')]", - "enabledForTemplateDeployment": "[variables('enabledForTemplateDeployment')]", - "enableSoftDelete": false, - "tenantId": "[variables('tenantId')]", - "accessPolicies": [ - { - "objectId": "[parameters('userObjectId')]", - "tenantId": "[variables('tenantId')]", - "permissions": { - "keys": [ - "All" - ], - "secrets": [ - "All" - ] - } - } - ], - "sku": { - "name": "[variables('skuName')]", - "family": "A" - }, - "networkAcls": { - "defaultAction": "Allow", - "bypass": "AzureServices" - } - } - }, - { - "type": "Microsoft.KeyVault/vaults/providers/diagnosticSettings", - "apiVersion": "2017-05-01-preview", - "name": "[concat(variables('keyVaultName'), '/Microsoft.Insights/Send to all locations')]", - "dependsOn": [ - "[resourceId('Microsoft.KeyVault/vaults', variables('keyVaultName'))]", - "[resourceId('Microsoft.Storage/storageAccounts', variables('KeyVaultAuditLogsStorageAccountName'))]" - ], - "properties": { - "storageAccountId": "[concat( '/subscriptions/', subscription().subscriptionId, '/resourceGroups/', variables('resourceGroupName'), '/providers/Microsoft.Storage/storageAccounts/', variables('KeyVaultAuditLogsStorageAccountName'))]", - "logs": [ - { - "category": "AuditEvent", - "enabled": true, - "RetentionEnabled": true, - "RetentionInDays": 90 - } - ] - } - }, - { - "type": "Microsoft.KeyVault/vaults/accessPolicies", - "name": "[concat(variables('keyVaultName'), '/add')]", - "apiVersion": "2019-09-01", - "properties": { - "accessPolicies": [ - { - "tenantId": "[variables('tenantId')]", - "objectId": "[reference(resourceId('Microsoft.Web/sites',concat('connect' , variables('ProjectNameSuffix'))), '2019-08-01', 'Full').identity.principalId]", - "permissions": { - "keys": "[variables('KVKeyPermissions')]" - } - }, - { - "tenantId": "[variables('tenantId')]", - "objectId": "[reference(resourceId('Microsoft.Web/sites',concat('users' , variables('ProjectNameSuffix'))), '2019-08-01', 'Full').identity.principalId]", - "permissions": { - "keys": "[variables('KVKeyPermissions')]" - } - }, - { - "tenantId": "[variables('tenantId')]", - "objectId": "[reference(resourceId('Microsoft.Web/sites',concat('platforms' , variables('ProjectNameSuffix'))), '2019-08-01', 'Full').identity.principalId]", - "permissions": { - "keys": "[variables('KVKeyPermissions')]" - } - } - ] - } - }, - { - "type": "Microsoft.Authorization/roleAssignments", - "apiVersion": "2018-09-01-preview", - "name": "[guid(concat(resourceGroup().id, variables('functionList')[copyIndex('FunctionatIndex')] , variables('ProjectNameSuffix')))]", - "dependsOn": [ - "[resourceId('Microsoft.Web/sites',concat(variables('functionList')[copyIndex('FunctionatIndex')] , variables('ProjectNameSuffix')))]" - ], - "properties": { - "roleDefinitionId": "[variables('readerRoleDefinitionId')]", - "principalId": "[reference(resourceId('Microsoft.Web/sites', concat(variables('functionList')[copyIndex('FunctionatIndex')] , variables('ProjectNameSuffix'))), '2019-08-01', 'full').identity.principalId]", - "scope": "[resourceGroup().id]", - "principalType": "ServicePrincipal" - }, - "copy": { - "name": "FunctionatIndex", - "count": "[length(variables('functionList'))]" - } - } - ], - "outputs": { - "WebClientURL": { - "value": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('staticWebsite'))).primaryEndpoints.web]", - "type": "string" - }, - "ConnectFunctionName": { - "value": "[concat('connect', variables('ProjectNameSuffix'))]", - "type": "string" - }, - "PlatformsFunctionName": { - "value": "[concat('platforms', variables('ProjectNameSuffix'))]", - "type": "string" - }, - "UsersFunctionName": { - "value": "[concat('users', variables('ProjectNameSuffix'))]", - "type": "string" - }, - "KeyVaultName": { - "value": "[variables('keyVaultName')]", - "type": "string" - }, - "LearnContentFunctionName": { - "value": "[concat('learncontent', variables('ProjectNameSuffix'))]", - "type": "string" - }, - "AssignmentsFunctionName": { - "value": "[concat('assignments', variables('ProjectNameSuffix'))]", - "type": "string" - }, - "LinksFunctionName": { - "value": "[concat('links', variables('ProjectNameSuffix'))]", - "type": "string" - }, - "StaticWebSiteName": { - "value": "[variables('staticWebsite')]", - "type": "string" - } - } -} - - -======= { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", @@ -725,7 +170,7 @@ "clientSecretSettingName": "AzureB2C_AUTHENTICATION_SECRET" }, "openIdConnectConfiguration": { - "wellKnownOpenIdConfiguration": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/B2C_1_signup_signin_LTI/v2.0/.well-known/openid-configuration" + "wellKnownOpenIdConfiguration": "" } } } @@ -793,8 +238,8 @@ "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('users' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", "WEBSITE_RUN_FROM_PACKAGE": "1", - "ValidAudience": ",", - "ADConfigurationUrl": "", + "ValidAudience": "[toLower(concat('' , parameters('appRegistrationClientId')))]", + "ADConfigurationUrl": "", "B2CConfigurationUrl": "" } }, @@ -821,8 +266,8 @@ "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('assignments' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", "WEBSITE_RUN_FROM_PACKAGE": "1", - "ValidAudience": ",", - "ADConfigurationUrl": "", + "ValidAudience": "[toLower(concat('' , parameters('appRegistrationClientId')))]", + "ADConfigurationUrl": "", "B2CConfigurationUrl": "" } }, @@ -849,8 +294,8 @@ "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('platforms' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", "WEBSITE_RUN_FROM_PACKAGE": "1", - "ValidAudience": ",", - "ADConfigurationUrl": "", + "ValidAudience": "[toLower(concat('' , parameters('appRegistrationClientId')))]", + "ADConfigurationUrl": "", "B2CConfigurationUrl": "" } }, @@ -875,8 +320,8 @@ "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('links' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", "WEBSITE_RUN_FROM_PACKAGE": "1", - "ValidAudience": ",", - "ADConfigurationUrl": "", + "ValidAudience": "[toLower(concat('' , parameters('appRegistrationClientId')))]", + "ADConfigurationUrl": "", "B2CConfigurationUrl": "" } }, @@ -901,8 +346,8 @@ "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('learncontent' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", "WEBSITE_RUN_FROM_PACKAGE": "1", - "ValidAudience": ",", - "ADConfigurationUrl": "", + "ValidAudience": "[toLower(concat('' , parameters('appRegistrationClientId')))]", + "ADConfigurationUrl": "", "B2CConfigurationUrl": "" } }, @@ -1120,4 +565,3 @@ } ->>>>>>> f189ff5f66321e14629c30ae15be685b87310c3d:deployment/azuredeployB2CTemplate.json From 292218beaef037d73fae46980ad6ac429e05183b Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Fri, 29 Jul 2022 11:31:32 +0100 Subject: [PATCH 149/285] Moved secret values to end of script to make it less manual --- deployment/B2CDeployment.ps1 | 1016 +++++++++++++++++----------------- deployment/Cleanup.ps1 | 10 +- deployment/Deploy.ps1 | 8 +- 3 files changed, 526 insertions(+), 508 deletions(-) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 1efd914f..b7181a31 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -19,630 +19,644 @@ function Write-Error([string]$Text) { Write-Host "Error!`n$Text" -ForegroundColor "red" -BackgroundColor "black" -NoNewline Write-Host "`n=============================================================" -ForegroundColor "red" -BackgroundColor "black" } - - #endregion -#region "AppInfo CSV setup" -$AppInfoCSVPath = ".\AppInfo.csv" -if (Test-Path $AppInfoCSVPath -PathType Leaf) { - Clear-Content $AppInfoCSVPath -} else { - New-Item $AppInfoCSVPath > $null -} -#endregeion - -#region "values determining the names of the resources" -$MultiTenantAppName = "b2c_AD_app" -$MultiTenantClientSecretName = "b2c_AD_app_secret" -$B2cAppName = "b2c_AD_webapp" -$WebClientSecretName = "b2c_AD_webapp_secret" -$PermissionAppName = "b2c_AD_PMA" -$PermissionClientSecretName = "b2c_AD_PMA_secret" -#endregion - -#region "B2C STEP 1: Create Active Directory application" -$B2cTenantName = Read-Host "Please enter your B2C tenant name" -$ADTenantName = Read-Host "Please enter your AD tenant name" - -Write-Title "B2C STEP 1: Create AD application" -Write-Host "Please login to $ADTenantName via the pop-up window that has launched in your browser" -az login --tenant "$ADTenantName.onmicrosoft.com" --allow-no-subscriptions --only-show-errors > $null -# $MultiTenantAppName = Read-Host "Please give a name for the AD application to be created" -$ADAppManifest = "{ - `"idToken`": [ - { - `"name`": `"email`", - `"essential`": false - }, - { - `"name`": `"family_name`", - `"essential`": false - }, - { - `"name`": `"given_name`", - `"essential`": false - } - ], - `"accessToken`": [], - `"saml2Token`": [] -}" -Out-File -FilePath "manifest.json" -InputObject $ADAppManifest -$MultiTenantAppID = (az ad app create --display-name $MultiTenantAppName --sign-in-audience AzureADandPersonalMicrosoftAccount --web-redirect-uris https://$B2cTenantName.b2clogin.com/$B2cTenantName.onmicrosoft.com/oauth2/authresp --optional-claims "@manifest.json" --query appId --output tsv --only-show-errors) -Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it -"$MultiTenantAppID,$ADTenantName" | Out-File -FilePath $AppInfoCSVPath -Append - -# Create client secret -Write-Host "Creating the client secret for $MultiTenantAppName" -# $MultiTenantClientSecretName = Read-Host "Please give a name for the client secret to be created" -$MultiTenantClientSecretDuration = 1 -$MultiTenantClientSecret = (az ad app credential reset --id $MultiTenantAppID --append --display-name $MultiTenantClientSecretName --years $MultiTenantClientSecretDuration --query password --output tsv --only-show-errors) -Write-Color "green" "Client ID for $MultiTenantAppName`: $MultiTenantAppID" -Write-Color "green" "Please take a moment to make a note of and protect the following client secret; as you will not be able to access it again." -Write-Color "green" "Client secret for $MultiTenantAppName`: $MultiTenantClientSecret" -Read-Host "Press enter when ready to continue after recording the client secret" - -# grant permissions for the AD app -Write-Host "Granting permissions to the AD application" -$profilePermission = "14dad69e-099b-42c9-810b-d002981feec1=Scope" -$emailPermission = "64a6cdd6-aab1-4aaf-94b8-3cc8405e90d0=Scope" -az ad sp create --id $MultiTenantAppID --only-show-errors 2>&1 > $null -az ad app permission grant --id $MultiTenantAppID --api 00000003-0000-0000-c000-000000000000 --scope "email profile" --only-show-errors > $null -az ad app permission add --id $MultiTenantAppID --api 00000003-0000-0000-c000-000000000000 --api-permissions $emailPermission $profilePermission --only-show-errors - -Remove-Item manifest.json -#endregion +try{ + #region "AppInfo CSV setup" + $AppInfoCSVPath = ".\AppInfo.csv" + if (Test-Path $AppInfoCSVPath -PathType Leaf) { + Clear-Content $AppInfoCSVPath + } else { + New-Item $AppInfoCSVPath > $null + } + #endregeion + + #region "values determining the names of the resources" + $MultiTenantAppName = "b2c_AD_app" + $MultiTenantClientSecretName = "b2c_AD_app_secret" + $B2cAppName = "b2c_AD_webapp" + $WebClientSecretName = "b2c_AD_webapp_secret" + $PermissionAppName = "b2c_AD_PMA" + $PermissionClientSecretName = "b2c_AD_PMA_secret" + #endregion -#region "B2C STEP 2: login" -Write-Title "B2C STEP 2: Logging into the B2C Tenant" -Write-Host "Please login to $B2cTenantName via the pop-up window that has launched in your browser" -az login --tenant "$B2cTenantName.onmicrosoft.com" --allow-no-subscriptions --only-show-errors > $null -#endregion + #region "B2C STEP 1: Create Active Directory application" + $B2cTenantName = Read-Host "Please enter your B2C tenant name" + $ADTenantName = Read-Host "Please enter your AD tenant name" + + Write-Title "B2C STEP 1: Create AD application" + Write-Host "Please login to $ADTenantName via the pop-up window that has launched in your browser" + az login --tenant "$ADTenantName.onmicrosoft.com" --allow-no-subscriptions --only-show-errors > $null + # $MultiTenantAppName = Read-Host "Please give a name for the AD application to be created" + $ADAppManifest = "{ + `"idToken`": [ + { + `"name`": `"email`", + `"essential`": false + }, + { + `"name`": `"family_name`", + `"essential`": false + }, + { + `"name`": `"given_name`", + `"essential`": false + } + ], + `"accessToken`": [], + `"saml2Token`": [] + }" + Out-File -FilePath "manifest.json" -InputObject $ADAppManifest + $MultiTenantAppID = (az ad app create --display-name $MultiTenantAppName --sign-in-audience AzureADandPersonalMicrosoftAccount --web-redirect-uris https://$B2cTenantName.b2clogin.com/$B2cTenantName.onmicrosoft.com/oauth2/authresp --optional-claims "@manifest.json" --query appId --output tsv --only-show-errors) + Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it + "$MultiTenantAppID,$ADTenantName" | Out-File -FilePath $AppInfoCSVPath -Append + + # Create client secret + Write-Host "Creating the client secret for $MultiTenantAppName" + # $MultiTenantClientSecretName = Read-Host "Please give a name for the client secret to be created" + $MultiTenantClientSecretDuration = 1 + $MultiTenantClientSecret = (az ad app credential reset --id $MultiTenantAppID --append --display-name $MultiTenantClientSecretName --years $MultiTenantClientSecretDuration --query password --output tsv --only-show-errors) + + # grant permissions for the AD app + Write-Host "Granting permissions to the AD application" + $profilePermission = "14dad69e-099b-42c9-810b-d002981feec1=Scope" + $emailPermission = "64a6cdd6-aab1-4aaf-94b8-3cc8405e90d0=Scope" + az ad sp create --id $MultiTenantAppID --only-show-errors 2>&1 > $null + az ad app permission grant --id $MultiTenantAppID --api 00000003-0000-0000-c000-000000000000 --scope "email profile" --only-show-errors > $null + az ad app permission add --id $MultiTenantAppID --api 00000003-0000-0000-c000-000000000000 --api-permissions $emailPermission $profilePermission --only-show-errors + + Remove-Item manifest.json + #endregion -#region "B2C STEP 3: Create the web app" -Write-Title "B2C STEP 3: Creating the B2C Web application" -# $B2cAppName = Read-Host "Please give a name for the web application to be created" -$appinfo = (az ad app create --display-name $B2cAppName --sign-in-audience AzureADandPersonalMicrosoftAccount --web-redirect-uris https://jwt.ms --enable-access-token-issuance true --enable-id-token-issuance true --only-show-errors) | ConvertFrom-Json -Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it -$WebClientID = $appinfo.appId -$ObjectId = $appinfo.id - -"$WebClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append - -# create client secret -Write-Host "Creating the client secret for $B2cAppName" -# $WebClientSecretName = Read-Host "Please give a name for the client secret to be created" -$WebClientSecretDuration = 1 -$WebClientSecret = (az ad app credential reset --id $WebClientID --append --display-name $WebClientSecretName --years $WebClientSecretDuration --query password --output tsv --only-show-errors) -Write-Color "green" "Client ID for $B2cAppName`: $WebClientID" -Write-Color "green" "Please take a moment to make a note of and protect the following client secret; as you will not be able to access it again." -Write-Color "green" "Client secret for $B2cAppName`: $WebClientSecret" -Read-Host "Press enter when ready to continue after recording the client secret" - -# set permissions for the web app -Write-Host "Granting permissions to the B2C Web application" -$openidPermission = "37f7f235-527c-4136-accd-4a02d197296e=Scope" -$offlineAccessPermission = "7427e0e9-2fba-42fe-b0c0-848c9e6a8182=Scope" -az ad sp create --id $WebClientID --only-show-errors 2>&1 > $null -az ad app permission grant --id $WebClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null -az ad app permission add --id $WebClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors -#endregion + #region "B2C STEP 2: login" + Write-Title "B2C STEP 2: Logging into the B2C Tenant" + Write-Host "Please login to $B2cTenantName via the pop-up window that has launched in your browser" + az login --tenant "$B2cTenantName.onmicrosoft.com" --allow-no-subscriptions --only-show-errors > $null + #endregion -#region "B2C STEP 4: Create IdentityExperienceFramework app" -Write-Title "B2C STEP 4: Creating the Identity Experience Framework application" -$IEFAppName = "IdentityExperienceFramework" -$IEFClientID = (az ad app create --display-name $IEFAppName --sign-in-audience AzureADMyOrg --web-redirect-uris https://$B2cTenantName.b2clogin.com/$B2cTenantName.onmicrosoft.com --query appId --output tsv --only-show-errors) -Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it -"$IEFClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append - -# set permissions for the IEF app -Write-Host "Granting permissions to the IEF application" -az ad sp create --id $IEFClientID --only-show-errors 2>&1 > $null -az ad app permission grant --id $IEFClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null -az ad app permission add --id $IEFClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors - -# expose the user_impersonation API -Write-Host "Exposing the user_impersonation API" -az ad app update --id $IEFClientID --identifier-uris "https://$B2cTenantName.onmicrosoft.com/$IEFClientID" --only-show-errors -$IEFAppInfo = (az ad app show --id $IEFClientID --only-show-errors | ConvertFrom-Json) -$IEFAppApiInfo = $IEFAppInfo.api -$IEFScopeGUID = [guid]::NewGuid() -$UserImpersonationScope = "{ - `"adminConsentDescription`": `"Allow the application to access IdentityExperienceFramework on behalf of the signed-in user.`", - `"adminConsentDisplayName`": `"Access IdentityExperienceFramework`", - `"id`": `"$IEFScopeGUID`", - `"isEnabled`": true, - `"type`": `"Admin`", - `"userConsentDescription`": null, - `"userConsentDisplayName`": null, - `"value`": `"user_impersonation`" -}" | ConvertFrom-Json -$IEFAppApiInfo.oauth2PermissionScopes += $UserImpersonationScope -ConvertTo-Json -InputObject $IEFAppApiInfo | Out-File -FilePath "userImpersonationScope.json" -az ad app update --id $IEFClientID --set api=@userImpersonationScope.json --only-show-errors - -# granting user_impersonation to the web app -az ad app permission grant --id $WebClientID --api $IEFClientID --scope "user_impersonation" --only-show-errors > $null -az ad app permission add --id $WebClientID --api $IEFClientID --api-permissions "$IEFScopeGUID=Scope" --only-show-errors - -Remove-Item userImpersonationScope.json -#endregion + #region "B2C STEP 3: Create the web app" + Write-Title "B2C STEP 3: Creating the B2C Web application" + # $B2cAppName = Read-Host "Please give a name for the web application to be created" + $appinfo = (az ad app create --display-name $B2cAppName --sign-in-audience AzureADandPersonalMicrosoftAccount --web-redirect-uris https://jwt.ms --enable-access-token-issuance true --enable-id-token-issuance true --only-show-errors) | ConvertFrom-Json + Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it + $WebClientID = $appinfo.appId + $ObjectId = $appinfo.id + + "$WebClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append + + # create client secret + Write-Host "Creating the client secret for $B2cAppName" + # $WebClientSecretName = Read-Host "Please give a name for the client secret to be created" + $WebClientSecretDuration = 1 + $WebClientSecret = (az ad app credential reset --id $WebClientID --append --display-name $WebClientSecretName --years $WebClientSecretDuration --query password --output tsv --only-show-errors) + + # set permissions for the web app + Write-Host "Granting permissions to the B2C Web application" + $openidPermission = "37f7f235-527c-4136-accd-4a02d197296e=Scope" + $offlineAccessPermission = "7427e0e9-2fba-42fe-b0c0-848c9e6a8182=Scope" + az ad sp create --id $WebClientID --only-show-errors 2>&1 > $null + az ad app permission grant --id $WebClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null + az ad app permission add --id $WebClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors + #endregion -#region "B2C STEP 5: Create ProxyIEF app" -Write-Title "B2C STEP 5: Creating the Proxy Identity Experience Framework application" -$ProxyIEFAppName = "ProxyIdentityExperienceFramework" -$ProxyIEFClientID = (az ad app create --display-name $ProxyIEFAppName --sign-in-audience AzureADMyOrg --public-client-redirect-uris myapp://auth --is-fallback-public-client true --query appId --output tsv --only-show-errors) -Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it -"$ProxyIEFClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append + #region "B2C STEP 4: Create IdentityExperienceFramework app" + Write-Title "B2C STEP 4: Creating the Identity Experience Framework application" + $IEFAppName = "IdentityExperienceFramework" + $IEFClientID = (az ad app create --display-name $IEFAppName --sign-in-audience AzureADMyOrg --web-redirect-uris https://$B2cTenantName.b2clogin.com/$B2cTenantName.onmicrosoft.com --query appId --output tsv --only-show-errors) + Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it + "$IEFClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append + + # set permissions for the IEF app + Write-Host "Granting permissions to the IEF application" + az ad sp create --id $IEFClientID --only-show-errors 2>&1 > $null + az ad app permission grant --id $IEFClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null + az ad app permission add --id $IEFClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors + + # expose the user_impersonation API + Write-Host "Exposing the user_impersonation API" + az ad app update --id $IEFClientID --identifier-uris "https://$B2cTenantName.onmicrosoft.com/$IEFClientID" --only-show-errors + $IEFAppInfo = (az ad app show --id $IEFClientID --only-show-errors | ConvertFrom-Json) + $IEFAppApiInfo = $IEFAppInfo.api + $IEFScopeGUID = [guid]::NewGuid() + $UserImpersonationScope = "{ + `"adminConsentDescription`": `"Allow the application to access IdentityExperienceFramework on behalf of the signed-in user.`", + `"adminConsentDisplayName`": `"Access IdentityExperienceFramework`", + `"id`": `"$IEFScopeGUID`", + `"isEnabled`": true, + `"type`": `"Admin`", + `"userConsentDescription`": null, + `"userConsentDisplayName`": null, + `"value`": `"user_impersonation`" + }" | ConvertFrom-Json + $IEFAppApiInfo.oauth2PermissionScopes += $UserImpersonationScope + ConvertTo-Json -InputObject $IEFAppApiInfo | Out-File -FilePath "userImpersonationScope.json" + az ad app update --id $IEFClientID --set api=@userImpersonationScope.json --only-show-errors + + # granting user_impersonation to the web app + az ad app permission grant --id $WebClientID --api $IEFClientID --scope "user_impersonation" --only-show-errors > $null + az ad app permission add --id $WebClientID --api $IEFClientID --api-permissions "$IEFScopeGUID=Scope" --only-show-errors + + Remove-Item userImpersonationScope.json + #endregion -Write-Host "Granting permissions to the Proxy IEF application" -az ad sp create --id $ProxyIEFClientID --only-show-errors 2>&1 > $null -az ad app permission grant --id $ProxyIEFClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null -az ad app permission add --id $ProxyIEFClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors -az ad app permission grant --id $ProxyIEFClientID --api $IEFClientID --scope "user_impersonation" --only-show-errors > $null -az ad app permission add --id $ProxyIEFClientID --api $IEFClientID --api-permissions "$IEFScopeGUID=Scope" --only-show-errors -#endregion -#region "B2C STEP 6: Create Permission Management app" -Write-Title "B2C STEP 6: Creating Permission Management application" -# $PermissionAppName = Read-Host "Please give a name for the permission management application to be created" -$PermissionClientID = (az ad app create --display-name $PermissionAppName --sign-in-audience AzureADMyOrg --query appId --output tsv --only-show-errors) -Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it -"$PermissionClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append - -# create client secret -Write-Host "Creating the client secret for $PermissionAppName" -# $PermissionClientSecretName = Read-Host "Please give a name for the client secret to be created" -$PermissionClientSecretDuration = 1 -$PermissionClientSecret = (az ad app credential reset --id $PermissionClientID --append --display-name $PermissionClientSecretName --years $PermissionClientSecretDuration --query password --output tsv --only-show-errors) -Write-Color "green" "Client ID for $PermissionAppName`: $PermissionClientID" -Write-Color "green" "Please take a moment to make a note of and protect the following client secret; as you will not be able to access it again." -Write-Color "green" "Client secret for $PermissionAppName`: $PermissionClientSecret" -Read-Host "Press enter when ready to continue after recording the client secret" - -# set permissions for the web app -Write-Host "Granting permissions to the B2C Permission Management application" -$keysetRWPermission = "4a771c9a-1cf2-4609-b88e-3d3e02d539cd=Role" -$policyRWPermission = "79a677f7-b79d-40d0-a36a-3e6f8688dd7a=Role" -az ad sp create --id $PermissionClientID --only-show-errors 2>&1 > $null -az ad app permission grant --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null -az ad app permission add --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors -az ad app permission add --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $keysetRWPermission $policyRWPermission --only-show-errors -az ad app permission admin-consent --id $PermissionClientID --only-show-errors -#endregion + #region "B2C STEP 5: Create ProxyIEF app" + Write-Title "B2C STEP 5: Creating the Proxy Identity Experience Framework application" + $ProxyIEFAppName = "ProxyIdentityExperienceFramework" + $ProxyIEFClientID = (az ad app create --display-name $ProxyIEFAppName --sign-in-audience AzureADMyOrg --public-client-redirect-uris myapp://auth --is-fallback-public-client true --query appId --output tsv --only-show-errors) + Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it + "$ProxyIEFClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append -#region "B2C STEP 7: restrict access via whitelisting tenants" -# https://docs.microsoft.com/en-us/azure/active-directory-b2c/identity-provider-azure-ad-multi-tenant?pivots=b2c-custom-policy#restrict-access -Write-Title "B2C STEP 7: Creating a whitelist for the tenants we wish to give access to" -Write-Host "Important - if no tenants are whitelisted; nobody will be able to access the AD" + Write-Host "Granting permissions to the Proxy IEF application" + az ad sp create --id $ProxyIEFClientID --only-show-errors 2>&1 > $null + az ad app permission grant --id $ProxyIEFClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null + az ad app permission add --id $ProxyIEFClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors + az ad app permission grant --id $ProxyIEFClientID --api $IEFClientID --scope "user_impersonation" --only-show-errors > $null + az ad app permission add --id $ProxyIEFClientID --api $IEFClientID --api-permissions "$IEFScopeGUID=Scope" --only-show-errors + #endregion -#TODO - make it a file -$fileOrInputs="" -while($fileOrInputs -ne "1" -and $fileOrInputs -ne "2") -{ - $fileOrInputs = Read-Host "Would you like to either:`n1. import a file with *all* the tenant ID's to be whitelisted`n2. input them 1 by 1 into the console? `n(1/2)" -} + #region "B2C STEP 6: Create Permission Management app" + Write-Title "B2C STEP 6: Creating Permission Management application" + # $PermissionAppName = Read-Host "Please give a name for the permission management application to be created" + $PermissionClientID = (az ad app create --display-name $PermissionAppName --sign-in-audience AzureADMyOrg --query appId --output tsv --only-show-errors) + Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it + "$PermissionClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append + + # create client secret + Write-Host "Creating the client secret for $PermissionAppName" + # $PermissionClientSecretName = Read-Host "Please give a name for the client secret to be created" + $PermissionClientSecretDuration = 1 + $PermissionClientSecret = (az ad app credential reset --id $PermissionClientID --append --display-name $PermissionClientSecretName --years $PermissionClientSecretDuration --query password --output tsv --only-show-errors) + + # set permissions for the web app + Write-Host "Granting permissions to the B2C Permission Management application" + $keysetRWPermission = "4a771c9a-1cf2-4609-b88e-3d3e02d539cd=Role" + $policyRWPermission = "79a677f7-b79d-40d0-a36a-3e6f8688dd7a=Role" + az ad sp create --id $PermissionClientID --only-show-errors 2>&1 > $null + az ad app permission grant --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null + az ad app permission add --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors + az ad app permission add --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $keysetRWPermission $policyRWPermission --only-show-errors + az ad app permission admin-consent --id $PermissionClientID --only-show-errors + #endregion + #region "B2C STEP 7: restrict access via whitelisting tenants" + # https://docs.microsoft.com/en-us/azure/active-directory-b2c/identity-provider-azure-ad-multi-tenant?pivots=b2c-custom-policy#restrict-access + Write-Title "B2C STEP 7: Creating a whitelist for the tenants we wish to give access to" + Write-Host "Important - if no tenants are whitelisted; nobody will be able to access the AD" -$whitelist = @() -# Input via a file -if ($fileOrInputs -eq "1") -{ - $filePath = Read-Host "Please enter the path to the file containing the tenant ID's" - $tenantIDs = Get-Content $filePath - - foreach ($wlTenantID in $tenantIDs) + #TODO - make it a file + $fileOrInputs="" + while($fileOrInputs -ne "1" -and $fileOrInputs -ne "2") { - #region "HTTP request to get the issuer claim we want to add to the whitelist" - $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" - - $response = Invoke-RestMethod "https://login.microsoftonline.com/$wlTenantID/v2.0/.well-known/openid-configuration" -Method 'GET' -Headers $headers - $issuer = $response.issuer - #endregion - - $whitelist += $issuer #adding the issuer for this tenant to the whitelist + $fileOrInputs = Read-Host "Would you like to either:`n1. import a file with *all* the tenant ID's to be whitelisted`n2. input them 1 by 1 into the console? `n(1/2)" } -} -# Input one by one to the console -else -{ - $wlTenantID = "" - while ($wlTenantID -ne "no") - { - $wlTenantID = Read-Host "Please enter the tenant ID you wish to add to the whitelist (or 'no' to stop): " - if($tenantID -eq "no"){break} + $whitelist = @() + # Input via a file + if ($fileOrInputs -eq "1") + { + $filePath = Read-Host "Please enter the path to the file containing the tenant ID's" + $tenantIDs = Get-Content $filePath - try{ + foreach ($wlTenantID in $tenantIDs) + { #region "HTTP request to get the issuer claim we want to add to the whitelist" $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $response = Invoke-RestMethod "https://login.microsoftonline.com/$wlTenantID/v2.0/.well-known/openid-configuration" -Method 'GET' -Headers $headers $issuer = $response.issuer #endregion - + $whitelist += $issuer #adding the issuer for this tenant to the whitelist } - catch{ - Write-Host "" - Write-Error ("HTTP request to get the issuer claim failed, please ensure the tenant ID is correct`n`n"+$Error[0]) - Write-Host "" + } + + # Input one by one to the console + else + { + $wlTenantID = "" + while ($wlTenantID -ne "no") + { + $wlTenantID = Read-Host "Please enter the tenant ID you wish to add to the whitelist (or 'no' to stop): " + + if($wlTenantID -eq "no"){break} + + try{ + #region "HTTP request to get the issuer claim we want to add to the whitelist" + $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" + + $response = Invoke-RestMethod "https://login.microsoftonline.com/$wlTenantID/v2.0/.well-known/openid-configuration" -Method 'GET' -Headers $headers + $issuer = $response.issuer + #endregion + + $whitelist += $issuer #adding the issuer for this tenant to the whitelist + } + catch{ + Write-Host "" + Write-Error ("HTTP request to get the issuer claim failed, please ensure the tenant ID is correct`n`n"+$Error[0]) + Write-Host "" + } } } -} -$whitelistString = $whitelist -join "," -#endregion + $whitelistString = $whitelist -join "," + #endregion -#region "B2C STEP 8: (Optional) linking facebook apps" -Write-Title "B2C STEP 8: (Optional) linking facebook app" -$HasFaceBookApp = "" -while($HasFaceBookApp -ne "y" -and $HasFaceBookApp -ne "n"){ - $HasFaceBookApp = Read-Host "Do you have a facebook application set up that you'd like to link? (y/n)" -} -$FacebookId = "00000000-0000-0000-0000-000000000000" #default to meaningless placeholder value if app isn't set up -$FacebookSecret = "00000000-0000-0000-0000-000000000000" #default to meaningless placeholder value if app isn't set up -if($HasFaceBookApp -eq "y"){ - $FacebookId = Read-Host "What is the application ID of the Facebook application you created?" - $FacebookSecret = Read-Host "What is the secret value of the Facebook application you created?" -} -#endregion + #region "B2C STEP 8: (Optional) linking facebook apps" + Write-Title "B2C STEP 8: (Optional) linking facebook app" + $HasFaceBookApp = "" + while($HasFaceBookApp -ne "y" -and $HasFaceBookApp -ne "n"){ + $HasFaceBookApp = Read-Host "Do you have a facebook application set up that you'd like to link? (y/n)" + } + $FacebookId = "00000000-0000-0000-0000-000000000000" #default to meaningless placeholder value if app isn't set up + $FacebookSecret = "00000000-0000-0000-0000-000000000000" #default to meaningless placeholder value if app isn't set up + if($HasFaceBookApp -eq "y"){ + $FacebookId = Read-Host "What is the application ID of the Facebook application you created?" + $FacebookSecret = Read-Host "What is the secret value of the Facebook application you created?" + } + #endregion -#region "B2C STEP 9: looping through each CustomPolicyTemplate and creating bases of them in CustomTemplates" -Write-Title "B2C STEP 9: Creating template custom policies" -Get-ChildItem ".\CustomPolicyTemplates\" | Foreach-Object { - ((Get-Content -path $_.FullName -Raw)) | Set-Content -path (".\CustomPolicy\"+$_.Name) -} -#endregion + #region "B2C STEP 9: looping through each CustomPolicyTemplate and creating bases of them in CustomTemplates" + Write-Title "B2C STEP 9: Creating template custom policies" + Get-ChildItem ".\CustomPolicyTemplates\" | Foreach-Object { + ((Get-Content -path $_.FullName -Raw)) | Set-Content -path (".\CustomPolicy\"+$_.Name) + } + #endregion -#region "B2C STEP 10: looping through each CustomPolicy and replacing their placeholder values to generate the final custom policies" -Write-Title "B2C STEP 10: Replacing values in template custom policies to generate finalised custom policies" -Get-ChildItem ".\CustomPolicy\" | Foreach-Object { - #ignore the gitkeep - if($_.Name -ne ".gitkeep"){ - ((Get-Content -path $_.FullName -Raw) -replace '<>', $B2cTenantName) | Set-Content -path (".\CustomPolicy\"+$_.Name) + #region "B2C STEP 10: looping through each CustomPolicy and replacing their placeholder values to generate the final custom policies" + Write-Title "B2C STEP 10: Replacing values in template custom policies to generate finalised custom policies" + Get-ChildItem ".\CustomPolicy\" | Foreach-Object { + #ignore the gitkeep + if($_.Name -ne ".gitkeep"){ + ((Get-Content -path $_.FullName -Raw) -replace '<>', $B2cTenantName) | Set-Content -path (".\CustomPolicy\"+$_.Name) - ((Get-Content -path $_.FullName -Raw) -replace '<>', $ProxyIEFClientID) | Set-Content -path (".\CustomPolicy\"+$_.Name) - - ((Get-Content -path $_.FullName -Raw) -replace '<>', $IEFClientID) | Set-Content -path (".\CustomPolicy\"+$_.Name) - - ((Get-Content -path $_.FullName -Raw) -replace '<>', $FacebookId) | Set-Content -path (".\CustomPolicy\"+$_.Name) + ((Get-Content -path $_.FullName -Raw) -replace '<>', $ProxyIEFClientID) | Set-Content -path (".\CustomPolicy\"+$_.Name) + + ((Get-Content -path $_.FullName -Raw) -replace '<>', $IEFClientID) | Set-Content -path (".\CustomPolicy\"+$_.Name) + + ((Get-Content -path $_.FullName -Raw) -replace '<>', $FacebookId) | Set-Content -path (".\CustomPolicy\"+$_.Name) - ((Get-Content -path $_.FullName -Raw) -replace '<>', $MultitenantAppID) | Set-Content -path (".\CustomPolicy\"+$_.Name) + ((Get-Content -path $_.FullName -Raw) -replace '<>', $MultitenantAppID) | Set-Content -path (".\CustomPolicy\"+$_.Name) + + ((Get-Content -path $_.FullName -Raw) -replace '<>', $whitelistString) | Set-Content -path (".\CustomPolicy\"+$_.Name) - ((Get-Content -path $_.FullName -Raw) -replace '<>', $whitelistString) | Set-Content -path (".\CustomPolicy\"+$_.Name) - + } + } + #endregion -} -#endregion + #region "B2C STEP 11: Add signing and encryption keys and AADAppSecret for the IEF applications" -#region "B2C STEP 11: Add signing and encryption keys and AADAppSecret for the IEF applications" + #region "Function for calculating the not before and expiry datetimes for the keys" + function getNbfExp($num_months){ + $start_date = Get-Date -Date "1970-01-01 00:00:00Z" + $date = Get-Date + $date = $date.ToUniversalTime() + $nbf = [math]::floor(($date - $start_date).TotalSeconds) + $exp = [math]::floor((($date - $start_date).TotalSeconds) + $num_months * 60 * 60 * 24 * 30) + return $nbf, $exp + } + #endregion -#region "Function for calculating the not before and expiry datetimes for the keys" -function getNbfExp($num_months){ - $start_date = Get-Date -Date "1970-01-01 00:00:00Z" - $date = Get-Date - $date = $date.ToUniversalTime() - $nbf = [math]::floor(($date - $start_date).TotalSeconds) - $exp = [math]::floor((($date - $start_date).TotalSeconds) + $num_months * 60 * 60 * 24 * 30) - return $nbf, $exp -} -#endregion + Write-Title "B2C STEP 11: Adding signing and encryption keys and AADAppSecret for the IEF applications" -Write-Title "B2C STEP 11: Adding signing and encryption keys and AADAppSecret for the IEF applications" + $num_months = 0 + while($num_months -le 0){ + [uint16] $num_months = Read-Host "How many months do you want the keys to be valid for? (must be greater than 0)" + } -$num_months = 0 -while($num_months -le 0){ - [uint16] $num_months = Read-Host "How many months do you want the keys to be valid for? (must be greater than 0)" -} + Write-Host "Getting the token to be used in the HTML Requests and the list of existing keysets to check for conflicts when creating new ones" + $response = "" + $keysets = "" + while(1){ + try{ + #region "Getting the token to be used in the HTML REQUESTS" + # relevant docs: https://docs.microsoft.com/en-us/graph/auth-v2-service#4-get-an-access-token -Write-Host "Getting the token to be used in the HTML Requests and the list of existing keysets to check for conflicts when creating new ones" -$response = "" -$keysets = "" -while(1){ - try{ - #region "Getting the token to be used in the HTML REQUESTS" - # relevant docs: https://docs.microsoft.com/en-us/graph/auth-v2-service#4-get-an-access-token + $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" + $headers.Add("Content-Type", "application/x-www-form-urlencoded") + + $body = "client_id=$PermissionClientID&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&client_secret=$PermissionClientSecret&grant_type=client_credentials" + $response = Invoke-RestMethod "https://login.microsoftonline.com/$B2cTenantName.onmicrosoft.com/oauth2/v2.0/token" -Method 'POST' -Headers $headers -Body $body + $access_token = $response.access_token + $access_token = "Bearer " + $access_token + #endregion + + #region "Getting the list of all custom policies in the tenant; to check if each keyset already exists prior to creating it" + $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" + $headers.Add("Authorization", $access_token) + $response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets' -Method 'GET' -Headers $headers + $keysets = $response.value + $keysets = $keysets.id + #endregion + break + } + catch{ + Write-Host "" + Write-Error $Error[0] + Write-Host "" + Write-Color "Red" "Error may be due to admin-consent having not yet been granted; please switch your directory to the b2c tenant ($B2cTenantName) in the Azure portal then copy and paste the yellow link into your browser to manually grant admin-consent then press enter." + $PMA_Page = "https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/~/CallAnAPI/appId/$PermissionClientID/isMSAApp~/false" + Write-Color "Yellow" "$PMA_Page" + Write-Host "Please check the markdown https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/deployment/B2C_Docs/B2C_Deployment.md if you require assistance on how to do this." + Read-Host "Press enter after manually granting the admin consent permission and waiting 10 seconds" + } + } + + #region "B2C STEP 11.A: Create the signing key" + Write-Title "B2C STEP 11.A: Creating the Signing Key" + + if($keysets -contains "B2C_1A_TokenSigningKeyContainer"){ + Read-Host "B2C_1A_TokenSigningKeyContainer already exists, so cannot upload it again. If this is not expected, please terminate this script and run B2CCleanup.ps1 first." + } + else{ + #region "Creating the signing keyset (container)" + #reference: https://docs.microsoft.com/en-us/graph/api/trustframework-post-keysets?view=graph-rest-beta&tabs=http + Write-Host "`nCreating the signing keyset (container)`n" $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" - $headers.Add("Content-Type", "application/x-www-form-urlencoded") + $headers.Add("Authorization", $access_token) + $headers.Add("Content-Type", "application/json") + + $body = "{`"id`":`"B2C_1A_TokenSigningKeyContainer`"}" - $body = "client_id=$PermissionClientID&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&client_secret=$PermissionClientSecret&grant_type=client_credentials" + $response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets' -Method 'POST' -Headers $headers -Body $body + $response | ConvertTo-Json + $signing_container_id = $response.id - $response = Invoke-RestMethod "https://login.microsoftonline.com/$B2cTenantName.onmicrosoft.com/oauth2/v2.0/token" -Method 'POST' -Headers $headers -Body $body - $access_token = $response.access_token - $access_token = "Bearer " + $access_token + Write-Host "`nSuccessfully created the key signing container: $signing_container_id`n" #endregion - #region "Getting the list of all custom policies in the tenant; to check if each keyset already exists prior to creating it" + #region "Generating the signing key" + #reference: https://docs.microsoft.com/en-us/graph/api/trustframeworkkeyset-generatekey?view=graph-rest-beta&tabs=http + #calculating nbf (not before) and exp (expiry) tokens into the json required format of seconds past after 1970-01-01T00:00:00Z UTC + Write-Host "`nGenerating the signing key and uploading to the keyset`n" + $arr = getNbfExp($num_months) + $nbf = $arr[0] + $exp = $arr[1] + + $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $headers.Add("Authorization", $access_token) - $response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets' -Method 'GET' -Headers $headers - $keysets = $response.value - $keysets = $keysets.id + $headers.Add("Content-Type", "application/json") + + $body = "{ + `n `"use`": `"sig`", + `n `"kty`": `"RSA`", + `n `"nbf`": "+$nbf+", + `n `"exp`": "+$exp+", + `n}" + + $response = Invoke-RestMethod ('https://graph.microsoft.com/beta/trustFramework/keySets/'+$signing_container_id+'/generateKey') -Method 'POST' -Headers $headers -Body $body + + Write-Host "successfully generated and uploaded the signing key" #endregion - break - } - catch{ - Write-Host "" - Write-Error $Error[0] - Write-Host "" - Write-Color "Red" "Error may be due to admin-consent having not yet been granted; please switch your directory to the b2c tenant ($B2cTenantName) in the Azure portal then copy and paste the yellow link into your browser to manually grant admin-consent then press enter." - $PMA_Page = "https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/~/CallAnAPI/appId/$PermissionClientID/isMSAApp~/false" - Write-Color "Yellow" "$PMA_Page" - Write-Host "Please check the markdown https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/deployment/B2C_Docs/B2C_Deployment.md if you require assistance on how to do this." - Read-Host "Press enter after manually granting the admin consent permission and waiting 10 seconds" } -} + #endregion -#region "B2C STEP 11.A: Create the signing key" -Write-Title "B2C STEP 11.A: Creating the Signing Key" -if($keysets -contains "B2C_1A_TokenSigningKeyContainer"){ - Read-Host "B2C_1A_TokenSigningKeyContainer already exists, so cannot upload it again. If this is not expected, please terminate this script and run B2CCleanup.ps1 first." -} -else{ - #region "Creating the signing keyset (container)" + #region "B2C STEP 11.B: Create the encryption key" + Write-Title "B2C STEP 11.B: Creating the Signing Key" + + if($keysets -contains "B2C_1A_TokenSigningKeyContainer"){ + Read-Host "B2C_1A_TokenSigningKeyContainer already exists, so cannot upload it again. If this is not expected, please terminate this script and run B2CCleanup.ps1 first." + } + else{ + #region "Creating the encryption keyset (container)" #reference: https://docs.microsoft.com/en-us/graph/api/trustframework-post-keysets?view=graph-rest-beta&tabs=http Write-Host "`nCreating the signing keyset (container)`n" $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $headers.Add("Authorization", $access_token) $headers.Add("Content-Type", "application/json") - $body = "{`"id`":`"B2C_1A_TokenSigningKeyContainer`"}" + $body = "{`"id`":`"B2C_1A_TokenEncryptionKeyContainer`"}" $response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets' -Method 'POST' -Headers $headers -Body $body - $response | ConvertTo-Json - $signing_container_id = $response.id + $encryption_container_id = $response.id - Write-Host "`nSuccessfully created the key signing container: $signing_container_id`n" + Write-Host "Successfully created the key encryption container: $encryption_container_id" #endregion - #region "Generating the signing key" + + #region "Generating the encryption key" #reference: https://docs.microsoft.com/en-us/graph/api/trustframeworkkeyset-generatekey?view=graph-rest-beta&tabs=http #calculating nbf (not before) and exp (expiry) tokens into the json required format of seconds past after 1970-01-01T00:00:00Z UTC - Write-Host "`nGenerating the signing key and uploading to the keyset`n" + Write-Host "`nGenerating the encryption key and uploading to the keyset`n" $arr = getNbfExp($num_months) $nbf = $arr[0] $exp = $arr[1] - $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $headers.Add("Authorization", $access_token) $headers.Add("Content-Type", "application/json") $body = "{ - `n `"use`": `"sig`", + `n `"use`": `"enc`", `n `"kty`": `"RSA`", `n `"nbf`": "+$nbf+", `n `"exp`": "+$exp+", `n}" - $response = Invoke-RestMethod ('https://graph.microsoft.com/beta/trustFramework/keySets/'+$signing_container_id+'/generateKey') -Method 'POST' -Headers $headers -Body $body + $response = Invoke-RestMethod ("https://graph.microsoft.com/beta/trustFramework/keySets/$encryption_container_id/generateKey") -Method 'POST' -Headers $headers -Body $body - Write-Host "successfully generated and uploaded the signing key" + Write-Host "Successfully generated and uploaded the encryption key" + } + #endregion #endregion -} -#endregion - - -#region "B2C STEP 11.B: Create the encryption key" -Write-Title "B2C STEP 11.B: Creating the Signing Key" - -if($keysets -contains "B2C_1A_TokenSigningKeyContainer"){ - Read-Host "B2C_1A_TokenSigningKeyContainer already exists, so cannot upload it again. If this is not expected, please terminate this script and run B2CCleanup.ps1 first." -} -else{ -#region "Creating the encryption keyset (container)" -#reference: https://docs.microsoft.com/en-us/graph/api/trustframework-post-keysets?view=graph-rest-beta&tabs=http -Write-Host "`nCreating the signing keyset (container)`n" -$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" -$headers.Add("Authorization", $access_token) -$headers.Add("Content-Type", "application/json") - -$body = "{`"id`":`"B2C_1A_TokenEncryptionKeyContainer`"}" - -$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets' -Method 'POST' -Headers $headers -Body $body -$encryption_container_id = $response.id - -Write-Host "Successfully created the key encryption container: $encryption_container_id" -#endregion - -#region "Generating the encryption key" -#reference: https://docs.microsoft.com/en-us/graph/api/trustframeworkkeyset-generatekey?view=graph-rest-beta&tabs=http -#calculating nbf (not before) and exp (expiry) tokens into the json required format of seconds past after 1970-01-01T00:00:00Z UTC -Write-Host "`nGenerating the encryption key and uploading to the keyset`n" -$arr = getNbfExp($num_months) -$nbf = $arr[0] -$exp = $arr[1] -$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" -$headers.Add("Authorization", $access_token) -$headers.Add("Content-Type", "application/json") + #region "B2C STEP 11.C: Create the AADSecret keyset" + Write-Title "B2C STEP 11.C: Creating the AADAppSecret Key" -$body = "{ -`n `"use`": `"enc`", -`n `"kty`": `"RSA`", -`n `"nbf`": "+$nbf+", -`n `"exp`": "+$exp+", -`n}" + if($keysets -contains "B2C_1A_AADAppSecret"){ + Read-Host "B2C_1A_AADAppSecret already exists, so cannot upload it again. If this is not expected, please terminate this script and run B2CCleanup.ps1 first." + } + else{ + #region "Creating the AADAppSecret keyset (container)" + #reference: https://docs.microsoft.com/en-us/graph/api/trustframework-post-keysets?view=graph-rest-beta&tabs=http + Write-Host "`nCreating the AADAppSecret keyset (container)`n" + $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" + $headers.Add("Authorization", $access_token) + $headers.Add("Content-Type", "application/json") -$response = Invoke-RestMethod ("https://graph.microsoft.com/beta/trustFramework/keySets/$encryption_container_id/generateKey") -Method 'POST' -Headers $headers -Body $body + $body = "{`"id`":`"B2C_1A_AADAppSecret`"}" -Write-Host "Successfully generated and uploaded the encryption key" -} -#endregion -#endregion + $response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets' -Method 'POST' -Headers $headers -Body $body + $AADAppSecret_container_id = $response.id + Write-Host "Successfully created the key AADAppSecret container: $AADAppSecret_container_id" + #endregion -#region "B2C STEP 11.C: Create the AADSecret keyset" -Write-Title "B2C STEP 11.C: Creating the AADAppSecret Key" + #region "Uploading the AADAppSecret key" + #reference: https://docs.microsoft.com/en-us/graph/api/trustframeworkkeyset-uploadsecret?view=graph-rest-beta&tabs=https + #calculating nbf (not before) and exp (expiry) tokens into the json required format of seconds past after 1970-01-01T00:00:00Z UTC + Write-Host "`nGenerating the AADAppSecret key and uploading to the keyset`n" + $arr = getNbfExp($num_months) + $nbf = $arr[0] + $exp = $arr[1] -if($keysets -contains "B2C_1A_AADAppSecret"){ - Read-Host "B2C_1A_AADAppSecret already exists, so cannot upload it again. If this is not expected, please terminate this script and run B2CCleanup.ps1 first." -} -else{ - #region "Creating the AADAppSecret keyset (container)" - #reference: https://docs.microsoft.com/en-us/graph/api/trustframework-post-keysets?view=graph-rest-beta&tabs=http - Write-Host "`nCreating the AADAppSecret keyset (container)`n" - $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" - $headers.Add("Authorization", $access_token) - $headers.Add("Content-Type", "application/json") + #uploading the AADAppSecret key + $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" + $headers.Add("Authorization", $access_token) + $headers.Add("Content-Type", "application/json") - $body = "{`"id`":`"B2C_1A_AADAppSecret`"}" + $body = "{ + `n `"use`": `"sig`", + `n `"k`": `""+$MultiTenantClientSecret+"`", + `n `"nbf`": "+$nbf+", + `n `"exp`": "+$exp+" + `n}" - $response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets' -Method 'POST' -Headers $headers -Body $body - $AADAppSecret_container_id = $response.id + $response = Invoke-RestMethod "https://graph.microsoft.com/beta/trustFramework/keySets/$AADAppSecret_container_id/uploadSecret" -Method 'POST' -Headers $headers -Body $body - Write-Host "Successfully created the key AADAppSecret container: $AADAppSecret_container_id" + Write-Host "Successfully uploaded the AADAppSecret key" + } #endregion - #region "Uploading the AADAppSecret key" - #reference: https://docs.microsoft.com/en-us/graph/api/trustframeworkkeyset-uploadsecret?view=graph-rest-beta&tabs=https - #calculating nbf (not before) and exp (expiry) tokens into the json required format of seconds past after 1970-01-01T00:00:00Z UTC - Write-Host "`nGenerating the AADAppSecret key and uploading to the keyset`n" - $arr = getNbfExp($num_months) - $nbf = $arr[0] - $exp = $arr[1] + #endregion - #uploading the AADAppSecret key - $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" - $headers.Add("Authorization", $access_token) - $headers.Add("Content-Type", "application/json") + #region "B2C STEP 11.D: Create the Facebook keyset" + #TODO - eventually only run this B2C STEP if we are using Facebook (and then use different contract templates for linking facebook vs without) + Write-Title "B2C STEP 11.D: Creating the Facebook Key" - $body = "{ - `n `"use`": `"sig`", - `n `"k`": `""+$MultiTenantClientSecret+"`", - `n `"nbf`": "+$nbf+", - `n `"exp`": "+$exp+" - `n}" + if($keysets -contains "B2C_1A_FacebookSecret"){ + Read-Host "B2C_1A_FacebookSecret already exists, so cannot upload it again. If this is not expected, please terminate this script and run B2CCleanup.ps1 first." + } + else{ + #region "Creating the B2C_1A_FacebookSecret keyset (container)" + #reference: https://docs.microsoft.com/en-us/graph/api/trustframework-post-keysets?view=graph-rest-beta&tabs=http + Write-Host "`nCreating the FacebookSecret keyset (container)`n" + $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" + $headers.Add("Authorization", $access_token) + $headers.Add("Content-Type", "application/json") - $response = Invoke-RestMethod "https://graph.microsoft.com/beta/trustFramework/keySets/$AADAppSecret_container_id/uploadSecret" -Method 'POST' -Headers $headers -Body $body + $body = "{`"id`":`"B2C_1A_FacebookSecret`"}" - Write-Host "Successfully uploaded the AADAppSecret key" -} -#endregion + $response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets' -Method 'POST' -Headers $headers -Body $body + $FacebookSecret_container_id = $response.id -#endregion + Write-Host "Successfully created the key FacebookSecret container: $FacebookSecret_container_id" + #endregion -#region "B2C STEP 11.D: Create the Facebook keyset" -#TODO - eventually only run this B2C STEP if we are using Facebook (and then use different contract templates for linking facebook vs without) -Write-Title "B2C STEP 11.D: Creating the Facebook Key" + #region "Uploading the AADAppSecret key" + #reference: https://docs.microsoft.com/en-us/graph/api/trustframeworkkeyset-uploadsecret?view=graph-rest-beta&tabs=https + #calculating nbf (not before) and exp (expiry) tokens into the json required format of seconds past after 1970-01-01T00:00:00Z UTC + Write-Host "`nGenerating the FacebookSecret key and uploading to the keyset`n" + $arr = getNbfExp($num_months) + $nbf = $arr[0] + $exp = $arr[1] -if($keysets -contains "B2C_1A_FacebookSecret"){ - Read-Host "B2C_1A_FacebookSecret already exists, so cannot upload it again. If this is not expected, please terminate this script and run B2CCleanup.ps1 first." -} -else{ - #region "Creating the B2C_1A_FacebookSecret keyset (container)" - #reference: https://docs.microsoft.com/en-us/graph/api/trustframework-post-keysets?view=graph-rest-beta&tabs=http - Write-Host "`nCreating the FacebookSecret keyset (container)`n" - $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" - $headers.Add("Authorization", $access_token) - $headers.Add("Content-Type", "application/json") + #uploading the FacebookSecret key + $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" + $headers.Add("Authorization", $access_token) + $headers.Add("Content-Type", "application/json") - $body = "{`"id`":`"B2C_1A_FacebookSecret`"}" + $body = "{ + `n `"use`": `"sig`", + `n `"k`": `""+$FacebookSecret+"`", + `n `"nbf`": "+$nbf+", + `n `"exp`": "+$exp+" + `n}" - $response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets' -Method 'POST' -Headers $headers -Body $body - $FacebookSecret_container_id = $response.id + $response = Invoke-RestMethod "https://graph.microsoft.com/beta/trustFramework/keySets/$FacebookSecret_container_id/uploadSecret" -Method 'POST' -Headers $headers -Body $body - Write-Host "Successfully created the key FacebookSecret container: $FacebookSecret_container_id" + Write-Host "Successfully uploaded the FacebookSecret key" + } #endregion - #region "Uploading the AADAppSecret key" - #reference: https://docs.microsoft.com/en-us/graph/api/trustframeworkkeyset-uploadsecret?view=graph-rest-beta&tabs=https - #calculating nbf (not before) and exp (expiry) tokens into the json required format of seconds past after 1970-01-01T00:00:00Z UTC - Write-Host "`nGenerating the FacebookSecret key and uploading to the keyset`n" - $arr = getNbfExp($num_months) - $nbf = $arr[0] - $exp = $arr[1] - - #uploading the FacebookSecret key - $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" - $headers.Add("Authorization", $access_token) - $headers.Add("Content-Type", "application/json") - - $body = "{ - `n `"use`": `"sig`", - `n `"k`": `""+$FacebookSecret+"`", - `n `"nbf`": "+$nbf+", - `n `"exp`": "+$exp+" - `n}" - - $response = Invoke-RestMethod "https://graph.microsoft.com/beta/trustFramework/keySets/$FacebookSecret_container_id/uploadSecret" -Method 'POST' -Headers $headers -Body $body - - Write-Host "Successfully uploaded the FacebookSecret key" -} -#endregion - -#endregion -#endregion - -#region "B2C STEP 12: uploading the custom policies to the b2c tenant" + #endregion + #endregion -#region "Function for updating existing custom policy or uploading new custom policies" -function CustomPolicyUpdateOrUpload($customPolicyName, $customPolicies, $access_token) { - process{ - if($customPolicies -contains $customPolicyName){ - $updateCustomPolicy = "" - while($UpdateCustomPolicy -ne "y" -and $UpdateCustomPolicy -ne "n"){ - $UpdateCustomPolicy = Read-Host "$customPolicyName already exists, would you like to update it? ('y' recommended OR 'n') " + #region "B2C STEP 12: uploading the custom policies to the b2c tenant" + + #region "Function for updating existing custom policy or uploading new custom policies" + function CustomPolicyUpdateOrUpload($customPolicyName, $customPolicies, $access_token) { + process{ + if($customPolicies -contains $customPolicyName){ + $updateCustomPolicy = "" + while($UpdateCustomPolicy -ne "y" -and $UpdateCustomPolicy -ne "n"){ + $UpdateCustomPolicy = Read-Host "$customPolicyName already exists, would you like to update it? ('y' recommended OR 'n') " + } + + if($UpdateCustomPolicy -eq "y"){ + #reference: https://docs.microsoft.com/en-us/graph/api/trustframework-put-trustframeworkpolicy?view=graph-rest-beta + $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" + $headers.Add("Content-Type", "application/xml") + $headers.Add("Authorization", $access_token) + [string] $body = Get-Content "./CustomPolicy/$customPolicyName.xml" + $response = Invoke-RestMethod ('https://graph.microsoft.com/beta/trustFramework/policies/'+$customPolicyName+'/$value') -Method 'PUT' -Headers $headers -Body $body + $response | ConvertTo-Json + } } - - if($UpdateCustomPolicy -eq "y"){ - #reference: https://docs.microsoft.com/en-us/graph/api/trustframework-put-trustframeworkpolicy?view=graph-rest-beta + else{ + #reference: https://docs.microsoft.com/en-us/graph/api/trustframework-post-trustframeworkpolicy?view=graph-rest-beta + Write-Host "$customPolicyName does not exist, so uploading it to a new custom policy on Azure" $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" - $headers.Add("Content-Type", "application/xml") $headers.Add("Authorization", $access_token) + $headers.Add("Content-Type", "application/xml") [string] $body = Get-Content "./CustomPolicy/$customPolicyName.xml" - $response = Invoke-RestMethod ('https://graph.microsoft.com/beta/trustFramework/policies/'+$customPolicyName+'/$value') -Method 'PUT' -Headers $headers -Body $body - $response | ConvertTo-Json + $response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies' -Method 'POST' -Headers $headers -Body $body } } - else{ - #reference: https://docs.microsoft.com/en-us/graph/api/trustframework-post-trustframeworkpolicy?view=graph-rest-beta - Write-Host "$customPolicyName does not exist, so uploading it to a new custom policy on Azure" - $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" - $headers.Add("Authorization", $access_token) - $headers.Add("Content-Type", "application/xml") - [string] $body = Get-Content "./CustomPolicy/$customPolicyName.xml" - $response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies' -Method 'POST' -Headers $headers -Body $body - } } -} -#endregion - -Write-Title "B2C STEP 12: Uploading the custom policies to the b2c tenant" - -#getting list of all users in the tenant -Write-Host "Getting the list of all custom policies in the tenant" -$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" -$headers.Add("Authorization", $access_token) -$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies' -Method 'GET' -Headers $headers -$customPolicies = $response.value -$customPolicies = $customPolicies.id - + #endregion -Write-Host "Uploading/updating each of the custom policies" + Write-Title "B2C STEP 12: Uploading the custom policies to the b2c tenant" -# Order matters in the uploads - do not modify the order -CustomPolicyUpdateOrUpload "B2C_1A_TrustFrameworkBase" $customPolicies $access_token -CustomPolicyUpdateOrUpload "B2C_1A_TrustFrameworkLocalization" $customPolicies $access_token -CustomPolicyUpdateOrUpload "B2C_1A_TrustFrameworkExtensions" $customPolicies $access_token -CustomPolicyUpdateOrUpload "B2C_1A_signin" $customPolicies $access_token -CustomPolicyUpdateOrUpload "B2C_1A_ProfileEdit" $customPolicies $access_token -CustomPolicyUpdateOrUpload "B2C_1A_PasswordReset" $customPolicies $access_token -#endregionWebClientID + #getting list of all users in the tenant + Write-Host "Getting the list of all custom policies in the tenant" + $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" + $headers.Add("Authorization", $access_token) + $response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies' -Method 'GET' -Headers $headers + $customPolicies = $response.value + $customPolicies = $customPolicies.id + + + Write-Host "Uploading/updating each of the custom policies" + + # Order matters in the uploads - do not modify the order + CustomPolicyUpdateOrUpload "B2C_1A_TrustFrameworkBase" $customPolicies $access_token + CustomPolicyUpdateOrUpload "B2C_1A_TrustFrameworkLocalization" $customPolicies $access_token + CustomPolicyUpdateOrUpload "B2C_1A_TrustFrameworkExtensions" $customPolicies $access_token + CustomPolicyUpdateOrUpload "B2C_1A_signin" $customPolicies $access_token + CustomPolicyUpdateOrUpload "B2C_1A_ProfileEdit" $customPolicies $access_token + CustomPolicyUpdateOrUpload "B2C_1A_PasswordReset" $customPolicies $access_token + #endregionWebClientID + + Write-Title "Important values for the created applications SAVE these" + Write-Color "green" "Please take a moment to make a note of the following ID's and protect the following client secret's; as you will not be able to access it again." + Write-Color "green" "AD Tenant name is $ADTenantName" + Write-Color "green" "B2C Tenant name is $B2cTenantName" + Write-Color "green" "Client ID for $MultiTenantAppName`: $MultiTenantAppID" + Write-Color "green" "Client secret for $MultiTenantAppName`: $MultiTenantClientSecret" + Write-Color "green" "Client ID for $B2cAppName`: $WebClientID" + Write-Color "green" "Client secret for $B2cAppName`: $WebClientSecret" + Write-Color "green" "Client ID for $PermissionAppName`: $PermissionClientID" + Write-Color "green" "Client secret for $PermissionAppName`: $PermissionClientSecret" + + Read-Host "Press enter when ready to continue after recording the client secret" + + + #returning values required by the Deploy.ps1 script + return $WebClientID, $WebClientSecret, $B2cTenantName, $ObjectId +} +catch{ + if(!$PermissionClientSecret){ + Write-Title "The script crashed, please make a note of the following values then run cleanup.bat; inserting these values when prompted for the b2c cleanup" + Write-Color "green" "AD Tenant name is $ADTenantName" + Write-Color "green" "Client ID for $PermissionAppName`: $PermissionClientID" + Write-Color "green" "Client secret for $PermissionAppName`: $PermissionClientSecret" + Read-Host "Press enter when ready to continue after recording the client secret" + } -#returning values required by the Deploy.ps1 script -return $WebClientID, $WebClientSecret, $B2cTenantName, $ObjectId \ No newline at end of file + return -1 +} \ No newline at end of file diff --git a/deployment/Cleanup.ps1 b/deployment/Cleanup.ps1 index 06ba311b..19baa271 100644 --- a/deployment/Cleanup.ps1 +++ b/deployment/Cleanup.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "DM_ad15_MSLearnLTI", - [string]$AppName = "DM_ad15_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "ALLAD_test1_MSLearnLTI", + [string]$AppName = "ALLAD_test1_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null ) @@ -70,11 +70,11 @@ process { #region B2c if needed Write-Title "Optional B2C cleanup" $b2ccleanup = "none" - while($b2ccleanup -ne "yes" -and $b2ccleanup -ne "no") { - $b2ccleanup = Read-Host "Would you like to to cleanup a B2C tenant? (yes/no)" + while($b2ccleanup -ne "y" -and $b2ccleanup -ne "n") { + $b2ccleanup = Read-Host "Would you like to to cleanup a B2C tenant? (y/n)" } - if($b2ccleanup -eq "yes") + if($b2ccleanup -eq "y") { Write-Title "Step #5 - Running B2C Cleanup Script" & ".\B2CCleanup.ps1" diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 7b7a96b2..933dbba3 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "DM_ad15_MSLearnLTI", - [string]$AppName = "DM_ad15_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "ALLAD_test1_MSLearnLTI", + [string]$AppName = "ALLAD_test1_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null @@ -126,6 +126,10 @@ process { # TODO - verify these values are correct e.g. are we returning the correct values or should we return something else? $results = & ".\B2CDeployment.ps1" # TODO - verify that this can run this multiplatform as it only works on windows; may put mac and windows commands in a try catch + if($results[-1] -eq -1){ + throw "B2CDeployment.ps1 failed" + } + # TODO - indexing from -1 etc. because it seems to return meaningless values before the final 3 which we actually want; need to work out why and perhaps fix if it is deemed an issue $REACT_APP_EDNA_B2C_CLIENT_ID = $results[-4] #webclient ID $REACT_APP_EDNA_AUTH_CLIENT_ID = $results[-4] #webclient ID From 598686049b79ce1a7184d4018cce47660c23168b Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Fri, 29 Jul 2022 11:53:39 +0100 Subject: [PATCH 150/285] minor changes --- deployment/B2CDeployment.ps1 | 23 +++++++++++++---------- deployment/Cleanup.ps1 | 4 ++-- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 35f2a24c..d5e2883e 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -1,5 +1,14 @@ $ErrorActionPreference = "Stop" +#region "values determining the names of the resources" +$MultiTenantAppName = "b2c_AD_app" +$MultiTenantClientSecretName = "b2c_AD_app_secret" +$B2cAppName = "b2c_AD_webapp" +$WebClientSecretName = "b2c_AD_webapp_secret" +$PermissionAppName = "b2c_AD_PMA" +$PermissionClientSecretName = "b2c_AD_PMA_secret" +#endregion + #region "Helper Functions" #function for making clear and distinct titles function Write-Title([string]$Title) { @@ -32,15 +41,6 @@ if (Test-Path $AppInfoCSVPath -PathType Leaf) { } #endregeion -#region "values determining the names of the resources" -$MultiTenantAppName = "b2c_AD_app" -$MultiTenantClientSecretName = "b2c_AD_app_secret" -$B2cAppName = "b2c_AD_webapp" -$WebClientSecretName = "b2c_AD_webapp_secret" -$PermissionAppName = "b2c_AD_PMA" -$PermissionClientSecretName = "b2c_AD_PMA_secret" -#endregion - #region "B2C STEP 1: Create Active Directory application" $B2cTenantName = Read-Host "Please enter your B2C tenant name" $ADTenantName = Read-Host "Please enter your AD tenant name" @@ -215,7 +215,7 @@ az ad sp create --id $PermissionClientID --only-show-errors 2>&1 > $null az ad app permission grant --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null az ad app permission add --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors az ad app permission add --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $keysetRWPermission $policyRWPermission --only-show-errors -az ad app permission admin-consent --id $PermissionClientID --only-show-errors +#admin consent added later to avoid race condition #endregion #region "B2C STEP 7: restrict access via whitelisting tenants" @@ -356,6 +356,9 @@ while(1){ try{ #region "Getting the token to be used in the HTML REQUESTS" # relevant docs: https://docs.microsoft.com/en-us/graph/auth-v2-service#4-get-an-access-token + + #Granting admin consent for the needed apis + az ad app permission admin-consent --id $PermissionClientID --only-show-errors $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $headers.Add("Content-Type", "application/x-www-form-urlencoded") diff --git a/deployment/Cleanup.ps1 b/deployment/Cleanup.ps1 index 06ba311b..ceaf7d31 100644 --- a/deployment/Cleanup.ps1 +++ b/deployment/Cleanup.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "DM_ad15_MSLearnLTI", - [string]$AppName = "DM_ad15_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "AllB2C_test2_MSLearnLTI", + [string]$AppName = "AllB2C_test2_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null ) From 454a5131b0ed8ed79a586c2e259a9e9c3f765ab2 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Fri, 29 Jul 2022 12:12:21 +0100 Subject: [PATCH 151/285] Fixed merge errors --- deployment/B2CDeployment.ps1 | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index bd553359..12401fbf 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -360,6 +360,9 @@ try{ #region "Getting the token to be used in the HTML REQUESTS" # relevant docs: https://docs.microsoft.com/en-us/graph/auth-v2-service#4-get-an-access-token + #Granting admin consent for the needed apis + az ad app permission admin-consent --id $PermissionClientID --only-show-errors + $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $headers.Add("Content-Type", "application/x-www-form-urlencoded") @@ -590,6 +593,8 @@ try{ Write-Host "Successfully uploaded the FacebookSecret key" } #endregion + #endregion + #endregion #region "B2C STEP 12: uploading the custom policies to the b2c tenant" From 9e70e38d6e8256e0dbcede2316845c868f8c78d3 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Fri, 29 Jul 2022 12:26:27 +0100 Subject: [PATCH 152/285] added while try defensive programming around suspected race conditions --- deployment/B2CDeployment.ps1 | 94 +++++++++++++++++++++++++++++++++--- 1 file changed, 87 insertions(+), 7 deletions(-) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 12401fbf..3b8ba6f4 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -85,7 +85,23 @@ try{ Write-Host "Creating the client secret for $MultiTenantAppName" # $MultiTenantClientSecretName = Read-Host "Please give a name for the client secret to be created" $MultiTenantClientSecretDuration = 1 - $MultiTenantClientSecret = (az ad app credential reset --id $MultiTenantAppID --append --display-name $MultiTenantClientSecretName --years $MultiTenantClientSecretDuration --query password --output tsv --only-show-errors) + + + #defensive programming around race condition between app creation and secret added to the app + $counter = 0 + while($counter -le 5){ + try{ + Write-Host "Try $($counter+1) out of 6" + $counter += 1 + Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it + $MultiTenantClientSecret = (az ad app credential reset --id $MultiTenantAppID --append --display-name $MultiTenantClientSecretName --years $MultiTenantClientSecretDuration --query password --output tsv --only-show-errors) + break + } + catch{ + Write-Error $Error[0] + Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" + } + } # grant permissions for the AD app Write-Host "Granting permissions to the AD application" @@ -123,8 +139,23 @@ try{ Write-Host "Creating the client secret for $B2cAppName with id $WebClientID" # $WebClientSecretName = Read-Host "Please give a name for the client secret to be created" $WebClientSecretDuration = 1 - $WebClientInfo = (az ad app credential reset --id $WebClientID --append --display-name $WebClientSecretName --years $WebClientSecretDuration --only-show-errors) | ConvertFrom-Json - $WebClientSecret = $webClientInfo.password + + #defensive programming around race condition between app creation and secret added to the app + $counter = 0 + while($counter -le 5){ + try{ + Write-Host "Try $($counter+1) out of 6" + $counter += 1 + Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it + $WebClientInfo = (az ad app credential reset --id $WebClientID --append --display-name $WebClientSecretName --years $WebClientSecretDuration --only-show-errors) | ConvertFrom-Json + break + } + catch{ + Write-Error $Error[0] + Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" + } + } + $WebClientSecret = $WebClientInfo.password # set permissions for the web app @@ -148,10 +179,27 @@ try{ # set permissions for the IEF app Write-Host "Granting permissions to the IEF application" - az ad sp create --id $IEFClientID --only-show-errors 2>&1 > $null + + #defensive programming around race condition between app creation and secret added to the app + $counter = 0 + while($counter -le 5){ + try{ + Write-Host "Try $($counter+1) out of 6" + $counter += 1 + Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it + az ad sp create --id $IEFClientID --only-show-errors 2>&1 > $null + break + } + catch{ + Write-Error $Error[0] + Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" + } + } az ad app permission grant --id $IEFClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null az ad app permission add --id $IEFClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors + + # expose the user_impersonation API Write-Host "Exposing the user_impersonation API" @@ -190,7 +238,22 @@ try{ "$ProxyIEFClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append Write-Host "Granting permissions to the Proxy IEF application" - az ad sp create --id $ProxyIEFClientID --only-show-errors 2>&1 > $null + + #defensive programming around race condition between app creation and secret added to the app + $counter = 0 + while($counter -le 5){ + try{ + Write-Host "Try $($counter+1) out of 6" + $counter += 1 + Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it + az ad sp create --id $ProxyIEFClientID --only-show-errors 2>&1 > $null + break + } + catch{ + Write-Error $Error[0] + Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" + } + } az ad app permission grant --id $ProxyIEFClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null az ad app permission add --id $ProxyIEFClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors az ad app permission grant --id $ProxyIEFClientID --api $IEFClientID --scope "user_impersonation" --only-show-errors > $null @@ -208,7 +271,24 @@ try{ Write-Host "Creating the client secret for $PermissionAppName" # $PermissionClientSecretName = Read-Host "Please give a name for the client secret to be created" $PermissionClientSecretDuration = 1 - $PermissionClientSecret = (az ad app credential reset --id $PermissionClientID --append --display-name $PermissionClientSecretName --years $PermissionClientSecretDuration --query password --output tsv --only-show-errors) + + #defensive programming around race condition between app creation and secret added to the app + $counter = 0 + $PermissionClientSecret = "" + while($counter -le 5){ + try{ + Write-Host "Try $($counter+1) out of 6" + $counter += 1 + Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it + $PermissionClientSecret = (az ad app credential reset --id $PermissionClientID --append --display-name $PermissionClientSecretName --years $PermissionClientSecretDuration --query password --output tsv --only-show-errors) + break + } + catch{ + Write-Error $Error[0] + Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" + } + } + # set permissions for the web app Write-Host "Granting permissions to the B2C Permission Management application" @@ -670,7 +750,7 @@ try{ return $ADTenantName, $B2cTenantName, $WebClientID, $WebClientSecret, $B2cTenantName, $ObjectId } catch{ - if(!$PermissionClientSecret){ + if($PermissionClientSecret){ #TODO - verify this works Write-Title "The script crashed, please make a note of the following values then run cleanup.bat; inserting these values when prompted for the b2c cleanup" Write-Color "green" "AD Tenant name is $ADTenantName" Write-Color "green" "Client ID for $PermissionAppName`: $PermissionClientID" From 0d08871af1f242c8cde814522a8e69dc2691c8a6 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Fri, 29 Jul 2022 13:08:40 +0100 Subject: [PATCH 153/285] FIxed bug in logging where transcript was trying to be written to by b2cDeployment.ps1 whilst still being owned by deploy.ps1 --- deployment/B2CDeployment.ps1 | 159 +++++++++++++++++++++++++++++++++-- deployment/Deploy.ps1 | 6 +- 2 files changed, 156 insertions(+), 9 deletions(-) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 3b8ba6f4..ef1c891b 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -30,6 +30,20 @@ function Write-Error([string]$Text) { } #endregion +#region Setup Logging +. .\Write-Log.ps1 +$ScriptPath = split-path -parent $MyInvocation.MyCommand.Definition +$ExecutionStartTime = $args[0] +$LogRoot = Join-Path $ScriptPath "Log" + +$LogFile = Join-Path $LogRoot "Log-$ExecutionStartTime.log" +Set-LogFile -Path $LogFile + +$TranscriptFile = Join-Path $LogRoot "Transcript-$ExecutionStartTime.log" +Start-Transcript -Path $TranscriptFile +Write-Log -Message "Started the B2C setup script" +#endregion + try{ #region "AppInfo CSV setup" @@ -53,6 +67,7 @@ try{ #region "B2C STEP 1: Create Active Directory application" $B2cTenantName = Read-Host "Please enter your B2C tenant name" $ADTenantName = Read-Host "Please enter your AD tenant name" + Write-Log -Message "User Entered B2C Tenant Name: $B2cTenantName`nAD Tenant Name: $ADTenantName" Write-Title "B2C STEP 1: Create AD application" Write-Host "Please login to $ADTenantName via the pop-up window that has launched in your browser" @@ -80,14 +95,17 @@ try{ $MultiTenantAppID = (az ad app create --display-name $MultiTenantAppName --sign-in-audience AzureADandPersonalMicrosoftAccount --web-redirect-uris https://$B2cTenantName.b2clogin.com/$B2cTenantName.onmicrosoft.com/oauth2/authresp --optional-claims "@manifest.json" --query appId --output tsv --only-show-errors) Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it "$MultiTenantAppID,$ADTenantName" | Out-File -FilePath $AppInfoCSVPath -Append + Write-Log -Message "Created MultiTenant app with id $MultiTenantAppID in $ADTenantName" # Create client secret Write-Host "Creating the client secret for $MultiTenantAppName" + Write-Log -Message "Creating the client secret for $MultiTenantAppName" # $MultiTenantClientSecretName = Read-Host "Please give a name for the client secret to be created" $MultiTenantClientSecretDuration = 1 #defensive programming around race condition between app creation and secret added to the app + $counter = 0 while($counter -le 5){ try{ @@ -98,6 +116,7 @@ try{ break } catch{ + Write-Log -Message "Failed to create client secret for $MultiTenantAppName $counter times" Write-Error $Error[0] Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" } @@ -107,8 +126,25 @@ try{ Write-Host "Granting permissions to the AD application" $profilePermission = "14dad69e-099b-42c9-810b-d002981feec1=Scope" $emailPermission = "64a6cdd6-aab1-4aaf-94b8-3cc8405e90d0=Scope" + Write-Log -Message "Creating service principal for $MultiTenantAppName" az ad sp create --id $MultiTenantAppID --only-show-errors 2>&1 > $null - az ad app permission grant --id $MultiTenantAppID --api 00000003-0000-0000-c000-000000000000 --scope "email profile" --only-show-errors > $null + Write-Log -Message "Granting permissions to the service principal for $MultiTenantAppName" + #defensive programming around race condition between app creation and secret added to the app + $counter = 0 + while($counter -le 5){ + try{ + Write-Host "Try $($counter+1) out of 6" + $counter += 1 + Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it + az ad app permission grant --id $MultiTenantAppID --api 00000003-0000-0000-c000-000000000000 --scope "email profile" --only-show-errors > $null + break + } + catch{ + Write-Log -Message "Failed to grant permissions to the service principal for $MultiTenantAppName $counter times" + Write-Error $Error[0] + Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" + } + } az ad app permission add --id $MultiTenantAppID --api 00000003-0000-0000-c000-000000000000 --api-permissions $emailPermission $profilePermission --only-show-errors Remove-Item manifest.json @@ -129,7 +165,7 @@ try{ Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it $WebClientID = $appinfo.appId $ObjectId = $appinfo.id - + Write-Log -Message "Created web app with id $WebClientID in $B2cTenantName" @@ -137,6 +173,7 @@ try{ # create client secret Write-Host "Creating the client secret for $B2cAppName with id $WebClientID" + Write-Log -Message "Creating the client secret for $B2cAppName with id $WebClientID" # $WebClientSecretName = Read-Host "Please give a name for the client secret to be created" $WebClientSecretDuration = 1 @@ -151,6 +188,7 @@ try{ break } catch{ + Write-Log -Message "Failed to create client secret for $B2cAppName $counter times" Write-Error $Error[0] Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" } @@ -162,8 +200,25 @@ try{ Write-Host "Granting permissions to the B2C Web application" $openidPermission = "37f7f235-527c-4136-accd-4a02d197296e=Scope" $offlineAccessPermission = "7427e0e9-2fba-42fe-b0c0-848c9e6a8182=Scope" + Write-Log -Message "Creating service principal for $B2cAppName" az ad sp create --id $WebClientID --only-show-errors 2>&1 > $null - az ad app permission grant --id $WebClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null + Write-Log -Message "Granting permissions to the service principal for $B2cAppName" + #defensive programming around race condition between app creation and secret added to the app + $counter = 0 + while($counter -le 5){ + try{ + Write-Host "Try $($counter+1) out of 6" + $counter += 1 + Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it + az ad app permission grant --id $WebClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null + break + } + catch{ + Write-Log -Message "Failed to grant permissions to the service principal for $B2cAppName $counter times" + Write-Error $Error[0] + Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" + } + } az ad app permission add --id $WebClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors #endregion @@ -173,12 +228,14 @@ try{ $IEFAppName = "IdentityExperienceFramework" $IEFAppInfo = (az ad app create --display-name $IEFAppName --sign-in-audience AzureADMyOrg --web-redirect-uris https://$B2cTenantName.b2clogin.com/$B2cTenantName.onmicrosoft.com --only-show-errors) | ConvertFrom-Json $IEFClientID = $IEFAppInfo.appId + Write-Log -Message "Created IEF app with id $IEFClientID in $B2cTenantName" Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it "$IEFClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append # set permissions for the IEF app Write-Host "Granting permissions to the IEF application" + Write-Log -Message "Creating service principal for $IEFAppName" #defensive programming around race condition between app creation and secret added to the app $counter = 0 @@ -195,7 +252,23 @@ try{ Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" } } - az ad app permission grant --id $IEFClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null + Write-Log -Message "Granting permissions to the service principal for $IEFAppName" + #defensive programming around race condition between app creation and secret added to the app + $counter = 0 + while($counter -le 5){ + try{ + Write-Host "Try $($counter+1) out of 6" + $counter += 1 + Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it + az ad app permission grant --id $IEFClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null + break + } + catch{ + Write-Log -Message "Failed to grant permissions to the service principal for $IEFAppName $counter times" + Write-Error $Error[0] + Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" + } + } az ad app permission add --id $IEFClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors @@ -203,6 +276,7 @@ try{ # expose the user_impersonation API Write-Host "Exposing the user_impersonation API" + Write-Log -Message "Exposing the user_impersonation API" az ad app update --id $IEFClientID --identifier-uris "https://$B2cTenantName.onmicrosoft.com/$IEFClientID" --only-show-errors $IEFAppInfo = (az ad app show --id $IEFClientID --only-show-errors | ConvertFrom-Json) $IEFAppApiInfo = $IEFAppInfo.api @@ -234,10 +308,12 @@ try{ $ProxyIEFAppName = "ProxyIdentityExperienceFramework" $ProxyIEFAppInfo = (az ad app create --display-name $ProxyIEFAppName --sign-in-audience AzureADMyOrg --public-client-redirect-uris myapp://auth --is-fallback-public-client true --only-show-errors) | ConvertFrom-Json $ProxyIEFClientID = $ProxyIEFAppInfo.appId + Write-Log -Message "Created Proxy IEF app with id $ProxyIEFClientID in $B2cTenantName" Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it "$ProxyIEFClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append Write-Host "Granting permissions to the Proxy IEF application" + Write-Log -Message "Creating service principal for $ProxyIEFAppName" #defensive programming around race condition between app creation and secret added to the app $counter = 0 @@ -250,11 +326,30 @@ try{ break } catch{ + Write-Log -Message "Failed to create service principal for $ProxyIEFAppName $counter times" + Write-Error $Error[0] + Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" + } + } + + Write-Log -Message "Granting permissions to the service principal for $ProxyIEFAppName" + + #defensive programming around race condition between app creation and secret added to the app + $counter = 0 + while($counter -le 5){ + try{ + Write-Host "Try $($counter+1) out of 6" + $counter += 1 + Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it + az ad app permission grant --id $ProxyIEFClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null + break + } + catch{ + Write-Log -Message "Failed to create service principal for $ProxyIEFAppName $counter times" Write-Error $Error[0] Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" } } - az ad app permission grant --id $ProxyIEFClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null az ad app permission add --id $ProxyIEFClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors az ad app permission grant --id $ProxyIEFClientID --api $IEFClientID --scope "user_impersonation" --only-show-errors > $null az ad app permission add --id $ProxyIEFClientID --api $IEFClientID --api-permissions "$IEFScopeGUID=Scope" --only-show-errors @@ -264,11 +359,13 @@ try{ Write-Title "B2C STEP 6: Creating Permission Management application" # $PermissionAppName = Read-Host "Please give a name for the permission management application to be created" $PermissionClientID = (az ad app create --display-name $PermissionAppName --sign-in-audience AzureADMyOrg --query appId --output tsv --only-show-errors) + Write-Log -Message "Created Permission Management app with id $PermissionClientID in $B2cTenantName" Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it "$PermissionClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append # create client secret Write-Host "Creating the client secret for $PermissionAppName" + Write-Log -Message "Creating the client secret for $PermissionAppName" # $PermissionClientSecretName = Read-Host "Please give a name for the client secret to be created" $PermissionClientSecretDuration = 1 @@ -284,6 +381,7 @@ try{ break } catch{ + Write-Log -Message "Failed to create client secret for $PermissionAppName $counter times" Write-Error $Error[0] Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" } @@ -294,8 +392,44 @@ try{ Write-Host "Granting permissions to the B2C Permission Management application" $keysetRWPermission = "4a771c9a-1cf2-4609-b88e-3d3e02d539cd=Role" $policyRWPermission = "79a677f7-b79d-40d0-a36a-3e6f8688dd7a=Role" - az ad sp create --id $PermissionClientID --only-show-errors 2>&1 > $null - az ad app permission grant --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null + + Write-Log -Message "Creating service principal for $PermissionAppName" + #defensive programming around race condition between app creation and secret added to the app + $counter = 0 + $PermissionClientSecret = "" + while($counter -le 5){ + try{ + Write-Host "Try $($counter+1) out of 6" + $counter += 1 + Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it + az ad sp create --id $PermissionClientID --only-show-errors 2>&1 > $null + break + } + catch{ + Write-Log -Message "Failed to create service principal for $PermissionAppName $counter times" + Write-Error $Error[0] + Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" + } + } + + Write-Log-Message "Granting permissions to the service principal for $PermissionAppName" + #defensive programming around race condition between app creation and secret added to the app + $counter = 0 + $PermissionClientSecret = "" + while($counter -le 5){ + try{ + Write-Host "Try $($counter+1) out of 6" + $counter += 1 + Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it + az ad app permission grant --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null + break + } + catch{ + Write-Log -Message "Failed to grant permissions to the service principal for $PermissionAppName $counter times" + Write-Error $Error[0] + Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" + } + } az ad app permission add --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors az ad app permission add --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $keysetRWPermission $policyRWPermission --only-show-errors az ad app permission admin-consent --id $PermissionClientID --only-show-errors @@ -363,6 +497,7 @@ try{ } $whitelistString = $whitelist -join "," + Write-Log -Message "Added the following tenants to the whitelist for the b2c: $whitelistString" #endregion @@ -377,6 +512,8 @@ try{ if($HasFaceBookApp -eq "y"){ $FacebookId = Read-Host "What is the application ID of the Facebook application you created?" $FacebookSecret = Read-Host "What is the secret value of the Facebook application you created?" + + Write-Log -Message "Linked facebook application with ID of $FacebookId and secret of $FacebookSecret" } #endregion @@ -746,6 +883,10 @@ try{ Read-Host "Press enter when ready to continue after recording the client secret" + Write-Log -Message "Succesfully finished the B2C setup script" + Stop-Transcript + + #returning values required by the Deploy.ps1 script return $ADTenantName, $B2cTenantName, $WebClientID, $WebClientSecret, $B2cTenantName, $ObjectId } @@ -757,6 +898,10 @@ catch{ Write-Color "green" "Client secret for $PermissionAppName`: $PermissionClientSecret" Read-Host "Press enter when ready to continue after recording the client secret" } + + Write-Log -Message "Failed the B2C setup script" + Stop-Transcript + return -1 } diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 7ae68164..54920782 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -96,11 +96,13 @@ process { if($b2cOrAD -eq "b2c"){ Write-Title "B2C Step #0: Running the B2C Setup Script" # TODO - verify these values are correct e.g. are we returning the correct values or should we return something else? - $results = & ".\B2CDeployment.ps1" # TODO - verify that this can run this multiplatform as it only works on windows; may put mac and windows commands in a try catch - + Stop-Transcript + $results = (& ".\B2CDeployment.ps1" $ExecutionStartTime) # TODO - verify that this can run this multiplatform as it only works on windows; may put mac and windows commands in a try catch + Start-Transcript -Path $TranscriptFile if($results[-1] -eq -1){ throw "B2CDeployment.ps1 failed" } + Write-Log -Message "Returned from the B2C setup script, continuing with LTI deployment" # TODO - indexing from -1 etc. because it seems to return meaningless values before the final 3 which we actually want; need to work out why and perhaps fix if it is deemed an issue $AD_Tenant_Name = $results[-6] # tenant name of the AD server From dd1391715ba571f62796c6d6171a81e80821df85 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Fri, 29 Jul 2022 13:15:40 +0100 Subject: [PATCH 154/285] minor change to b2c deploy --- deployment/B2CDeployment.ps1 | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index bd553359..2b53203b 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -124,7 +124,7 @@ try{ # $WebClientSecretName = Read-Host "Please give a name for the client secret to be created" $WebClientSecretDuration = 1 $WebClientInfo = (az ad app credential reset --id $WebClientID --append --display-name $WebClientSecretName --years $WebClientSecretDuration --only-show-errors) | ConvertFrom-Json - $WebClientSecret = $webClientInfo.password + $WebClientSecret = $WebClientInfo.password # set permissions for the web app @@ -189,7 +189,7 @@ try{ Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it "$ProxyIEFClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append - Write-Host "Granting permissions to the Proxy IEF application" + Write-Host "Granting permissions to the Proxy IEF application at $ProxyIEFClientID" az ad sp create --id $ProxyIEFClientID --only-show-errors 2>&1 > $null az ad app permission grant --id $ProxyIEFClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null az ad app permission add --id $ProxyIEFClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors @@ -218,7 +218,7 @@ try{ az ad app permission grant --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null az ad app permission add --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors az ad app permission add --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $keysetRWPermission $policyRWPermission --only-show-errors - az ad app permission admin-consent --id $PermissionClientID --only-show-errors + #Will grant admin permissions later to avoid race condition #endregion #region "B2C STEP 7: restrict access via whitelisting tenants" @@ -360,6 +360,9 @@ try{ #region "Getting the token to be used in the HTML REQUESTS" # relevant docs: https://docs.microsoft.com/en-us/graph/auth-v2-service#4-get-an-access-token + #grant admin permissions now, the apis should be created + az ad app permission admin-consent --id $PermissionClientID --only-show-errors + $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $headers.Add("Content-Type", "application/x-www-form-urlencoded") From 407681df0716b880a4e68fea5cec148470adfb48 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Fri, 29 Jul 2022 13:45:31 +0100 Subject: [PATCH 155/285] Added error log if b2c fails --- deployment/B2CDeployment.ps1 | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index ef1c891b..b3d208d4 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -898,8 +898,9 @@ catch{ Write-Color "green" "Client secret for $PermissionAppName`: $PermissionClientSecret" Read-Host "Press enter when ready to continue after recording the client secret" } - - Write-Log -Message "Failed the B2C setup script" + $Error[0] + Write-Log -Message "Failed the B2C setup script, error trace below" + Write-Log -Message $Error Stop-Transcript return -1 From f7282cfe10b76619297e3a56c07376e78d3bf26f Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Fri, 29 Jul 2022 14:18:05 +0100 Subject: [PATCH 156/285] Improved logging of errors occuring in b2cDeployment.ps1 --- deployment/B2CDeployment.ps1 | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index b3d208d4..7f575c88 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -898,11 +898,10 @@ catch{ Write-Color "green" "Client secret for $PermissionAppName`: $PermissionClientSecret" Read-Host "Press enter when ready to continue after recording the client secret" } - $Error[0] - Write-Log -Message "Failed the B2C setup script, error trace below" - Write-Log -Message $Error - Stop-Transcript + $Message = 'Error occurred while executing the B2C setup Script. Please report the bug on Github (along with Error Message & Logs)' + Write-Log -Message $Message -ErrorRecord $Error[0] + Stop-Transcript return -1 } From 3fcd06eed2a74e4ee5a4b7a2bd2bbb05642975b1 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Fri, 29 Jul 2022 14:22:22 +0100 Subject: [PATCH 157/285] minor changes --- deployment/B2CDeployment.ps1 | 1 + 1 file changed, 1 insertion(+) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 8d79cf37..2163d975 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -253,6 +253,7 @@ try{ } } Write-Log -Message "Granting permissions to the service principal for $IEFAppName" + Write-Host "Granting permissions to the service principal for $IEFAppName" #defensive programming around race condition between app creation and secret added to the app $counter = 0 while($counter -le 5){ From c7e8db68a0b8858b6c7fd2aeda40173af1a9b5b7 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Fri, 29 Jul 2022 14:37:20 +0100 Subject: [PATCH 158/285] Added extra write-hosts --- deployment/B2CDeployment.ps1 | 5 ++++- deployment/Cleanup.ps1 | 4 ++-- deployment/Deploy.ps1 | 4 ++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index b75fa47e..fc79beae 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -333,6 +333,7 @@ try{ } } + Write-Host "Granting permissions to the service principal for $ProxyIEFAppName" Write-Log -Message "Granting permissions to the service principal for $ProxyIEFAppName" #defensive programming around race condition between app creation and secret added to the app @@ -394,6 +395,7 @@ try{ $keysetRWPermission = "4a771c9a-1cf2-4609-b88e-3d3e02d539cd=Role" $policyRWPermission = "79a677f7-b79d-40d0-a36a-3e6f8688dd7a=Role" + Write-Host "Creating service principal for $PermissionAppName" Write-Log -Message "Creating service principal for $PermissionAppName" #defensive programming around race condition between app creation and secret added to the app $counter = 0 @@ -413,7 +415,8 @@ try{ } } - Write-Log-Message "Granting permissions to the service principal for $PermissionAppName" + Write-Host "Granting permissions to the service principal for $PermissionAppName" + Write-Log -Message "Granting permissions to the service principal for $PermissionAppName" #defensive programming around race condition between app creation and secret added to the app $counter = 0 $PermissionClientSecret = "" diff --git a/deployment/Cleanup.ps1 b/deployment/Cleanup.ps1 index 9f1c23e9..21e5e5b9 100644 --- a/deployment/Cleanup.ps1 +++ b/deployment/Cleanup.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "AllB2C_test2_MSLearnLTI", - [string]$AppName = "AllB2C_test2_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "ALLAD_test1_MS-Learn-Lti-Tool-App", + [string]$AppName = "ALLAD_test1_MSLearnLTI", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null ) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 54920782..fb9be903 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "AllB2C_test2_MSLearnLTI", - [string]$AppName = "AllB2C_test2_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "ALLAD_test2_MS-Learn-Lti-Tool-App", + [string]$AppName = "ALLAD_test2_MSLearnLTI", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null From f9f9f415aa6996443f742ae6ee714a7baa5519d7 Mon Sep 17 00:00:00 2001 From: Sundram Goyal Date: Fri, 29 Jul 2022 14:37:30 +0100 Subject: [PATCH 159/285] AdTenant update --- deployment/B2CDeployment.ps1 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 3b8ba6f4..d9e9e61e 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -52,7 +52,8 @@ try{ #region "B2C STEP 1: Create Active Directory application" $B2cTenantName = Read-Host "Please enter your B2C tenant name" - $ADTenantName = Read-Host "Please enter your AD tenant name" + $ADTenantId= (az account show | ConvertFrom-Json | Select -ExpandProperty "tenantId") + $ADTenantName = (Get-AzTenant -TenantId $ADTenantId | Select -ExpandProperty "Domains").Split(".")[0] Write-Title "B2C STEP 1: Create AD application" Write-Host "Please login to $ADTenantName via the pop-up window that has launched in your browser" From a5b64bd9e1197e143ef912fa54fa7505b50595d0 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Fri, 29 Jul 2022 14:57:42 +0100 Subject: [PATCH 160/285] Logging the secrets and id's for the app creations --- deployment/B2CDeployment.ps1 | 8 +++----- deployment/Deploy.ps1 | 2 -- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index fc79beae..08e05366 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -38,9 +38,6 @@ $LogRoot = Join-Path $ScriptPath "Log" $LogFile = Join-Path $LogRoot "Log-$ExecutionStartTime.log" Set-LogFile -Path $LogFile - -$TranscriptFile = Join-Path $LogRoot "Transcript-$ExecutionStartTime.log" -Start-Transcript -Path $TranscriptFile Write-Log -Message "Started the B2C setup script" #endregion @@ -121,6 +118,7 @@ try{ Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" } } + Write-Log -Message "Created secret $MultiTenantClientSecretName ($MultiTenantClientSecret) for $MultiTenantAppName ($MultiTenantAppIDs)" # grant permissions for the AD app Write-Host "Granting permissions to the AD application" @@ -194,6 +192,7 @@ try{ } } $WebClientSecret = $WebClientInfo.password + Write-Log -Message "Created secret $WebClientSecretName ($WebClientSecret) for $B2cAppName ($WebClientID)" # set permissions for the web app @@ -388,6 +387,7 @@ try{ Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" } } + Write-Log -Message "Created secret $PermissionClientSecretName ($PermissionClientSecret) for $PermissionAppName ($PermissionClientID)" # set permissions for the web app @@ -888,7 +888,6 @@ try{ Write-Log -Message "Succesfully finished the B2C setup script" - Stop-Transcript #returning values required by the Deploy.ps1 script @@ -905,7 +904,6 @@ catch{ $Message = 'Error occurred while executing the B2C setup Script. Please report the bug on Github (along with Error Message & Logs)' Write-Log -Message $Message -ErrorRecord $Error[0] - Stop-Transcript return -1 } diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index fb9be903..cf77ac9d 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -96,9 +96,7 @@ process { if($b2cOrAD -eq "b2c"){ Write-Title "B2C Step #0: Running the B2C Setup Script" # TODO - verify these values are correct e.g. are we returning the correct values or should we return something else? - Stop-Transcript $results = (& ".\B2CDeployment.ps1" $ExecutionStartTime) # TODO - verify that this can run this multiplatform as it only works on windows; may put mac and windows commands in a try catch - Start-Transcript -Path $TranscriptFile if($results[-1] -eq -1){ throw "B2CDeployment.ps1 failed" } From 7af6ee7e5f2d0fc51e8975e76bba5436bee95dda Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Fri, 29 Jul 2022 15:02:56 +0100 Subject: [PATCH 161/285] auth config change --- client/src/Core/Auth/AppAuthConfig.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/Core/Auth/AppAuthConfig.ts b/client/src/Core/Auth/AppAuthConfig.ts index 3f197155..7a001a78 100644 --- a/client/src/Core/Auth/AppAuthConfig.ts +++ b/client/src/Core/Auth/AppAuthConfig.ts @@ -12,7 +12,7 @@ import { b2cPolicies } from './policies'; export let request; let authority; // Swap out needed B2C vs AD options -if (process.env.REACT_APP_EDNA_B2C_TENANT! != 'NULL') { +if (process.env.REACT_APP_EDNA_B2C_TENANT! != 'NA') { console.log(process.env.REACT_APP_EDNA_B2C_TENANT!); // TODO, remove console.log('in B2C mode'); request = { From 8c135f1cd08e6e13ea7ca5fe2d7beb559936b7bb Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Fri, 29 Jul 2022 15:03:37 +0100 Subject: [PATCH 162/285] ad template change --- deployment/azuredeployADtemplate.json | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/deployment/azuredeployADtemplate.json b/deployment/azuredeployADtemplate.json index 2ddca09d..0f8a1d7a 100644 --- a/deployment/azuredeployADtemplate.json +++ b/deployment/azuredeployADtemplate.json @@ -141,8 +141,7 @@ }, "globalValidation": { "requireAuthentication": true, - "unauthenticatedClientAction": "RedirectToLoginPage", - "redirectToProvider": "AzureB2C" + "unauthenticatedClientAction": "RedirectToLoginPage" }, "identityProviders": { "azureActiveDirectory": { @@ -233,7 +232,6 @@ ], "properties": { "AuthUrl": "[parameters('appRegistrationApiURI')]", - "DidDeployWork": "true", "PlatformsServiceUrl": "[concat('https://','platforms' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", "UsersServiceUrl": "[concat('https://','users' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", @@ -258,7 +256,6 @@ "properties": { "AllowedUsers": "[parameters('userEmailAddress')]", "AuthUrl": "[parameters('appRegistrationApiURI')]", - "DidDeployWork": "true", "ConnectApiBaseUrl": "[concat('https://','connect' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('platforms' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('platforms' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", From 93ba78db808f093c52321383fb3aebcd9405f4d0 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Fri, 29 Jul 2022 15:18:56 +0100 Subject: [PATCH 163/285] taking out setting client secret to empty string --- deployment/B2CDeployment.ps1 | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 08e05366..3550f899 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -118,7 +118,7 @@ try{ Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" } } - Write-Log -Message "Created secret $MultiTenantClientSecretName ($MultiTenantClientSecret) for $MultiTenantAppName ($MultiTenantAppIDs)" + Write-Log -Message "Created secret $MultiTenantClientSecretName ($MultiTenantClientSecret) for $MultiTenantAppName ($MultiTenantAppID)" # grant permissions for the AD app Write-Host "Granting permissions to the AD application" @@ -399,7 +399,6 @@ try{ Write-Log -Message "Creating service principal for $PermissionAppName" #defensive programming around race condition between app creation and secret added to the app $counter = 0 - $PermissionClientSecret = "" while($counter -le 5){ try{ Write-Host "Try $($counter+1) out of 6" @@ -419,7 +418,6 @@ try{ Write-Log -Message "Granting permissions to the service principal for $PermissionAppName" #defensive programming around race condition between app creation and secret added to the app $counter = 0 - $PermissionClientSecret = "" while($counter -le 5){ try{ Write-Host "Try $($counter+1) out of 6" From 7c8690553c5fe465548331c091349637fafe6fd9 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Fri, 29 Jul 2022 15:51:44 +0100 Subject: [PATCH 164/285] Logging responses for all race conditions so when they are encountered we can inspect their values --- deployment/B2CDeployment.ps1 | 33 +++++++++++++++++++++++---------- deployment/Cleanup.ps1 | 4 ++-- 2 files changed, 25 insertions(+), 12 deletions(-) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 08e05366..c0e44221 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -109,7 +109,9 @@ try{ Write-Host "Try $($counter+1) out of 6" $counter += 1 Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it - $MultiTenantClientSecret = (az ad app credential reset --id $MultiTenantAppID --append --display-name $MultiTenantClientSecretName --years $MultiTenantClientSecretDuration --query password --output tsv --only-show-errors) + $MultiTenantClientSecretInfo = az ad app credential reset --id $MultiTenantAppID --append --display-name $MultiTenantClientSecretName --years $MultiTenantClientSecretDuration --only-show-errors | ConvertFrom-Json + $MultiTenantClientSecret = $MultiTenantClientSecretInfo.password + Write-Log -Message "MultiTenantClientSecretInfo value:`n$MultiTenantClientSecretInfo" break } catch{ @@ -134,7 +136,8 @@ try{ Write-Host "Try $($counter+1) out of 6" $counter += 1 Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it - az ad app permission grant --id $MultiTenantAppID --api 00000003-0000-0000-c000-000000000000 --scope "email profile" --only-show-errors > $null + $MultiTenantAppInfo = az ad app permission grant --id $MultiTenantAppID --api 00000003-0000-0000-c000-000000000000 --scope "email profile" --only-show-errors > $null + Write-Log -Message "MultiTenantAppInfo value:`n$MultiTenantAppInfo" break } catch{ @@ -183,6 +186,7 @@ try{ $counter += 1 Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it $WebClientInfo = (az ad app credential reset --id $WebClientID --append --display-name $WebClientSecretName --years $WebClientSecretDuration --only-show-errors) | ConvertFrom-Json + Write-Log -Message "WebClientInfo value:`n$WebClientInfo" break } catch{ @@ -209,7 +213,8 @@ try{ Write-Host "Try $($counter+1) out of 6" $counter += 1 Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it - az ad app permission grant --id $WebClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null + $WebClientPermissionGrantingInfo = az ad app permission grant --id $WebClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null + Write-Log -Message "WebClientPermissionGrantingInfo value:`n$WebClientPermissionGrantingInfo" break } catch{ @@ -243,7 +248,8 @@ try{ Write-Host "Try $($counter+1) out of 6" $counter += 1 Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it - az ad sp create --id $IEFClientID --only-show-errors 2>&1 > $null + $IEFServicePrincipalInfo = az ad sp create --id $IEFClientID --only-show-errors 2>&1 > $null + Write-Log -Message "IEFServicePrincipalInfo value:`n$IEFServicePrincipalInfo" break } catch{ @@ -260,7 +266,8 @@ try{ Write-Host "Try $($counter+1) out of 6" $counter += 1 Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it - az ad app permission grant --id $IEFClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null + $IEFPermissionGrantInfo = az ad app permission grant --id $IEFClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null + Write-Log -Message "IEFPermissionGrantInfo value:`n$IEFPermissionGrantInfo" break } catch{ @@ -322,7 +329,8 @@ try{ Write-Host "Try $($counter+1) out of 6" $counter += 1 Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it - az ad sp create --id $ProxyIEFClientID --only-show-errors 2>&1 > $null + $PIEFServicePrincipalInfo = az ad sp create --id $ProxyIEFClientID --only-show-errors 2>&1 > $null + Write-Log -Message "PIEFServicePrincipalInfo value:`n$PIEFServicePrincipalInfo" break } catch{ @@ -342,7 +350,8 @@ try{ Write-Host "Try $($counter+1) out of 6" $counter += 1 Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it - az ad app permission grant --id $ProxyIEFClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null + $PIEFPermissionGrantInfo = az ad app permission grant --id $ProxyIEFClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null + Write-Log -Message "PIEFPermissionGrantInfo value:`n$PIEFPermissionGrantInfo" break } catch{ @@ -378,7 +387,9 @@ try{ Write-Host "Try $($counter+1) out of 6" $counter += 1 Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it - $PermissionClientSecret = (az ad app credential reset --id $PermissionClientID --append --display-name $PermissionClientSecretName --years $PermissionClientSecretDuration --query password --output tsv --only-show-errors) + $PermissionClientSecretInfo = (az ad app credential reset --id $PermissionClientID --append --display-name $PermissionClientSecretName --years $PermissionClientSecretDuration --only-show-errors) + $PermissionClientSecret = $PermissionClientSecretInfo.password + Write-Log -Message "PermissionClientSecretInfo value:`n$PermissionClientSecretInfo" break } catch{ @@ -405,7 +416,8 @@ try{ Write-Host "Try $($counter+1) out of 6" $counter += 1 Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it - az ad sp create --id $PermissionClientID --only-show-errors 2>&1 > $null + $PermissionClientServicePrincipalInfo = az ad sp create --id $PermissionClientID --only-show-errors 2>&1 > $null + Write-Log -Message "PermissionClientServicePrincipalInfo value:`n$PermissionClientServicePrincipalInfo" break } catch{ @@ -425,7 +437,8 @@ try{ Write-Host "Try $($counter+1) out of 6" $counter += 1 Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it - az ad app permission grant --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null + $PermissionClientPermissionGrantInfo = az ad app permission grant --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null + Write-Log -Message "PermissionClientPermissionGrantInfo value:`n$PermissionClientPermissionGrantInfo" break } catch{ diff --git a/deployment/Cleanup.ps1 b/deployment/Cleanup.ps1 index 21e5e5b9..3ae6bbbb 100644 --- a/deployment/Cleanup.ps1 +++ b/deployment/Cleanup.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "ALLAD_test1_MS-Learn-Lti-Tool-App", - [string]$AppName = "ALLAD_test1_MSLearnLTI", + [string]$ResourceGroupName = "ALLAD_test2_MS-Learn-Lti-Tool-App", + [string]$AppName = "ALLAD_test2_MSLearnLTI", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null ) From 05d29e9658355c365e11422cc184151aa397ebc9 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Fri, 29 Jul 2022 16:07:16 +0100 Subject: [PATCH 165/285] working deployment, figuring out authentication --- deployment/B2CDeployment.ps1 | 7 +++---- deployment/Deploy.ps1 | 4 ++-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 3550f899..a6920c3d 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -434,7 +434,9 @@ try{ } az ad app permission add --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors az ad app permission add --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $keysetRWPermission $policyRWPermission --only-show-errors - #Will grant admin permissions later to avoid race condition + #Granting admin consent for the needed apis + az ad app permission admin-consent --id $PermissionClientID --only-show-errors + #endregion #region "B2C STEP 7: restrict access via whitelisting tenants" @@ -579,9 +581,6 @@ try{ #region "Getting the token to be used in the HTML REQUESTS" # relevant docs: https://docs.microsoft.com/en-us/graph/auth-v2-service#4-get-an-access-token - #Granting admin consent for the needed apis - az ad app permission admin-consent --id $PermissionClientID --only-show-errors - $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $headers.Add("Content-Type", "application/x-www-form-urlencoded") diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index cf77ac9d..b9f32e33 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "ALLAD_test2_MS-Learn-Lti-Tool-App", - [string]$AppName = "ALLAD_test2_MSLearnLTI", + [string]$ResourceGroupName = "ALLAD_test2_MSLearnLti", + [string]$AppName = "ALLAD_test2_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null From d5c48f32ac9cc162298b73367b9ab34d05b05ca9 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Fri, 29 Jul 2022 16:20:23 +0100 Subject: [PATCH 166/285] Fixed bugs due to duplicate code and moved writing number of tries into the catch --- deployment/B2CDeployment.ps1 | 97 +++++++++++++++++++++++++----------- deployment/Cleanup.ps1 | 4 +- deployment/Deploy.ps1 | 4 +- 3 files changed, 72 insertions(+), 33 deletions(-) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index c0e44221..c83decd4 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -1,12 +1,12 @@ $ErrorActionPreference = "Stop" #region "values determining the names of the resources" -$MultiTenantAppName = "b2c_AD_app" -$MultiTenantClientSecretName = "b2c_AD_app_secret" -$B2cAppName = "b2c_AD_webapp" -$WebClientSecretName = "b2c_AD_webapp_secret" -$PermissionAppName = "b2c_AD_PMA" -$PermissionClientSecretName = "b2c_AD_PMA_secret" +$MultiTenantAppName = "DM_b2c_AD_app" +$MultiTenantClientSecretName = "DM_b2c_AD_app_secret" +$B2cAppName = "DM_b2c_AD_webapp" +$WebClientSecretName = "DM_b2c_AD_webapp_secret" +$PermissionAppName = "DM_b2c_AD_PMA" +$PermissionClientSecretName = "DM_b2c_AD_PMA_secret" #endregion #region "Helper Functions" @@ -50,15 +50,6 @@ try{ } else { New-Item $AppInfoCSVPath > $null } - #endregeion - - #region "values determining the names of the resources" - $MultiTenantAppName = "b2c_AD_app" - $MultiTenantClientSecretName = "b2c_AD_app_secret" - $B2cAppName = "b2c_AD_webapp" - $WebClientSecretName = "b2c_AD_webapp_secret" - $PermissionAppName = "b2c_AD_PMA" - $PermissionClientSecretName = "b2c_AD_PMA_secret" #endregion #region "B2C STEP 1: Create Active Directory application" @@ -102,11 +93,9 @@ try{ #defensive programming around race condition between app creation and secret added to the app - $counter = 0 while($counter -le 5){ try{ - Write-Host "Try $($counter+1) out of 6" $counter += 1 Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it $MultiTenantClientSecretInfo = az ad app credential reset --id $MultiTenantAppID --append --display-name $MultiTenantClientSecretName --years $MultiTenantClientSecretDuration --only-show-errors | ConvertFrom-Json @@ -115,6 +104,7 @@ try{ break } catch{ + Write-Host "Try $($counter+1) out of 6" Write-Log -Message "Failed to create client secret for $MultiTenantAppName $counter times" Write-Error $Error[0] Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" @@ -126,14 +116,42 @@ try{ Write-Host "Granting permissions to the AD application" $profilePermission = "14dad69e-099b-42c9-810b-d002981feec1=Scope" $emailPermission = "64a6cdd6-aab1-4aaf-94b8-3cc8405e90d0=Scope" + + + + + + + + + + + Write-Host "Creating service principal for $MultiTenantAppName" Write-Log -Message "Creating service principal for $MultiTenantAppName" - az ad sp create --id $MultiTenantAppID --only-show-errors 2>&1 > $null - Write-Log -Message "Granting permissions to the service principal for $MultiTenantAppName" + #defensive programming around race condition between app creation and secret added to the app $counter = 0 while($counter -le 5){ try{ + $counter += 1 + Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it + $MultiTenantAppServicePrincipal = az ad sp create --id $MultiTenantAppID --only-show-errors 2>&1 > $null + Write-Log -Message "MultiTenantAppServicePrincipal value:`n$MultiTenantAppServicePrincipal" + break + } + catch{ Write-Host "Try $($counter+1) out of 6" + Write-Error $Error[0] + Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" + } + } + + Write-Host "Granting permissions to the service principal for $MultiTenantAppName" + Write-Log -Message "Granting permissions to the service principal for $MultiTenantAppName" + #defensive programming around race condition between app creation and secret added to the app + $counter = 0 + while($counter -le 5){ + try{ $counter += 1 Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it $MultiTenantAppInfo = az ad app permission grant --id $MultiTenantAppID --api 00000003-0000-0000-c000-000000000000 --scope "email profile" --only-show-errors > $null @@ -141,6 +159,7 @@ try{ break } catch{ + Write-Host "Try $($counter+1) out of 6" Write-Log -Message "Failed to grant permissions to the service principal for $MultiTenantAppName $counter times" Write-Error $Error[0] Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" @@ -182,7 +201,6 @@ try{ $counter = 0 while($counter -le 5){ try{ - Write-Host "Try $($counter+1) out of 6" $counter += 1 Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it $WebClientInfo = (az ad app credential reset --id $WebClientID --append --display-name $WebClientSecretName --years $WebClientSecretDuration --only-show-errors) | ConvertFrom-Json @@ -190,6 +208,7 @@ try{ break } catch{ + Write-Host "Try $($counter+1) out of 6" Write-Log -Message "Failed to create client secret for $B2cAppName $counter times" Write-Error $Error[0] Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" @@ -203,14 +222,33 @@ try{ Write-Host "Granting permissions to the B2C Web application" $openidPermission = "37f7f235-527c-4136-accd-4a02d197296e=Scope" $offlineAccessPermission = "7427e0e9-2fba-42fe-b0c0-848c9e6a8182=Scope" + + Write-Host "Creating service principal for $B2cAppName" Write-Log -Message "Creating service principal for $B2cAppName" - az ad sp create --id $WebClientID --only-show-errors 2>&1 > $null - Write-Log -Message "Granting permissions to the service principal for $B2cAppName" + #defensive programming around race condition between app creation and secret added to the app $counter = 0 while($counter -le 5){ try{ + $counter += 1 + Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it + $B2cAppServicePrincipalInfo = az ad sp create --id $WebClientID --only-show-errors 2>&1 > $null + Write-Log -Message "B2cAppServicePrincipalInfo value:`n$B2cAppServicePrincipalInfo" + break + } + catch{ Write-Host "Try $($counter+1) out of 6" + Write-Error $Error[0] + Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" + } + } + + Write-Log -Message "Granting permissions to the service principal for $B2cAppName" + Write-Host "Granting permissions to the service principal for $B2cAppName" + #defensive programming around race condition between app creation and secret added to the app + $counter = 0 + while($counter -le 5){ + try{ $counter += 1 Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it $WebClientPermissionGrantingInfo = az ad app permission grant --id $WebClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null @@ -218,6 +256,7 @@ try{ break } catch{ + Write-Host "Try $($counter+1) out of 6" Write-Log -Message "Failed to grant permissions to the service principal for $B2cAppName $counter times" Write-Error $Error[0] Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" @@ -245,7 +284,6 @@ try{ $counter = 0 while($counter -le 5){ try{ - Write-Host "Try $($counter+1) out of 6" $counter += 1 Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it $IEFServicePrincipalInfo = az ad sp create --id $IEFClientID --only-show-errors 2>&1 > $null @@ -253,6 +291,7 @@ try{ break } catch{ + Write-Host "Try $($counter+1) out of 6" Write-Error $Error[0] Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" } @@ -263,7 +302,6 @@ try{ $counter = 0 while($counter -le 5){ try{ - Write-Host "Try $($counter+1) out of 6" $counter += 1 Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it $IEFPermissionGrantInfo = az ad app permission grant --id $IEFClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null @@ -271,6 +309,7 @@ try{ break } catch{ + Write-Host "Try $($counter+1) out of 6" Write-Log -Message "Failed to grant permissions to the service principal for $IEFAppName $counter times" Write-Error $Error[0] Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" @@ -326,7 +365,6 @@ try{ $counter = 0 while($counter -le 5){ try{ - Write-Host "Try $($counter+1) out of 6" $counter += 1 Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it $PIEFServicePrincipalInfo = az ad sp create --id $ProxyIEFClientID --only-show-errors 2>&1 > $null @@ -334,6 +372,7 @@ try{ break } catch{ + Write-Host "Try $($counter+1) out of 6" Write-Log -Message "Failed to create service principal for $ProxyIEFAppName $counter times" Write-Error $Error[0] Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" @@ -347,7 +386,6 @@ try{ $counter = 0 while($counter -le 5){ try{ - Write-Host "Try $($counter+1) out of 6" $counter += 1 Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it $PIEFPermissionGrantInfo = az ad app permission grant --id $ProxyIEFClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null @@ -355,6 +393,7 @@ try{ break } catch{ + Write-Host "Try $($counter+1) out of 6" Write-Log -Message "Failed to create service principal for $ProxyIEFAppName $counter times" Write-Error $Error[0] Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" @@ -384,7 +423,6 @@ try{ $PermissionClientSecret = "" while($counter -le 5){ try{ - Write-Host "Try $($counter+1) out of 6" $counter += 1 Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it $PermissionClientSecretInfo = (az ad app credential reset --id $PermissionClientID --append --display-name $PermissionClientSecretName --years $PermissionClientSecretDuration --only-show-errors) @@ -393,6 +431,7 @@ try{ break } catch{ + Write-Host "Try $($counter+1) out of 6" Write-Log -Message "Failed to create client secret for $PermissionAppName $counter times" Write-Error $Error[0] Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" @@ -413,7 +452,6 @@ try{ $PermissionClientSecret = "" while($counter -le 5){ try{ - Write-Host "Try $($counter+1) out of 6" $counter += 1 Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it $PermissionClientServicePrincipalInfo = az ad sp create --id $PermissionClientID --only-show-errors 2>&1 > $null @@ -421,6 +459,7 @@ try{ break } catch{ + Write-Host "Try $($counter+1) out of 6" Write-Log -Message "Failed to create service principal for $PermissionAppName $counter times" Write-Error $Error[0] Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" @@ -434,7 +473,6 @@ try{ $PermissionClientSecret = "" while($counter -le 5){ try{ - Write-Host "Try $($counter+1) out of 6" $counter += 1 Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it $PermissionClientPermissionGrantInfo = az ad app permission grant --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null @@ -442,6 +480,7 @@ try{ break } catch{ + Write-Host "Try $($counter+1) out of 6" Write-Log -Message "Failed to grant permissions to the service principal for $PermissionAppName $counter times" Write-Error $Error[0] Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" diff --git a/deployment/Cleanup.ps1 b/deployment/Cleanup.ps1 index 3ae6bbbb..13373a07 100644 --- a/deployment/Cleanup.ps1 +++ b/deployment/Cleanup.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "ALLAD_test2_MS-Learn-Lti-Tool-App", - [string]$AppName = "ALLAD_test2_MSLearnLTI", + [string]$ResourceGroupName = "ALLAD_test3_MSLearnLTI", + [string]$AppName = "ALLAD_test3_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null ) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index cf77ac9d..69afcec9 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "ALLAD_test2_MS-Learn-Lti-Tool-App", - [string]$AppName = "ALLAD_test2_MSLearnLTI", + [string]$ResourceGroupName = "ALLAD_test3_MSLearnLTI", + [string]$AppName = "ALLAD_test3_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null From ad0e1f3b474df93b3d5afeca2a39d77f0fbed1a3 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Fri, 29 Jul 2022 17:12:22 +0100 Subject: [PATCH 167/285] additional changes --- deployment/Cleanup.ps1 | 4 ++-- deployment/Deploy.ps1 | 23 +++++++++-------------- 2 files changed, 11 insertions(+), 16 deletions(-) diff --git a/deployment/Cleanup.ps1 b/deployment/Cleanup.ps1 index 21e5e5b9..3ae6bbbb 100644 --- a/deployment/Cleanup.ps1 +++ b/deployment/Cleanup.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "ALLAD_test1_MS-Learn-Lti-Tool-App", - [string]$AppName = "ALLAD_test1_MSLearnLTI", + [string]$ResourceGroupName = "ALLAD_test2_MS-Learn-Lti-Tool-App", + [string]$AppName = "ALLAD_test2_MSLearnLTI", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null ) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index b9f32e33..b4921825 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "ALLAD_test2_MSLearnLti", - [string]$AppName = "ALLAD_test2_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "ALLB2C_test2_MSLearnLti", + [string]$AppName = "ALLB2C_test2_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null @@ -108,6 +108,7 @@ process { $REACT_APP_EDNA_B2C_CLIENT_ID = $results[-4] #webclient ID $REACT_APP_EDNA_AUTH_CLIENT_ID = $results[-4] #webclient ID $b2c_secret = $results[-3] #webclient secret + $b2c_secret = '"'+$b2c_secret+'"' # turning the secret into a form we can store $REACT_APP_EDNA_B2C_TENANT = $results[-2] #b2c tenant name $B2C_ObjectID = $results[-1] # b2c webapp id that needs the SPA uri @@ -115,8 +116,7 @@ process { $policy_name = "b2c_1a_signin" #Updating function apps's settings - ((Get-Content -path ".\azuredeployB2CTemplate.json" -Raw) -replace '', ("'"+$uniqueIdentifier+"'")) | Set-Content -path (".\azuredeploy.json") - + #$B2C_APP_CLIENT_ID_IDENTIFIER = "0cd1d1d6-a7aa-41e2-b569-1ca211147973" # TODO remove hardcode #$AD_APP_CLIENT_ID_IDENTIFIER = "cb508fc8-6a5f-49b1-b688-dac065ba59e4" # TODO remove hardcode $OPENID_B2C_CONFIG_URL_IDENTIFIER = "https://${b2c_tenant_name}.b2clogin.com/${b2c_tenant_name}.onmicrosoft.com/${policy_name}/v2.0/.well-known/openid-configuration" @@ -125,10 +125,14 @@ process { Write-Title $OPENID_B2C_CONFIG_URL_IDENTIFIER Write-Title $OPENID_AD_CONFIG_URL_IDENTIFIER + ((Get-Content -path ".\azuredeploy.json" -Raw) -replace '""', $b2c_secret) | Set-Content -path (".\azuredeploy.json") + + (Get-Content -path ".\azuredeployB2CTemplate.json" -Raw) ` -replace '', ($REACT_APP_EDNA_B2C_CLIENT_ID) ` -replace '', ("'"+$uniqueIdentifier+"'") ` -replace '', ($OPENID_B2C_CONFIG_URL_IDENTIFIER) ` + -replace '', $b2c_secret) ` -replace '', ($OPENID_AD_CONFIG_URL_IDENTIFIER) | Set-Content -path (".\azuredeploy.json") } #endregion @@ -432,16 +436,7 @@ process { } Update-DevelopmentConfig @DevelopmentUpdateConfigParams - if($b2cOrAD -eq "b2c"){ - Write-Title "Step #11.C - Updating the B2C secret in the azuredeploy.json" - $b2c_secret = '"'+$b2c_secret+'"' - ((Get-Content -path ".\azuredeploy.json" -Raw) -replace '""', $b2c_secret) | Set-Content -path (".\azuredeploy.json") - #TODO - find way to replace the value for line 173 of azuredeployTemplate.json via an input or API call (wellKnownOpenIdConfiguration) so they can input it correctly - #TODO - make separate azureTemplate for b2c vs ad; with ad not having the b2c specific lines - - } - - Write-Title 'STEP #12 - Installing the client' + Write-Title 'STEP #12 - Installing the client' $ClientInstallParams = @{ SourceRoot="../client"; StaticWebsiteStorageAccount=$deploymentOutput.properties.outputs.StaticWebSiteName.value From f169774976c6a07b8fb6d19b2b26a8b11b437f3e Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Fri, 29 Jul 2022 17:12:52 +0100 Subject: [PATCH 168/285] Fixed bug where PMA info wasn't being converted from json --- deployment/B2CDeployment.ps1 | 45 ++++++++++++++++++++---------------- deployment/Deploy.ps1 | 5 ---- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 4c28e9e1..3eb2762d 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -81,7 +81,6 @@ try{ }" Out-File -FilePath "manifest.json" -InputObject $ADAppManifest $MultiTenantAppID = (az ad app create --display-name $MultiTenantAppName --sign-in-audience AzureADandPersonalMicrosoftAccount --web-redirect-uris https://$B2cTenantName.b2clogin.com/$B2cTenantName.onmicrosoft.com/oauth2/authresp --optional-claims "@manifest.json" --query appId --output tsv --only-show-errors) - Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it "$MultiTenantAppID,$ADTenantName" | Out-File -FilePath $AppInfoCSVPath -Append Write-Log -Message "Created MultiTenant app with id $MultiTenantAppID in $ADTenantName" @@ -97,7 +96,6 @@ try{ while($counter -le 5){ try{ $counter += 1 - Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it $MultiTenantClientSecretInfo = az ad app credential reset --id $MultiTenantAppID --append --display-name $MultiTenantClientSecretName --years $MultiTenantClientSecretDuration --only-show-errors | ConvertFrom-Json $MultiTenantClientSecret = $MultiTenantClientSecretInfo.password Write-Log -Message "MultiTenantClientSecretInfo value:`n$MultiTenantClientSecretInfo" @@ -108,6 +106,7 @@ try{ Write-Log -Message "Failed to create client secret for $MultiTenantAppName $counter times" Write-Error $Error[0] Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" + Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it } } Write-Log -Message "Created secret $MultiTenantClientSecretName ($MultiTenantClientSecret) for $MultiTenantAppName ($MultiTenantAppID)" @@ -134,7 +133,6 @@ try{ while($counter -le 5){ try{ $counter += 1 - Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it $MultiTenantAppServicePrincipal = az ad sp create --id $MultiTenantAppID --only-show-errors 2>&1 > $null Write-Log -Message "MultiTenantAppServicePrincipal value:`n$MultiTenantAppServicePrincipal" break @@ -143,6 +141,7 @@ try{ Write-Host "Try $($counter+1) out of 6" Write-Error $Error[0] Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" + Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it } } @@ -153,7 +152,6 @@ try{ while($counter -le 5){ try{ $counter += 1 - Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it $MultiTenantAppInfo = az ad app permission grant --id $MultiTenantAppID --api 00000003-0000-0000-c000-000000000000 --scope "email profile" --only-show-errors > $null Write-Log -Message "MultiTenantAppInfo value:`n$MultiTenantAppInfo" break @@ -163,6 +161,7 @@ try{ Write-Log -Message "Failed to grant permissions to the service principal for $MultiTenantAppName $counter times" Write-Error $Error[0] Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" + Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it } } az ad app permission add --id $MultiTenantAppID --api 00000003-0000-0000-c000-000000000000 --api-permissions $emailPermission $profilePermission --only-show-errors @@ -182,7 +181,6 @@ try{ Write-Title "B2C STEP 3: Creating the B2C Web application" # $B2cAppName = Read-Host "Please give a name for the web application to be created" $appinfo = (az ad app create --display-name $B2cAppName --sign-in-audience AzureADandPersonalMicrosoftAccount --web-redirect-uris https://jwt.ms --enable-access-token-issuance true --enable-id-token-issuance true --only-show-errors) | ConvertFrom-Json - Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it $WebClientID = $appinfo.appId $ObjectId = $appinfo.id Write-Log -Message "Created web app with id $WebClientID in $B2cTenantName" @@ -202,8 +200,8 @@ try{ while($counter -le 5){ try{ $counter += 1 - Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it $WebClientInfo = (az ad app credential reset --id $WebClientID --append --display-name $WebClientSecretName --years $WebClientSecretDuration --only-show-errors) | ConvertFrom-Json + $WebClientSecret = $WebClientInfo.password Write-Log -Message "WebClientInfo value:`n$WebClientInfo" break } @@ -212,9 +210,9 @@ try{ Write-Log -Message "Failed to create client secret for $B2cAppName $counter times" Write-Error $Error[0] Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" + Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it } } - $WebClientSecret = $WebClientInfo.password Write-Log -Message "Created secret $WebClientSecretName ($WebClientSecret) for $B2cAppName ($WebClientID)" @@ -231,7 +229,6 @@ try{ while($counter -le 5){ try{ $counter += 1 - Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it $B2cAppServicePrincipalInfo = az ad sp create --id $WebClientID --only-show-errors 2>&1 > $null Write-Log -Message "B2cAppServicePrincipalInfo value:`n$B2cAppServicePrincipalInfo" break @@ -240,6 +237,7 @@ try{ Write-Host "Try $($counter+1) out of 6" Write-Error $Error[0] Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" + Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it } } @@ -250,7 +248,6 @@ try{ while($counter -le 5){ try{ $counter += 1 - Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it $WebClientPermissionGrantingInfo = az ad app permission grant --id $WebClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null Write-Log -Message "WebClientPermissionGrantingInfo value:`n$WebClientPermissionGrantingInfo" break @@ -260,6 +257,7 @@ try{ Write-Log -Message "Failed to grant permissions to the service principal for $B2cAppName $counter times" Write-Error $Error[0] Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" + Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it } } az ad app permission add --id $WebClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors @@ -272,7 +270,6 @@ try{ $IEFAppInfo = (az ad app create --display-name $IEFAppName --sign-in-audience AzureADMyOrg --web-redirect-uris https://$B2cTenantName.b2clogin.com/$B2cTenantName.onmicrosoft.com --only-show-errors) | ConvertFrom-Json $IEFClientID = $IEFAppInfo.appId Write-Log -Message "Created IEF app with id $IEFClientID in $B2cTenantName" - Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it "$IEFClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append @@ -285,7 +282,6 @@ try{ while($counter -le 5){ try{ $counter += 1 - Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it $IEFServicePrincipalInfo = az ad sp create --id $IEFClientID --only-show-errors 2>&1 > $null Write-Log -Message "IEFServicePrincipalInfo value:`n$IEFServicePrincipalInfo" break @@ -294,6 +290,7 @@ try{ Write-Host "Try $($counter+1) out of 6" Write-Error $Error[0] Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" + Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it } } Write-Log -Message "Granting permissions to the service principal for $IEFAppName" @@ -303,7 +300,6 @@ try{ while($counter -le 5){ try{ $counter += 1 - Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it $IEFPermissionGrantInfo = az ad app permission grant --id $IEFClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null Write-Log -Message "IEFPermissionGrantInfo value:`n$IEFPermissionGrantInfo" break @@ -313,6 +309,7 @@ try{ Write-Log -Message "Failed to grant permissions to the service principal for $IEFAppName $counter times" Write-Error $Error[0] Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" + Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it } } az ad app permission add --id $IEFClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors @@ -355,7 +352,6 @@ try{ $ProxyIEFAppInfo = (az ad app create --display-name $ProxyIEFAppName --sign-in-audience AzureADMyOrg --public-client-redirect-uris myapp://auth --is-fallback-public-client true --only-show-errors) | ConvertFrom-Json $ProxyIEFClientID = $ProxyIEFAppInfo.appId Write-Log -Message "Created Proxy IEF app with id $ProxyIEFClientID in $B2cTenantName" - Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it "$ProxyIEFClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append Write-Host "Granting permissions to the Proxy IEF application" @@ -366,7 +362,6 @@ try{ while($counter -le 5){ try{ $counter += 1 - Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it $PIEFServicePrincipalInfo = az ad sp create --id $ProxyIEFClientID --only-show-errors 2>&1 > $null Write-Log -Message "PIEFServicePrincipalInfo value:`n$PIEFServicePrincipalInfo" break @@ -376,6 +371,7 @@ try{ Write-Log -Message "Failed to create service principal for $ProxyIEFAppName $counter times" Write-Error $Error[0] Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" + Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it } } @@ -387,7 +383,6 @@ try{ while($counter -le 5){ try{ $counter += 1 - Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it $PIEFPermissionGrantInfo = az ad app permission grant --id $ProxyIEFClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null Write-Log -Message "PIEFPermissionGrantInfo value:`n$PIEFPermissionGrantInfo" break @@ -397,6 +392,7 @@ try{ Write-Log -Message "Failed to create service principal for $ProxyIEFAppName $counter times" Write-Error $Error[0] Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" + Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it } } az ad app permission add --id $ProxyIEFClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors @@ -409,7 +405,6 @@ try{ # $PermissionAppName = Read-Host "Please give a name for the permission management application to be created" $PermissionClientID = (az ad app create --display-name $PermissionAppName --sign-in-audience AzureADMyOrg --query appId --output tsv --only-show-errors) Write-Log -Message "Created Permission Management app with id $PermissionClientID in $B2cTenantName" - Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it "$PermissionClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append # create client secret @@ -424,8 +419,7 @@ try{ while($counter -le 5){ try{ $counter += 1 - Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it - $PermissionClientSecretInfo = (az ad app credential reset --id $PermissionClientID --append --display-name $PermissionClientSecretName --years $PermissionClientSecretDuration --only-show-errors) + $PermissionClientSecretInfo = (az ad app credential reset --id $PermissionClientID --append --display-name $PermissionClientSecretName --years $PermissionClientSecretDuration --only-show-errors) | ConvertFrom-Json $PermissionClientSecret = $PermissionClientSecretInfo.password Write-Log -Message "PermissionClientSecretInfo value:`n$PermissionClientSecretInfo" break @@ -435,6 +429,7 @@ try{ Write-Log -Message "Failed to create client secret for $PermissionAppName $counter times" Write-Error $Error[0] Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" + Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it } } Write-Log -Message "Created secret $PermissionClientSecretName ($PermissionClientSecret) for $PermissionAppName ($PermissionClientID)" @@ -452,7 +447,6 @@ try{ while($counter -le 5){ try{ $counter += 1 - Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it $PermissionClientServicePrincipalInfo = az ad sp create --id $PermissionClientID --only-show-errors 2>&1 > $null Write-Log -Message "PermissionClientServicePrincipalInfo value:`n$PermissionClientServicePrincipalInfo" break @@ -462,6 +456,7 @@ try{ Write-Log -Message "Failed to create service principal for $PermissionAppName $counter times" Write-Error $Error[0] Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" + Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it } } @@ -472,7 +467,6 @@ try{ while($counter -le 5){ try{ $counter += 1 - Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it $PermissionClientPermissionGrantInfo = az ad app permission grant --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null Write-Log -Message "PermissionClientPermissionGrantInfo value:`n$PermissionClientPermissionGrantInfo" break @@ -482,6 +476,7 @@ try{ Write-Log -Message "Failed to grant permissions to the service principal for $PermissionAppName $counter times" Write-Error $Error[0] Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" + Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it } } az ad app permission add --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors @@ -636,8 +631,10 @@ try{ $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $headers.Add("Content-Type", "application/x-www-form-urlencoded") + Write-Log -Message "body = client_id=$PermissionClientID&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&client_secret=$PermissionClientSecret&grant_type=client_credentials" $body = "client_id=$PermissionClientID&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&client_secret=$PermissionClientSecret&grant_type=client_credentials" + Write-Log -Message "http request url = https://login.microsoftonline.com/$B2cTenantName.onmicrosoft.com/oauth2/v2.0/token" $response = Invoke-RestMethod "https://login.microsoftonline.com/$B2cTenantName.onmicrosoft.com/oauth2/v2.0/token" -Method 'POST' -Headers $headers -Body $body $access_token = $response.access_token $access_token = "Bearer " + $access_token @@ -653,6 +650,14 @@ try{ break } catch{ + + Write-Log -Message "appInfo: $MultiTenantAppInfo" + Write-Log -Message "Error message: $($Error[0].Exception.Message)" + + Write-Host "appInfo: $MultiTenantAppInfo" + Write-Host "Error message: $($Error[0].Exception.Message)" + + Write-Host "" Write-Error $Error[0] Write-Host "" diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index d2006492..69afcec9 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -5,13 +5,8 @@ [CmdletBinding()] param ( -<<<<<<< HEAD [string]$ResourceGroupName = "ALLAD_test3_MSLearnLTI", [string]$AppName = "ALLAD_test3_MS-Learn-Lti-Tool-App", -======= - [string]$ResourceGroupName = "ALLAD_test2_MSLearnLti", - [string]$AppName = "ALLAD_test2_MS-Learn-Lti-Tool-App", ->>>>>>> 05d29e9658355c365e11422cc184151aa397ebc9 [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null From 942c779765df8a972b150842ba224f0e5f668518 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Fri, 29 Jul 2022 17:16:51 +0100 Subject: [PATCH 169/285] patched merge errors --- deployment/Deploy.ps1 | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index b4921825..5d00bc38 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -132,7 +132,7 @@ process { -replace '', ($REACT_APP_EDNA_B2C_CLIENT_ID) ` -replace '', ("'"+$uniqueIdentifier+"'") ` -replace '', ($OPENID_B2C_CONFIG_URL_IDENTIFIER) ` - -replace '', $b2c_secret) ` + -replace '', ($b2c_secret) ` -replace '', ($OPENID_AD_CONFIG_URL_IDENTIFIER) | Set-Content -path (".\azuredeploy.json") } #endregion @@ -403,11 +403,6 @@ process { #region Build and Publish Client Artifacts - # if this is in AD mode not b2c, then AUTH_CLIENT_ID is the same as AAD_ClientID - if($b2cOrAD -eq "ad"){ - $REACT_APP_EDNA_AUTH_CLIENT_ID = $appinfo.appId - } - . .\Install-Client.ps1 Write-Title "STEP #11.A - Updating client's .env.production file" From 5325358c42a81a3a2f83ee213a358c115edd7103 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Fri, 29 Jul 2022 18:18:16 +0100 Subject: [PATCH 170/285] Improved defensive programming --- deployment/B2CDeployment.ps1 | 161 ++++++++++++++++++++++++++--------- 1 file changed, 121 insertions(+), 40 deletions(-) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 3eb2762d..59660578 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -93,15 +93,22 @@ try{ #defensive programming around race condition between app creation and secret added to the app $counter = 0 - while($counter -le 5){ + while($counter -lt 5){ try{ $counter += 1 $MultiTenantClientSecretInfo = az ad app credential reset --id $MultiTenantAppID --append --display-name $MultiTenantClientSecretName --years $MultiTenantClientSecretDuration --only-show-errors | ConvertFrom-Json $MultiTenantClientSecret = $MultiTenantClientSecretInfo.password Write-Log -Message "MultiTenantClientSecretInfo value:`n$MultiTenantClientSecretInfo" + + # if it failed to create the service + if(!$MultiTenantClientSecretInfo){ + throw "Azure cli failed due to race condition" + } + break } catch{ + if($counter -eq 5){throw $Error[0]} #if we fail too many times throw the exception to terminate the code Write-Host "Try $($counter+1) out of 6" Write-Log -Message "Failed to create client secret for $MultiTenantAppName $counter times" Write-Error $Error[0] @@ -130,14 +137,21 @@ try{ #defensive programming around race condition between app creation and secret added to the app $counter = 0 - while($counter -le 5){ + while($counter -lt 5){ try{ $counter += 1 - $MultiTenantAppServicePrincipal = az ad sp create --id $MultiTenantAppID --only-show-errors 2>&1 > $null + $MultiTenantAppServicePrincipal = az ad sp create --id $MultiTenantAppID --only-show-errors Write-Log -Message "MultiTenantAppServicePrincipal value:`n$MultiTenantAppServicePrincipal" + + # if it failed to create the service + if(!$MultiTenantAppServicePrincipal){ + throw "Azure cli failed due to race condition" + } + break } catch{ + if($counter -eq 5){throw $Error[0]} #if we fail too many times throw the exception to terminate the code Write-Host "Try $($counter+1) out of 6" Write-Error $Error[0] Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" @@ -149,14 +163,21 @@ try{ Write-Log -Message "Granting permissions to the service principal for $MultiTenantAppName" #defensive programming around race condition between app creation and secret added to the app $counter = 0 - while($counter -le 5){ + while($counter -lt 5){ try{ $counter += 1 - $MultiTenantAppInfo = az ad app permission grant --id $MultiTenantAppID --api 00000003-0000-0000-c000-000000000000 --scope "email profile" --only-show-errors > $null - Write-Log -Message "MultiTenantAppInfo value:`n$MultiTenantAppInfo" + $MultiTenantAppPermissionGrantInfo = az ad app permission grant --id $MultiTenantAppID --api 00000003-0000-0000-c000-000000000000 --scope "email profile" --only-show-errors + Write-Log -Message "MultiTenantAppPermissionGrantInfo value:`n$MultiTenantAppPermissionGrantInfo" + + # if it failed to create the service + if(!$MultiTenantAppPermissionGrantInfo){ + throw "Azure cli failed due to race condition" + } + break } catch{ + if($counter -eq 5){throw $Error[0]} #if we fail too many times throw the exception to terminate the code Write-Host "Try $($counter+1) out of 6" Write-Log -Message "Failed to grant permissions to the service principal for $MultiTenantAppName $counter times" Write-Error $Error[0] @@ -197,15 +218,22 @@ try{ #defensive programming around race condition between app creation and secret added to the app $counter = 0 - while($counter -le 5){ + while($counter -lt 5){ try{ $counter += 1 $WebClientInfo = (az ad app credential reset --id $WebClientID --append --display-name $WebClientSecretName --years $WebClientSecretDuration --only-show-errors) | ConvertFrom-Json $WebClientSecret = $WebClientInfo.password Write-Log -Message "WebClientInfo value:`n$WebClientInfo" + + # if it failed to create the service + if(!$WebClientInfo){ + throw "Azure cli failed due to race condition" + } + break } catch{ + if($counter -eq 5){throw $Error[0]} #if we fail too many times throw the exception to terminate the code Write-Host "Try $($counter+1) out of 6" Write-Log -Message "Failed to create client secret for $B2cAppName $counter times" Write-Error $Error[0] @@ -226,14 +254,21 @@ try{ #defensive programming around race condition between app creation and secret added to the app $counter = 0 - while($counter -le 5){ + while($counter -lt 5){ try{ $counter += 1 - $B2cAppServicePrincipalInfo = az ad sp create --id $WebClientID --only-show-errors 2>&1 > $null + $B2cAppServicePrincipalInfo = az ad sp create --id $WebClientID --only-show-errors Write-Log -Message "B2cAppServicePrincipalInfo value:`n$B2cAppServicePrincipalInfo" + + # if it failed to create the service + if(!$B2cAppServicePrincipalInfo){ + throw "Azure cli failed due to race condition" + } + break } catch{ + if($counter -eq 5){throw $Error[0]} #if we fail too many times throw the exception to terminate the code Write-Host "Try $($counter+1) out of 6" Write-Error $Error[0] Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" @@ -245,14 +280,21 @@ try{ Write-Host "Granting permissions to the service principal for $B2cAppName" #defensive programming around race condition between app creation and secret added to the app $counter = 0 - while($counter -le 5){ + while($counter -lt 5){ try{ $counter += 1 - $WebClientPermissionGrantingInfo = az ad app permission grant --id $WebClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null + $WebClientPermissionGrantingInfo = az ad app permission grant --id $WebClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors Write-Log -Message "WebClientPermissionGrantingInfo value:`n$WebClientPermissionGrantingInfo" + + # if it failed to create the service + if(!$WebClientPermissionGrantingInfo){ + throw "Azure cli failed due to race condition" + } + break } catch{ + if($counter -eq 5){throw $Error[0]} #if we fail too many times throw the exception to terminate the code Write-Host "Try $($counter+1) out of 6" Write-Log -Message "Failed to grant permissions to the service principal for $B2cAppName $counter times" Write-Error $Error[0] @@ -279,14 +321,19 @@ try{ #defensive programming around race condition between app creation and secret added to the app $counter = 0 - while($counter -le 5){ + while($counter -lt 5){ try{ $counter += 1 - $IEFServicePrincipalInfo = az ad sp create --id $IEFClientID --only-show-errors 2>&1 > $null + $IEFServicePrincipalInfo = az ad sp create --id $IEFClientID --only-show-errors Write-Log -Message "IEFServicePrincipalInfo value:`n$IEFServicePrincipalInfo" + # if it failed to create the service + if(!$IEFServicePrincipalInfo){ + throw "Azure cli failed due to race condition" + } break } catch{ + if($counter -eq 5){throw $Error[0]} #if we fail too many times throw the exception to terminate the code Write-Host "Try $($counter+1) out of 6" Write-Error $Error[0] Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" @@ -297,14 +344,20 @@ try{ Write-Host "Granting permissions to the service principal for $IEFAppName" #defensive programming around race condition between app creation and secret added to the app $counter = 0 - while($counter -le 5){ + while($counter -lt 5){ try{ $counter += 1 - $IEFPermissionGrantInfo = az ad app permission grant --id $IEFClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null + $IEFPermissionGrantInfo = az ad app permission grant --id $IEFClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors Write-Log -Message "IEFPermissionGrantInfo value:`n$IEFPermissionGrantInfo" + + # if it failed to create the service + if(!$IEFPermissionGrantInfo){ + throw "Azure cli failed due to race condition" + } break } catch{ + if($counter -eq 5){throw $Error[0]} #if we fail too many times throw the exception to terminate the code Write-Host "Try $($counter+1) out of 6" Write-Log -Message "Failed to grant permissions to the service principal for $IEFAppName $counter times" Write-Error $Error[0] @@ -359,14 +412,20 @@ try{ #defensive programming around race condition between app creation and secret added to the app $counter = 0 - while($counter -le 5){ + while($counter -lt 5){ try{ $counter += 1 - $PIEFServicePrincipalInfo = az ad sp create --id $ProxyIEFClientID --only-show-errors 2>&1 > $null + $PIEFServicePrincipalInfo = az ad sp create --id $ProxyIEFClientID --only-show-errors 2>&1 Write-Log -Message "PIEFServicePrincipalInfo value:`n$PIEFServicePrincipalInfo" + + # if it failed to create the service + if(!$IEFPermissiPIEFServicePrincipalInfoonGrantInfo){ + throw "Azure cli failed due to race condition" + } break } catch{ + if($counter -eq 5){throw $Error[0]} #if we fail too many times throw the exception to terminate the code Write-Host "Try $($counter+1) out of 6" Write-Log -Message "Failed to create service principal for $ProxyIEFAppName $counter times" Write-Error $Error[0] @@ -380,14 +439,20 @@ try{ #defensive programming around race condition between app creation and secret added to the app $counter = 0 - while($counter -le 5){ + while($counter -lt 5){ try{ $counter += 1 - $PIEFPermissionGrantInfo = az ad app permission grant --id $ProxyIEFClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null + $PIEFPermissionGrantInfo = az ad app permission grant --id $ProxyIEFClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors Write-Log -Message "PIEFPermissionGrantInfo value:`n$PIEFPermissionGrantInfo" + + # if it failed to create the service + if(!$PIEFPermissionGrantInfo){ + throw "Azure cli failed due to race condition" + } break } catch{ + if($counter -eq 5){throw $Error[0]} #if we fail too many times throw the exception to terminate the code Write-Host "Try $($counter+1) out of 6" Write-Log -Message "Failed to create service principal for $ProxyIEFAppName $counter times" Write-Error $Error[0] @@ -416,15 +481,21 @@ try{ #defensive programming around race condition between app creation and secret added to the app $counter = 0 $PermissionClientSecret = "" - while($counter -le 5){ + while($counter -lt 5){ try{ $counter += 1 $PermissionClientSecretInfo = (az ad app credential reset --id $PermissionClientID --append --display-name $PermissionClientSecretName --years $PermissionClientSecretDuration --only-show-errors) | ConvertFrom-Json $PermissionClientSecret = $PermissionClientSecretInfo.password Write-Log -Message "PermissionClientSecretInfo value:`n$PermissionClientSecretInfo" + + # if it failed to create the service + if(!$PermissionClientSecretInfo){ + throw "Azure cli failed due to race condition" + } break } catch{ + if($counter -eq 5){throw $Error[0]} #if we fail too many times throw the exception to terminate the code Write-Host "Try $($counter+1) out of 6" Write-Log -Message "Failed to create client secret for $PermissionAppName $counter times" Write-Error $Error[0] @@ -444,14 +515,20 @@ try{ Write-Log -Message "Creating service principal for $PermissionAppName" #defensive programming around race condition between app creation and secret added to the app $counter = 0 - while($counter -le 5){ + while($counter -lt 5){ try{ $counter += 1 - $PermissionClientServicePrincipalInfo = az ad sp create --id $PermissionClientID --only-show-errors 2>&1 > $null + $PermissionClientServicePrincipalInfo = az ad sp create --id $PermissionClientID --only-show-errors 2>&1 Write-Log -Message "PermissionClientServicePrincipalInfo value:`n$PermissionClientServicePrincipalInfo" + + # if it failed to create the service + if(!$PermissionClientServicePrincipalInfo){ + throw "Azure cli failed due to race condition" + } break } catch{ + if($counter -eq 5){throw $Error[0]} #if we fail too many times throw the exception to terminate the code Write-Host "Try $($counter+1) out of 6" Write-Log -Message "Failed to create service principal for $PermissionAppName $counter times" Write-Error $Error[0] @@ -464,14 +541,20 @@ try{ Write-Log -Message "Granting permissions to the service principal for $PermissionAppName" #defensive programming around race condition between app creation and secret added to the app $counter = 0 - while($counter -le 5){ + while($counter -lt 5){ try{ $counter += 1 - $PermissionClientPermissionGrantInfo = az ad app permission grant --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors > $null + $PermissionClientPermissionGrantInfo = az ad app permission grant --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors Write-Log -Message "PermissionClientPermissionGrantInfo value:`n$PermissionClientPermissionGrantInfo" + + # if it failed to create the service + if(!$PermissionClientPermissionGrantInfo){ + throw "Azure cli failed due to race condition" + } break } catch{ + if($counter -eq 5){throw $Error[0]} #if we fail too many times throw the exception to terminate the code Write-Host "Try $($counter+1) out of 6" Write-Log -Message "Failed to grant permissions to the service principal for $PermissionAppName $counter times" Write-Error $Error[0] @@ -650,22 +733,20 @@ try{ break } catch{ - - Write-Log -Message "appInfo: $MultiTenantAppInfo" - Write-Log -Message "Error message: $($Error[0].Exception.Message)" - - Write-Host "appInfo: $MultiTenantAppInfo" - Write-Host "Error message: $($Error[0].Exception.Message)" - - - Write-Host "" - Write-Error $Error[0] - Write-Host "" - Write-Color "Red" "Error may be due to admin-consent having not yet been granted; please switch your directory to the b2c tenant ($B2cTenantName) in the Azure portal then copy and paste the yellow link into your browser to manually grant admin-consent then press enter." - $PMA_Page = "https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/~/CallAnAPI/appId/$PermissionClientID/isMSAApp~/false" - Write-Color "Yellow" "$PMA_Page" - Write-Host "Please check the markdown https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/deployment/B2C_Docs/B2C_Deployment.md if you require assistance on how to do this." - Read-Host "Press enter after manually granting the admin consent permission and waiting 10 seconds" + if(($Error[0].Exception.Message).contains("403")){ + Write-Color "Red" "403 forbidden error likely due to admin-consent having not yet been granted; please switch your directory to the b2c tenant ($B2cTenantName) in the Azure portal then copy and paste the yellow link into your browser to manually grant admin-consent then press enter." + Write-Color "Red" "Please check the markdown https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/deployment/B2C_Docs/B2C_Deployment.md if you require assistance on how to do this." + $PMA_Page = "https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/~/CallAnAPI/appId/$PermissionClientID/isMSAApp~/false" + Write-Color "Yellow" "$PMA_Page" + Read-Host "Press enter after manually granting the admin consent permission and waiting 10 seconds" + } + else{ + Write-Host "Unexpected exception occured" -ForegroundColor "Red" + Write-Host "" + Write-Error $Error[0] + Write-Host "" + throw $Error[0] + } } } From 76bf7ab3b19c766664101d78be34f385f7a6c0ba Mon Sep 17 00:00:00 2001 From: Tianchen Zhang Date: Sat, 30 Jul 2022 02:05:21 +0100 Subject: [PATCH 171/285] temp: remove all defensive programming --- deployment/B2CDeployment.ps1 | 358 +++++------------------------------ 1 file changed, 44 insertions(+), 314 deletions(-) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 59660578..9b627ebd 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -1,12 +1,12 @@ $ErrorActionPreference = "Stop" #region "values determining the names of the resources" -$MultiTenantAppName = "DM_b2c_AD_app" -$MultiTenantClientSecretName = "DM_b2c_AD_app_secret" -$B2cAppName = "DM_b2c_AD_webapp" -$WebClientSecretName = "DM_b2c_AD_webapp_secret" -$PermissionAppName = "DM_b2c_AD_PMA" -$PermissionClientSecretName = "DM_b2c_AD_PMA_secret" +$MultiTenantAppName = "TZ_b2c_AD_app" +$MultiTenantClientSecretName = "TZ_b2c_AD_app_secret" +$B2cAppName = "TZ_b2c_AD_webapp" +$WebClientSecretName = "TZ_b2c_AD_webapp_secret" +$PermissionAppName = "TZ_b2c_AD_PMA" +$PermissionClientSecretName = "TZ_b2c_AD_PMA_secret" #endregion #region "Helper Functions" @@ -91,100 +91,31 @@ try{ $MultiTenantClientSecretDuration = 1 - #defensive programming around race condition between app creation and secret added to the app - $counter = 0 - while($counter -lt 5){ - try{ - $counter += 1 - $MultiTenantClientSecretInfo = az ad app credential reset --id $MultiTenantAppID --append --display-name $MultiTenantClientSecretName --years $MultiTenantClientSecretDuration --only-show-errors | ConvertFrom-Json - $MultiTenantClientSecret = $MultiTenantClientSecretInfo.password - Write-Log -Message "MultiTenantClientSecretInfo value:`n$MultiTenantClientSecretInfo" - - # if it failed to create the service - if(!$MultiTenantClientSecretInfo){ - throw "Azure cli failed due to race condition" - } + $MultiTenantClientSecretInfo = az ad app credential reset --id $MultiTenantAppID --append --display-name $MultiTenantClientSecretName --years $MultiTenantClientSecretDuration --only-show-errors | ConvertFrom-Json + $MultiTenantClientSecret = $MultiTenantClientSecretInfo.password + Write-Log -Message "MultiTenantClientSecretInfo value:`n$MultiTenantClientSecretInfo" - break - } - catch{ - if($counter -eq 5){throw $Error[0]} #if we fail too many times throw the exception to terminate the code - Write-Host "Try $($counter+1) out of 6" - Write-Log -Message "Failed to create client secret for $MultiTenantAppName $counter times" - Write-Error $Error[0] - Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" - Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it - } - } + # if it failed to create the service Write-Log -Message "Created secret $MultiTenantClientSecretName ($MultiTenantClientSecret) for $MultiTenantAppName ($MultiTenantAppID)" # grant permissions for the AD app Write-Host "Granting permissions to the AD application" $profilePermission = "14dad69e-099b-42c9-810b-d002981feec1=Scope" $emailPermission = "64a6cdd6-aab1-4aaf-94b8-3cc8405e90d0=Scope" - - - - - - - - - + Write-Host "Creating service principal for $MultiTenantAppName" Write-Log -Message "Creating service principal for $MultiTenantAppName" - #defensive programming around race condition between app creation and secret added to the app - $counter = 0 - while($counter -lt 5){ - try{ - $counter += 1 - $MultiTenantAppServicePrincipal = az ad sp create --id $MultiTenantAppID --only-show-errors - Write-Log -Message "MultiTenantAppServicePrincipal value:`n$MultiTenantAppServicePrincipal" - - # if it failed to create the service - if(!$MultiTenantAppServicePrincipal){ - throw "Azure cli failed due to race condition" - } + $MultiTenantAppServicePrincipal = az ad sp create --id $MultiTenantAppID --only-show-errors + Write-Log -Message "MultiTenantAppServicePrincipal value:`n$MultiTenantAppServicePrincipal" - break - } - catch{ - if($counter -eq 5){throw $Error[0]} #if we fail too many times throw the exception to terminate the code - Write-Host "Try $($counter+1) out of 6" - Write-Error $Error[0] - Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" - Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it - } - } Write-Host "Granting permissions to the service principal for $MultiTenantAppName" Write-Log -Message "Granting permissions to the service principal for $MultiTenantAppName" - #defensive programming around race condition between app creation and secret added to the app - $counter = 0 - while($counter -lt 5){ - try{ - $counter += 1 - $MultiTenantAppPermissionGrantInfo = az ad app permission grant --id $MultiTenantAppID --api 00000003-0000-0000-c000-000000000000 --scope "email profile" --only-show-errors - Write-Log -Message "MultiTenantAppPermissionGrantInfo value:`n$MultiTenantAppPermissionGrantInfo" + $MultiTenantAppPermissionGrantInfo = az ad app permission grant --id $MultiTenantAppID --api 00000003-0000-0000-c000-000000000000 --scope "email profile" --only-show-errors + Write-Log -Message "MultiTenantAppPermissionGrantInfo value:`n$MultiTenantAppPermissionGrantInfo" - # if it failed to create the service - if(!$MultiTenantAppPermissionGrantInfo){ - throw "Azure cli failed due to race condition" - } - - break - } - catch{ - if($counter -eq 5){throw $Error[0]} #if we fail too many times throw the exception to terminate the code - Write-Host "Try $($counter+1) out of 6" - Write-Log -Message "Failed to grant permissions to the service principal for $MultiTenantAppName $counter times" - Write-Error $Error[0] - Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" - Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it - } - } az ad app permission add --id $MultiTenantAppID --api 00000003-0000-0000-c000-000000000000 --api-permissions $emailPermission $profilePermission --only-show-errors Remove-Item manifest.json @@ -216,31 +147,10 @@ try{ # $WebClientSecretName = Read-Host "Please give a name for the client secret to be created" $WebClientSecretDuration = 1 - #defensive programming around race condition between app creation and secret added to the app - $counter = 0 - while($counter -lt 5){ - try{ - $counter += 1 - $WebClientInfo = (az ad app credential reset --id $WebClientID --append --display-name $WebClientSecretName --years $WebClientSecretDuration --only-show-errors) | ConvertFrom-Json - $WebClientSecret = $WebClientInfo.password - Write-Log -Message "WebClientInfo value:`n$WebClientInfo" - - # if it failed to create the service - if(!$WebClientInfo){ - throw "Azure cli failed due to race condition" - } + $WebClientInfo = (az ad app credential reset --id $WebClientID --append --display-name $WebClientSecretName --years $WebClientSecretDuration --only-show-errors) | ConvertFrom-Json + $WebClientSecret = $WebClientInfo.password + Write-Log -Message "WebClientInfo value:`n$WebClientInfo" - break - } - catch{ - if($counter -eq 5){throw $Error[0]} #if we fail too many times throw the exception to terminate the code - Write-Host "Try $($counter+1) out of 6" - Write-Log -Message "Failed to create client secret for $B2cAppName $counter times" - Write-Error $Error[0] - Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" - Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it - } - } Write-Log -Message "Created secret $WebClientSecretName ($WebClientSecret) for $B2cAppName ($WebClientID)" @@ -252,56 +162,13 @@ try{ Write-Host "Creating service principal for $B2cAppName" Write-Log -Message "Creating service principal for $B2cAppName" - #defensive programming around race condition between app creation and secret added to the app - $counter = 0 - while($counter -lt 5){ - try{ - $counter += 1 - $B2cAppServicePrincipalInfo = az ad sp create --id $WebClientID --only-show-errors - Write-Log -Message "B2cAppServicePrincipalInfo value:`n$B2cAppServicePrincipalInfo" - - # if it failed to create the service - if(!$B2cAppServicePrincipalInfo){ - throw "Azure cli failed due to race condition" - } - - break - } - catch{ - if($counter -eq 5){throw $Error[0]} #if we fail too many times throw the exception to terminate the code - Write-Host "Try $($counter+1) out of 6" - Write-Error $Error[0] - Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" - Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it - } - } + $B2cAppServicePrincipalInfo = az ad sp create --id $WebClientID --only-show-errors + Write-Log -Message "B2cAppServicePrincipalInfo value:`n$B2cAppServicePrincipalInfo" Write-Log -Message "Granting permissions to the service principal for $B2cAppName" Write-Host "Granting permissions to the service principal for $B2cAppName" - #defensive programming around race condition between app creation and secret added to the app - $counter = 0 - while($counter -lt 5){ - try{ - $counter += 1 - $WebClientPermissionGrantingInfo = az ad app permission grant --id $WebClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors - Write-Log -Message "WebClientPermissionGrantingInfo value:`n$WebClientPermissionGrantingInfo" - - # if it failed to create the service - if(!$WebClientPermissionGrantingInfo){ - throw "Azure cli failed due to race condition" - } - - break - } - catch{ - if($counter -eq 5){throw $Error[0]} #if we fail too many times throw the exception to terminate the code - Write-Host "Try $($counter+1) out of 6" - Write-Log -Message "Failed to grant permissions to the service principal for $B2cAppName $counter times" - Write-Error $Error[0] - Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" - Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it - } - } + $WebClientPermissionGrantingInfo = az ad app permission grant --id $WebClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors + Write-Log -Message "WebClientPermissionGrantingInfo value:`n$WebClientPermissionGrantingInfo" az ad app permission add --id $WebClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors #endregion @@ -319,57 +186,16 @@ try{ Write-Host "Granting permissions to the IEF application" Write-Log -Message "Creating service principal for $IEFAppName" - #defensive programming around race condition between app creation and secret added to the app - $counter = 0 - while($counter -lt 5){ - try{ - $counter += 1 - $IEFServicePrincipalInfo = az ad sp create --id $IEFClientID --only-show-errors - Write-Log -Message "IEFServicePrincipalInfo value:`n$IEFServicePrincipalInfo" - # if it failed to create the service - if(!$IEFServicePrincipalInfo){ - throw "Azure cli failed due to race condition" - } - break - } - catch{ - if($counter -eq 5){throw $Error[0]} #if we fail too many times throw the exception to terminate the code - Write-Host "Try $($counter+1) out of 6" - Write-Error $Error[0] - Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" - Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it - } - } + $IEFServicePrincipalInfo = az ad sp create --id $IEFClientID --only-show-errors + Write-Log -Message "IEFServicePrincipalInfo value:`n$IEFServicePrincipalInfo" + Write-Log -Message "Granting permissions to the service principal for $IEFAppName" Write-Host "Granting permissions to the service principal for $IEFAppName" - #defensive programming around race condition between app creation and secret added to the app - $counter = 0 - while($counter -lt 5){ - try{ - $counter += 1 - $IEFPermissionGrantInfo = az ad app permission grant --id $IEFClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors - Write-Log -Message "IEFPermissionGrantInfo value:`n$IEFPermissionGrantInfo" + $IEFPermissionGrantInfo = az ad app permission grant --id $IEFClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors + Write-Log -Message "IEFPermissionGrantInfo value:`n$IEFPermissionGrantInfo" - # if it failed to create the service - if(!$IEFPermissionGrantInfo){ - throw "Azure cli failed due to race condition" - } - break - } - catch{ - if($counter -eq 5){throw $Error[0]} #if we fail too many times throw the exception to terminate the code - Write-Host "Try $($counter+1) out of 6" - Write-Log -Message "Failed to grant permissions to the service principal for $IEFAppName $counter times" - Write-Error $Error[0] - Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" - Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it - } - } az ad app permission add --id $IEFClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors - - - # expose the user_impersonation API Write-Host "Exposing the user_impersonation API" Write-Log -Message "Exposing the user_impersonation API" @@ -410,56 +236,16 @@ try{ Write-Host "Granting permissions to the Proxy IEF application" Write-Log -Message "Creating service principal for $ProxyIEFAppName" - #defensive programming around race condition between app creation and secret added to the app - $counter = 0 - while($counter -lt 5){ - try{ - $counter += 1 - $PIEFServicePrincipalInfo = az ad sp create --id $ProxyIEFClientID --only-show-errors 2>&1 - Write-Log -Message "PIEFServicePrincipalInfo value:`n$PIEFServicePrincipalInfo" + $PIEFServicePrincipalInfo = az ad sp create --id $ProxyIEFClientID --only-show-errors 2>&1 + Write-Log -Message "PIEFServicePrincipalInfo value:`n$PIEFServicePrincipalInfo" - # if it failed to create the service - if(!$IEFPermissiPIEFServicePrincipalInfoonGrantInfo){ - throw "Azure cli failed due to race condition" - } - break - } - catch{ - if($counter -eq 5){throw $Error[0]} #if we fail too many times throw the exception to terminate the code - Write-Host "Try $($counter+1) out of 6" - Write-Log -Message "Failed to create service principal for $ProxyIEFAppName $counter times" - Write-Error $Error[0] - Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" - Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it - } - } Write-Host "Granting permissions to the service principal for $ProxyIEFAppName" Write-Log -Message "Granting permissions to the service principal for $ProxyIEFAppName" - #defensive programming around race condition between app creation and secret added to the app - $counter = 0 - while($counter -lt 5){ - try{ - $counter += 1 - $PIEFPermissionGrantInfo = az ad app permission grant --id $ProxyIEFClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors - Write-Log -Message "PIEFPermissionGrantInfo value:`n$PIEFPermissionGrantInfo" + $PIEFPermissionGrantInfo = az ad app permission grant --id $ProxyIEFClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors + Write-Log -Message "PIEFPermissionGrantInfo value:`n$PIEFPermissionGrantInfo" - # if it failed to create the service - if(!$PIEFPermissionGrantInfo){ - throw "Azure cli failed due to race condition" - } - break - } - catch{ - if($counter -eq 5){throw $Error[0]} #if we fail too many times throw the exception to terminate the code - Write-Host "Try $($counter+1) out of 6" - Write-Log -Message "Failed to create service principal for $ProxyIEFAppName $counter times" - Write-Error $Error[0] - Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" - Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it - } - } az ad app permission add --id $ProxyIEFClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors az ad app permission grant --id $ProxyIEFClientID --api $IEFClientID --scope "user_impersonation" --only-show-errors > $null az ad app permission add --id $ProxyIEFClientID --api $IEFClientID --api-permissions "$IEFScopeGUID=Scope" --only-show-errors @@ -478,31 +264,11 @@ try{ # $PermissionClientSecretName = Read-Host "Please give a name for the client secret to be created" $PermissionClientSecretDuration = 1 - #defensive programming around race condition between app creation and secret added to the app - $counter = 0 - $PermissionClientSecret = "" - while($counter -lt 5){ - try{ - $counter += 1 - $PermissionClientSecretInfo = (az ad app credential reset --id $PermissionClientID --append --display-name $PermissionClientSecretName --years $PermissionClientSecretDuration --only-show-errors) | ConvertFrom-Json - $PermissionClientSecret = $PermissionClientSecretInfo.password - Write-Log -Message "PermissionClientSecretInfo value:`n$PermissionClientSecretInfo" - - # if it failed to create the service - if(!$PermissionClientSecretInfo){ - throw "Azure cli failed due to race condition" - } - break - } - catch{ - if($counter -eq 5){throw $Error[0]} #if we fail too many times throw the exception to terminate the code - Write-Host "Try $($counter+1) out of 6" - Write-Log -Message "Failed to create client secret for $PermissionAppName $counter times" - Write-Error $Error[0] - Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" - Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it - } - } + + $PermissionClientSecretInfo = (az ad app credential reset --id $PermissionClientID --append --display-name $PermissionClientSecretName --years $PermissionClientSecretDuration --only-show-errors) | ConvertFrom-Json + $PermissionClientSecret = $PermissionClientSecretInfo.password + Write-Log -Message "PermissionClientSecretInfo value:`n$PermissionClientSecretInfo" + Write-Log -Message "Created secret $PermissionClientSecretName ($PermissionClientSecret) for $PermissionAppName ($PermissionClientID)" @@ -514,54 +280,18 @@ try{ Write-Host "Creating service principal for $PermissionAppName" Write-Log -Message "Creating service principal for $PermissionAppName" #defensive programming around race condition between app creation and secret added to the app - $counter = 0 - while($counter -lt 5){ - try{ - $counter += 1 - $PermissionClientServicePrincipalInfo = az ad sp create --id $PermissionClientID --only-show-errors 2>&1 - Write-Log -Message "PermissionClientServicePrincipalInfo value:`n$PermissionClientServicePrincipalInfo" - - # if it failed to create the service - if(!$PermissionClientServicePrincipalInfo){ - throw "Azure cli failed due to race condition" - } - break - } - catch{ - if($counter -eq 5){throw $Error[0]} #if we fail too many times throw the exception to terminate the code - Write-Host "Try $($counter+1) out of 6" - Write-Log -Message "Failed to create service principal for $PermissionAppName $counter times" - Write-Error $Error[0] - Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" - Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it - } - } + + $PermissionClientServicePrincipalInfo = az ad sp create --id $PermissionClientID --only-show-errors 2>&1 + Write-Log -Message "PermissionClientServicePrincipalInfo value:`n$PermissionClientServicePrincipalInfo" + Write-Host "Granting permissions to the service principal for $PermissionAppName" Write-Log -Message "Granting permissions to the service principal for $PermissionAppName" - #defensive programming around race condition between app creation and secret added to the app - $counter = 0 - while($counter -lt 5){ - try{ - $counter += 1 - $PermissionClientPermissionGrantInfo = az ad app permission grant --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors - Write-Log -Message "PermissionClientPermissionGrantInfo value:`n$PermissionClientPermissionGrantInfo" + + $PermissionClientPermissionGrantInfo = az ad app permission grant --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors + Write-Log -Message "PermissionClientPermissionGrantInfo value:`n$PermissionClientPermissionGrantInfo" - # if it failed to create the service - if(!$PermissionClientPermissionGrantInfo){ - throw "Azure cli failed due to race condition" - } - break - } - catch{ - if($counter -eq 5){throw $Error[0]} #if we fail too many times throw the exception to terminate the code - Write-Host "Try $($counter+1) out of 6" - Write-Log -Message "Failed to grant permissions to the service principal for $PermissionAppName $counter times" - Write-Error $Error[0] - Write-Color "yellow" "Failed due to potential race condition, retrying in 10 seconds" - Start-Sleep 10 # sleeping due to race condition between creating initial resource and adding to it - } - } + az ad app permission add --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors az ad app permission add --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $keysetRWPermission $policyRWPermission --only-show-errors #Granting admin consent for the needed apis From d67b88035b7159fb3714588a02159206fa088eec Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Sat, 30 Jul 2022 12:00:58 +0100 Subject: [PATCH 172/285] Added code to force the minimum cli required to run the b2cDeploy and deploy.ps1 --- deployment/B2CDeployment.ps1 | 6 ++++++ deployment/Deploy.ps1 | 16 +++++++--------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 9b627ebd..85a868e4 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -43,6 +43,12 @@ Write-Log -Message "Started the B2C setup script" try{ + + $azureVersion = (az version 2>&1 | ConvertFrom-Json)."azure-cli" + if ($azureVersion -lt 2.37){ + throw "Please upgrade to the minimum supported version of cli (2.37)" + } + #region "AppInfo CSV setup" $AppInfoCSVPath = ".\AppInfo.csv" if (Test-Path $AppInfoCSVPath -PathType Leaf) { diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 5d00bc38..bcd38b4f 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -51,6 +51,12 @@ process { #endregion try { + + $azureVersion = (az version 2>&1 | ConvertFrom-Json)."azure-cli" + if ($azureVersion -lt 2.37){ + throw "Please upgrade to the minimum supported version of cli (2.37)" + } + #region Show Learn LTI Banner Write-Host '' Write-Host ' _ ______ _____ _ _ _ _______ _____ ' @@ -317,15 +323,7 @@ process { #region Provision Resources inside Resource Group on Azure using ARM template Write-Title 'STEP #6 - Creating Resources in Azure' - [int]$azver0= (az version | ConvertFrom-Json | Select -ExpandProperty "azure-cli").Split(".")[0] - [int]$azver1= (az version | ConvertFrom-Json | Select -ExpandProperty "azure-cli").Split(".")[1] - if ($azver0 -ge 2 -and $azver1 -ge 37) { - $userObjectId = az ad signed-in-user show --query id - } else { - $userObjectId = az ad signed-in-user show --query objectId - } - #$userObjectId - + $userObjectId = az ad signed-in-user show --query id # requires 2.37 or igher $templateFileName = "azuredeploy.json" $deploymentName = "Deployment-$ExecutionStartTime" Write-Log -Message "Deploying ARM Template to Azure inside ResourceGroup: $ResourceGroupName with DeploymentName: $deploymentName, TemplateFile: $templateFileName, AppClientId: $($appinfo.appId), IdentifiedURI: $($appinfo.identifierUris)" From 8e7be3e1302c62b1a6113fb466bf8be374cbfa77 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Sat, 30 Jul 2022 12:02:21 +0100 Subject: [PATCH 173/285] Moved azureVersion checking to be underneath logging setup --- deployment/Deploy.ps1 | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index bcd38b4f..ba39e23a 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -52,11 +52,6 @@ process { try { - $azureVersion = (az version 2>&1 | ConvertFrom-Json)."azure-cli" - if ($azureVersion -lt 2.37){ - throw "Please upgrade to the minimum supported version of cli (2.37)" - } - #region Show Learn LTI Banner Write-Host '' Write-Host ' _ ______ _____ _ _ _ _______ _____ ' @@ -89,6 +84,11 @@ process { Start-Transcript -Path $TranscriptFile; #endregion + $azureVersion = (az version 2>&1 | ConvertFrom-Json)."azure-cli" + if ($azureVersion -lt 2.39){ + throw "Please upgrade to the minimum supported version of cli (2.37)" + } + #formatting a unique identifier to ensure we create a new keyvault for each run $uniqueIdentifier = [Int64]((Get-Date).ToString('yyyyMMddhhmmss')) #get the current second as being the unique identifier From 0117fbbe4f083a7ae602058714b8b352af75bd28 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Sat, 30 Jul 2022 12:05:29 +0100 Subject: [PATCH 174/285] Added check for azureVersion before specifying b2c or ad choice --- deployment/Deploy.ps1 | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index ba39e23a..e84cacbc 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -63,13 +63,6 @@ process { Write-Host '' Write-Host '' #endregion | Set-Content -path (".\test_text.txt") - - #region "getting the setup mode for b2c vs ad" - $b2cOrAD = "none" - while($b2cOrAD -ne "b2c" -and $b2cOrAD -ne "ad") { - $b2cOrAD = Read-Host "Would you like to set this up with b2c or AD? (b2c/ad) (b2c recommended as it can be single tenant or multitenant, ad only single tenant [less scalable])" - } - #endregion #region Setup Logging . .\Write-Log.ps1 @@ -83,11 +76,18 @@ process { $TranscriptFile = Join-Path $LogRoot "Transcript-$ExecutionStartTime.log" Start-Transcript -Path $TranscriptFile; #endregion - + $azureVersion = (az version 2>&1 | ConvertFrom-Json)."azure-cli" - if ($azureVersion -lt 2.39){ + if ($azureVersion -lt 2.37){ throw "Please upgrade to the minimum supported version of cli (2.37)" } + + #region "getting the setup mode for b2c vs ad" + $b2cOrAD = "none" + while($b2cOrAD -ne "b2c" -and $b2cOrAD -ne "ad") { + $b2cOrAD = Read-Host "Would you like to set this up with b2c or AD? (b2c/ad) (b2c recommended as it can be single tenant or multitenant, ad only single tenant [less scalable])" + } + #endregion #formatting a unique identifier to ensure we create a new keyvault for each run $uniqueIdentifier = [Int64]((Get-Date).ToString('yyyyMMddhhmmss')) #get the current second as being the unique identifier From 299546f146cf09b81949bf0039efd45e0dceda7b Mon Sep 17 00:00:00 2001 From: Tianchen Zhang Date: Sat, 30 Jul 2022 15:14:07 +0100 Subject: [PATCH 175/285] optimize b2c deployment script --- deployment/B2CDeployment.ps1 | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 85a868e4..17dd1ee8 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -109,19 +109,16 @@ try{ $profilePermission = "14dad69e-099b-42c9-810b-d002981feec1=Scope" $emailPermission = "64a6cdd6-aab1-4aaf-94b8-3cc8405e90d0=Scope" - Write-Host "Creating service principal for $MultiTenantAppName" Write-Log -Message "Creating service principal for $MultiTenantAppName" $MultiTenantAppServicePrincipal = az ad sp create --id $MultiTenantAppID --only-show-errors Write-Log -Message "MultiTenantAppServicePrincipal value:`n$MultiTenantAppServicePrincipal" - Write-Host "Granting permissions to the service principal for $MultiTenantAppName" Write-Log -Message "Granting permissions to the service principal for $MultiTenantAppName" $MultiTenantAppPermissionGrantInfo = az ad app permission grant --id $MultiTenantAppID --api 00000003-0000-0000-c000-000000000000 --scope "email profile" --only-show-errors Write-Log -Message "MultiTenantAppPermissionGrantInfo value:`n$MultiTenantAppPermissionGrantInfo" - az ad app permission add --id $MultiTenantAppID --api 00000003-0000-0000-c000-000000000000 --api-permissions $emailPermission $profilePermission --only-show-errors Remove-Item manifest.json @@ -143,8 +140,6 @@ try{ $ObjectId = $appinfo.id Write-Log -Message "Created web app with id $WebClientID in $B2cTenantName" - - "$WebClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append # create client secret @@ -159,7 +154,6 @@ try{ Write-Log -Message "Created secret $WebClientSecretName ($WebClientSecret) for $B2cAppName ($WebClientID)" - # set permissions for the web app Write-Host "Granting permissions to the B2C Web application" $openidPermission = "37f7f235-527c-4136-accd-4a02d197296e=Scope" @@ -186,8 +180,7 @@ try{ $IEFClientID = $IEFAppInfo.appId Write-Log -Message "Created IEF app with id $IEFClientID in $B2cTenantName" "$IEFClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append - - + # set permissions for the IEF app Write-Host "Granting permissions to the IEF application" Write-Log -Message "Creating service principal for $IEFAppName" @@ -245,7 +238,6 @@ try{ $PIEFServicePrincipalInfo = az ad sp create --id $ProxyIEFClientID --only-show-errors 2>&1 Write-Log -Message "PIEFServicePrincipalInfo value:`n$PIEFServicePrincipalInfo" - Write-Host "Granting permissions to the service principal for $ProxyIEFAppName" Write-Log -Message "Granting permissions to the service principal for $ProxyIEFAppName" @@ -269,7 +261,6 @@ try{ Write-Log -Message "Creating the client secret for $PermissionAppName" # $PermissionClientSecretName = Read-Host "Please give a name for the client secret to be created" $PermissionClientSecretDuration = 1 - $PermissionClientSecretInfo = (az ad app credential reset --id $PermissionClientID --append --display-name $PermissionClientSecretName --years $PermissionClientSecretDuration --only-show-errors) | ConvertFrom-Json $PermissionClientSecret = $PermissionClientSecretInfo.password @@ -290,13 +281,10 @@ try{ $PermissionClientServicePrincipalInfo = az ad sp create --id $PermissionClientID --only-show-errors 2>&1 Write-Log -Message "PermissionClientServicePrincipalInfo value:`n$PermissionClientServicePrincipalInfo" - Write-Host "Granting permissions to the service principal for $PermissionAppName" Write-Log -Message "Granting permissions to the service principal for $PermissionAppName" - $PermissionClientPermissionGrantInfo = az ad app permission grant --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors Write-Log -Message "PermissionClientPermissionGrantInfo value:`n$PermissionClientPermissionGrantInfo" - az ad app permission add --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors az ad app permission add --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $keysetRWPermission $policyRWPermission --only-show-errors @@ -317,7 +305,6 @@ try{ $fileOrInputs = Read-Host "Would you like to either:`n1. import a file with *all* the tenant ID's to be whitelisted`n2. input them 1 by 1 into the console? `n(1/2)" } - $whitelist = @() # Input via a file if ($fileOrInputs -eq "1") @@ -444,6 +431,9 @@ try{ $keysets = "" while(1){ try{ + # Grant admin-consent to the PMA app again to avoid race condition + az ad app permission admin-consent --id $PermissionClientID --only-show-errors + #region "Getting the token to be used in the HTML REQUESTS" # relevant docs: https://docs.microsoft.com/en-us/graph/auth-v2-service#4-get-an-access-token From 5c977a1ed8d98d279477bddf7076f9003c29b328 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Sat, 30 Jul 2022 23:52:44 +0100 Subject: [PATCH 176/285] remove hardcoding, limited client deploy, fix secret --- client/src/Core/Auth/policies.ts | 4 +- deployment/Deploy.ps1 | 6 +- deployment/Limited_Install_Client.ps1 | 105 +++++++++++++++++++++++++ deployment/azuredeployB2CTemplate.json | 2 +- 4 files changed, 110 insertions(+), 7 deletions(-) create mode 100644 deployment/Limited_Install_Client.ps1 diff --git a/client/src/Core/Auth/policies.ts b/client/src/Core/Auth/policies.ts index 705d8226..4657b3a1 100644 --- a/client/src/Core/Auth/policies.ts +++ b/client/src/Core/Auth/policies.ts @@ -7,7 +7,6 @@ export const b2cPolicies = { names: { signIn: 'B2C_1A_SIGNIN' // custom policy - //signin: `B2C_1_signup_signin_LTI` // user flow }, authorities: { signIn: { @@ -19,6 +18,5 @@ export const b2cPolicies = { '.onmicrosoft.com/b2c_1a_signin' } }, - //authorityDomain: `ltimoodleb2c.b2clogin.com` - authorityDomain: process.env.REACT_APP_EDNA_B2C_TENANT! + `.b2clogin.com` // RB: don't hardcode + authorityDomain: process.env.REACT_APP_EDNA_B2C_TENANT! + `.b2clogin.com` }; diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index e84cacbc..f2be1889 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "ALLB2C_test2_MSLearnLti", - [string]$AppName = "ALLB2C_test2_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "RB1_all_MSLearnLti", + [string]$AppName = "RB1_all_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null @@ -114,7 +114,7 @@ process { $REACT_APP_EDNA_B2C_CLIENT_ID = $results[-4] #webclient ID $REACT_APP_EDNA_AUTH_CLIENT_ID = $results[-4] #webclient ID $b2c_secret = $results[-3] #webclient secret - $b2c_secret = '"'+$b2c_secret+'"' # turning the secret into a form we can store + $b2c_secret = $b2c_secret # turning the secret into a form we can store $REACT_APP_EDNA_B2C_TENANT = $results[-2] #b2c tenant name $B2C_ObjectID = $results[-1] # b2c webapp id that needs the SPA uri diff --git a/deployment/Limited_Install_Client.ps1 b/deployment/Limited_Install_Client.ps1 new file mode 100644 index 00000000..0d45b339 --- /dev/null +++ b/deployment/Limited_Install_Client.ps1 @@ -0,0 +1,105 @@ +function Test-LtiActiveAzAccount { + $account = az account show | ConvertFrom-Json + if(!$account) { + throw "Error while trying to get Active Account Info." + } +} + +function Connect-LtiAzAccount { + $loginOp = az login | ConvertFrom-Json + if(!$loginOp) { + throw "Encountered an Error while trying to Login." + } +} + +if ($UseActiveAzureAccount) { + Write-Log -Message "Using Active Azure Account" + Test-LtiActiveAzAccount +} +else { + Write-Log -Message "Logging in to Azure" + Connect-LtiAzAccount +} + +Write-Host -Message "Successfully logged in to Azure." +#endregion + +#region Choose Active Subcription +Write-Host 'STEP #2 - Choose Subscription' + +function Get-LtiSubscriptionList { + $AzAccountList = ((az account list --all --output json) | ConvertFrom-Json) + if(!$AzAccountList) { + throw "Encountered an Error while trying to fetch Subscription List." + } + Write-Output $AzAccountList +} + +function Set-LtiActiveSubscription { + param ( + [string]$NameOrId, + $List + ) + + $subscription = ($List | Where-Object { ($_.name -ieq $NameOrId) -or ($_.id -ieq $NameOrId) }) + if(!$subscription) { + throw [InvalidAzureSubscriptionException] "Invalid Subscription Name/ID Entered." + } + az account set --subscription $NameOrId + #Intentionally not catching an exception here since the set subscription commands behavior (output) is different from others + + Write-Output $subscription +} + +Write-Host -Message "Fetching List of Subscriptions in Users Account" +$SubscriptionList = Get-LtiSubscriptionList +#Write-Host -Message "List of Subscriptions:-`n$($SubscriptionList | ConvertTo-Json -Compress)" + +$SubscriptionCount = ($SubscriptionList | Measure-Object).Count +#Write-Log -Message "Count of Subscriptions: $SubscriptionCount" +if ($SubscriptionCount -eq 0) { + throw "Please create at least ONE Subscription in your Azure Account" +} +elseif ($SubscriptionNameOrId) { + #Write-Log -Message "Using User provided Subscription Name/ID: $SubscriptionNameOrId" +} +elseif ($SubscriptionCount -eq 1) { + $SubscriptionNameOrId = $SubscriptionList[0].id; + #Write-Log -Message "Defaulting to Subscription ID: $SubscriptionNameOrId" +} +else { + $SubscriptionListOutput = $SubscriptionList | Select-Object @{ l="Subscription Name"; e={ $_.name } }, "id", "isDefault" + Write-Host ($SubscriptionListOutput | Out-String) + $SubscriptionNameOrId = Read-Host 'Enter the Name or ID of the Subscription from Above List' + #trimming the input for empty spaces, if any + $SubscriptionNameOrId = $SubscriptionNameOrId.Trim() + #Write-Log -Message "User Entered Subscription Name/ID: $SubscriptionNameOrId" +} + +#defensive programming so script doesn't halt and require a cleanup if subscription is mistyped +while(1){ + try{ + $ActiveSubscription = Set-LtiActiveSubscription -NameOrId $SubscriptionNameOrId -List $SubscriptionList + break + } + catch [InvalidAzureSubscriptionException]{ + Write-Error $Error[0] + $SubscriptionNameOrId = Read-Host 'Enter the Name or ID of the Subscription from Above List' + #trimming the input for empty spaces, if any + $SubscriptionNameOrId = $SubscriptionNameOrId.Trim() + Write-Log -Message "User Entered Subscription Name/ID: $SubscriptionNameOrId" + } +} +$UserEmailAddress = $ActiveSubscription.user.name +#endregion + + + +. .\Install-Client.ps1 +Write-Host 'STEP #12 - Installing the client' + +$ClientInstallParams = @{ + SourceRoot="../client"; + StaticWebsiteStorageAccount="learnclientccwwld5ib" +} +Install-Client @ClientInstallParams \ No newline at end of file diff --git a/deployment/azuredeployB2CTemplate.json b/deployment/azuredeployB2CTemplate.json index 0e67f1ff..baddc753 100644 --- a/deployment/azuredeployB2CTemplate.json +++ b/deployment/azuredeployB2CTemplate.json @@ -165,7 +165,7 @@ "customOpenIdConnectProviders": { "AzureB2C": { "registration": { - "clientId": "0cd1d1d6-a7aa-41e2-b569-1ca211147973", + "clientId": "", "clientCredential": { "clientSecretSettingName": "AzureB2C_AUTHENTICATION_SECRET" }, From f84dcc93641ba4f9ca8e2f554c4f42d3bffec780 Mon Sep 17 00:00:00 2001 From: Tianchen Zhang Date: Mon, 1 Aug 2022 12:00:18 +0100 Subject: [PATCH 177/285] feat: expose b2c.read api for the b2c web app --- deployment/B2CDeployment.ps1 | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 17dd1ee8..a1e379ed 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -170,6 +170,30 @@ try{ $WebClientPermissionGrantingInfo = az ad app permission grant --id $WebClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors Write-Log -Message "WebClientPermissionGrantingInfo value:`n$WebClientPermissionGrantingInfo" az ad app permission add --id $WebClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors + + # expose the b2c.read api + Write-Host "Exposing the b2c.read API" + Write-Log -Message "Exposing the b2c.read API" + az ad app update --id $WebClientID --identifier-uris "https://$B2cTenantName.onmicrosoft.com/$WebClientID" --only-show-errors + $WebAppInfo = (az ad app show --id $WebClientID --only-show-errors | ConvertFrom-Json) + $WebAppApiInfo = $WebAppInfo.api + $WebScopeGUID = [guid]::NewGuid() + $B2CReadScope = "{ + `"adminConsentDescription`": `"Read B2C Data.`", + `"adminConsentDisplayName`": `"Read B2C Data.`", + `"id`": `"$WebScopeGUID`", + `"isEnabled`": true, + `"type`": `"Admin`", + `"userConsentDescription`": null, + `"userConsentDisplayName`": null, + `"value`": `"b2c.read`" + }" | ConvertFrom-Json + $WebAppApiInfo.oauth2PermissionScopes += $B2CReadScope + ConvertTo-Json -InputObject $WebAppApiInfo | Out-File -FilePath "b2cReadScope.json" + az ad app update --id $WebClientID --set api=@b2cReadScope.json --only-show-errors + az ad app permission grant --id $WebClientID --api $WebClientID --scope "b2c.read" --only-show-errors > $null + az ad app permission add --id $WebClientID --api $WebClientID --api-permissions "$WebScopeGUID=Scope" --only-show-errors + Remove-Item b2cReadScope.json #endregion From a16360657fda59bdbc100324c2dc4829bf8473cf Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Mon, 1 Aug 2022 14:03:52 +0100 Subject: [PATCH 178/285] fixing auth by adding accounts and scope --- client/src/App.tsx | 18 ++++++++++++++++-- client/src/Core/Auth/AppAuthConfig.ts | 14 ++++++++++---- .../Core/Auth/AxiosBasicAuthInitializer.tsx | 3 ++- 3 files changed, 28 insertions(+), 7 deletions(-) diff --git a/client/src/App.tsx b/client/src/App.tsx index dee5a8d2..53af4329 100644 --- a/client/src/App.tsx +++ b/client/src/App.tsx @@ -13,7 +13,7 @@ import { MainLayout } from './Core/Components/MainLayout'; import { GlobalRouter } from './Router/GlobalRouter'; import { registerIcons, loadTheme } from '@uifabric/styling'; import { fabricIconsData } from './Assets/Fonts/FabricIconsData'; -import { AppAuthConfig, request } from './Core/Auth/AppAuthConfig'; +import { AppAuthConfig } from './Core/Auth/AppAuthConfig'; import { initializeIcons } from '@fluentui/react'; import { appTheme } from './Core/Themes/MainTheme'; import { PlatformPage } from './Features/Platform/PlatformPage'; @@ -22,13 +22,27 @@ import { MsalAuthenticationTemplate, MsalProvider } from '@azure/msal-react'; import { AxiosBasicAuthInitializer } from './Core/Auth/AxiosBasicAuthInitializer'; const rootStore: RootStore = new RootStore(); -AppAuthConfig; function App() { registerIcons(fabricIconsData); initializeIcons(); loadTheme(appTheme); + let request; + if (process.env.REACT_APP_EDNA_B2C_TENANT! != 'NA') { + request = { + scopes: [ + 'openid', + 'profile', + 'https://' + process.env.REACT_APP_EDNA_B2C_TENANT! + '.onmicrosoft.com/api/b2c.read' + ] + }; + } else { + request = { + scopes: [process.env.REACT_APP_EDNA_DEFAULT_SCOPE!] + }; + } + return ( diff --git a/client/src/Core/Auth/AppAuthConfig.ts b/client/src/Core/Auth/AppAuthConfig.ts index 7a001a78..82d1fa5a 100644 --- a/client/src/Core/Auth/AppAuthConfig.ts +++ b/client/src/Core/Auth/AppAuthConfig.ts @@ -13,14 +13,20 @@ export let request; let authority; // Swap out needed B2C vs AD options if (process.env.REACT_APP_EDNA_B2C_TENANT! != 'NA') { - console.log(process.env.REACT_APP_EDNA_B2C_TENANT!); // TODO, remove - console.log('in B2C mode'); + console.log('In B2C mode'); // TODO remove in final version request = { - scopes: ['openid', 'profile', 'https://' + process.env.REACT_APP_EDNA_B2C_TENANT! + '.onmicrosoft.com/api/b2c.read'] + scopes: [ + 'openid', + 'profile', + 'https://' + + process.env.REACT_APP_EDNA_B2C_TENANT! + + '.onmicrosoft.com/' + + process.env.REACT_APP_EDNA_B2C_CLIENT_ID + + 'api/b2c.read' + ] }; authority = b2cPolicies.authorities.signIn.authority; } else { - console.log('in AD mode'); // TODO, remove request = { scopes: [process.env.REACT_APP_EDNA_DEFAULT_SCOPE!] }; diff --git a/client/src/Core/Auth/AxiosBasicAuthInitializer.tsx b/client/src/Core/Auth/AxiosBasicAuthInitializer.tsx index 7932157c..248a1e3c 100644 --- a/client/src/Core/Auth/AxiosBasicAuthInitializer.tsx +++ b/client/src/Core/Auth/AxiosBasicAuthInitializer.tsx @@ -13,9 +13,10 @@ export const AxiosBasicAuthInitializer = ({ children }: PropsWithChildren<{}>): const { instance, accounts } = useMsal(); const [isTokenLoaded, setIsTokenLoaded] = useState(false); const [accessToken, setAccessToken] = useState(null); + console.log(accounts); // Called everytime time the LTI app is accessed to authenticate the user before allowing access. - + request.account = accounts[0]; // TODO is this the right thing to do? useEffect(() => { instance .acquireTokenSilent(request) From e2603481ffdbc85355bff3b73ae841b76a39e3d1 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Mon, 1 Aug 2022 15:29:07 +0100 Subject: [PATCH 179/285] Updated documentation to be correct to the current version of the deployment script (wrt b2c) --- deployment/B2CCleanup.ps1 | 2 +- deployment/B2CDeployment.ps1 | 23 ++- deployment/B2C_Docs/B2C_Cleanup.md | 38 ++-- deployment/B2C_Docs/B2C_Deployment.md | 183 ++++++++++-------- .../Images/01_ExpandedContextMenu.png | Bin 125695 -> 0 bytes .../Images/Cleanup/00a_startScript.png | Bin 3762 -> 0 bytes .../Images/Cleanup/01_tokenInputs.png | Bin 0 -> 13203 bytes .../Images/Cleanup/01a_gettingToken.png | Bin 8491 -> 0 bytes .../B2C_Docs/Images/Cleanup/04b_output.png | Bin 17004 -> 44502 bytes .../Images/Deployment/00a_startScript.png | Bin 3915 -> 0 bytes .../Images/Deployment/00b_tenantNames.png | Bin 3938 -> 7409 bytes .../Images/Deployment/01b_LoginPrompt.png | Bin 5685 -> 7014 bytes .../Images/Deployment/01c_appName.png | Bin 12985 -> 0 bytes .../B2C_Docs/Images/Deployment/01d_secret.png | Bin 22705 -> 0 bytes .../Images/Deployment/02a_LoginPrompt.png | Bin 5629 -> 7118 bytes .../Images/Deployment/03a_nameWebApp.png | Bin 10349 -> 0 bytes .../B2C_Docs/Images/Deployment/03b_secret.png | Bin 20361 -> 0 bytes .../Images/Deployment/06a_namePMA.png | Bin 10799 -> 0 bytes .../B2C_Docs/Images/Deployment/06b_secret.png | Bin 21312 -> 0 bytes .../B2C_Docs/Images/Deployment/07_1_fail.png | Bin 0 -> 8545 bytes .../Images/Deployment/07_1_fileFormat.png | Bin 0 -> 3741 bytes .../Images/Deployment/07_1_successful.png | Bin 0 -> 25719 bytes .../Images/Deployment/07_2_successful.png | Bin 0 -> 21902 bytes .../Images/Deployment/07_failWhitelist.png | Bin 40189 -> 0 bytes .../B2C_Docs/Images/Deployment/07_noFB.png | Bin 5842 -> 0 bytes .../Deployment/07_successfulWhitelist.png | Bin 19607 -> 0 bytes .../B2C_Docs/Images/Deployment/07_yesFB.png | Bin 8825 -> 0 bytes .../B2C_Docs/Images/Deployment/08_noFB.png | Bin 0 -> 6038 bytes .../B2C_Docs/Images/Deployment/08_yesFB.png | Bin 0 -> 13794 bytes .../B2C_Docs/Images/Deployment/10a_time.png | Bin 7487 -> 0 bytes .../B2C_Docs/Images/Deployment/10b_error.png | Bin 19679 -> 0 bytes .../B2C_Docs/Images/Deployment/11_error.png | Bin 0 -> 18415 bytes .../B2C_Docs/Images/Deployment/11_time.png | Bin 0 -> 7851 bytes .../B2C_Docs/Images/Deployment/13_secrets.png | Bin 0 -> 27873 bytes deployment/Cleanup.ps1 | 2 +- docs/CONSOLIDATED_DEPLOY.md | 130 ------------- docs/DEPLOYMENT_GUIDE.md | 23 ++- images/admode.png | Bin 138686 -> 144029 bytes images/b2cmode.png | Bin 139389 -> 141631 bytes 39 files changed, 155 insertions(+), 246 deletions(-) delete mode 100644 deployment/B2C_Docs/Images/01_ExpandedContextMenu.png delete mode 100644 deployment/B2C_Docs/Images/Cleanup/00a_startScript.png create mode 100644 deployment/B2C_Docs/Images/Cleanup/01_tokenInputs.png delete mode 100644 deployment/B2C_Docs/Images/Cleanup/01a_gettingToken.png delete mode 100644 deployment/B2C_Docs/Images/Deployment/00a_startScript.png delete mode 100644 deployment/B2C_Docs/Images/Deployment/01c_appName.png delete mode 100644 deployment/B2C_Docs/Images/Deployment/01d_secret.png delete mode 100644 deployment/B2C_Docs/Images/Deployment/03a_nameWebApp.png delete mode 100644 deployment/B2C_Docs/Images/Deployment/03b_secret.png delete mode 100644 deployment/B2C_Docs/Images/Deployment/06a_namePMA.png delete mode 100644 deployment/B2C_Docs/Images/Deployment/06b_secret.png create mode 100644 deployment/B2C_Docs/Images/Deployment/07_1_fail.png create mode 100644 deployment/B2C_Docs/Images/Deployment/07_1_fileFormat.png create mode 100644 deployment/B2C_Docs/Images/Deployment/07_1_successful.png create mode 100644 deployment/B2C_Docs/Images/Deployment/07_2_successful.png delete mode 100644 deployment/B2C_Docs/Images/Deployment/07_failWhitelist.png delete mode 100644 deployment/B2C_Docs/Images/Deployment/07_noFB.png delete mode 100644 deployment/B2C_Docs/Images/Deployment/07_successfulWhitelist.png delete mode 100644 deployment/B2C_Docs/Images/Deployment/07_yesFB.png create mode 100644 deployment/B2C_Docs/Images/Deployment/08_noFB.png create mode 100644 deployment/B2C_Docs/Images/Deployment/08_yesFB.png delete mode 100644 deployment/B2C_Docs/Images/Deployment/10a_time.png delete mode 100644 deployment/B2C_Docs/Images/Deployment/10b_error.png create mode 100644 deployment/B2C_Docs/Images/Deployment/11_error.png create mode 100644 deployment/B2C_Docs/Images/Deployment/11_time.png create mode 100644 deployment/B2C_Docs/Images/Deployment/13_secrets.png delete mode 100644 docs/CONSOLIDATED_DEPLOY.md diff --git a/deployment/B2CCleanup.ps1 b/deployment/B2CCleanup.ps1 index 8b6ab50c..ccefe056 100644 --- a/deployment/B2CCleanup.ps1 +++ b/deployment/B2CCleanup.ps1 @@ -10,7 +10,7 @@ function Write-Title([string]$Title) { #region "B2C STEP 1: Getting the token to be used in the HTML REQUESTS" # relevant docs: https://docs.microsoft.com/en-us/graph/auth-v2-service#4-get-an-access-token -Write-Title "B2C B2C STEP 1: Getting the token to be used in the HTML REQUESTS" +Write-Title "B2C STEP 1: Getting the token to be used in the HTML REQUESTS" $B2cTenantName = Read-Host "Please enter your B2C tenant name" $PermissionClientID = Read-Host "Please enter the client ID of the permission management application" diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index a1e379ed..1770151d 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -338,14 +338,21 @@ try{ foreach ($wlTenantID in $tenantIDs) { - #region "HTTP request to get the issuer claim we want to add to the whitelist" - $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" + try{ + # HTTP request to get the issuer claim we want to add to the whitelist + $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" + $response = Invoke-RestMethod "https://login.microsoftonline.com/$wlTenantID/v2.0/.well-known/openid-configuration" -Method 'GET' -Headers $headers + $issuer = $response.issuer - $response = Invoke-RestMethod "https://login.microsoftonline.com/$wlTenantID/v2.0/.well-known/openid-configuration" -Method 'GET' -Headers $headers - $issuer = $response.issuer - #endregion $whitelist += $issuer #adding the issuer for this tenant to the whitelist + Write-Host "Tenant with ID $wlTenantID added to the whitelist" + } + catch{ + $Message = "$($Error[0].Exception.Message)`nTenant with ID $wlTenantID is not valid; please verify with the tenant Admin the tenants ID then manually add it to the whitelist through the portal." + Write-Error $Message + Write-Log -Message $Message -ErrorRecord $Error[0] + } } } @@ -353,11 +360,11 @@ try{ else { $wlTenantID = "" - while ($wlTenantID -ne "no") + while ($wlTenantID -ne "n") { - $wlTenantID = Read-Host "Please enter the tenant ID you wish to add to the whitelist (or 'no' to stop): " + $wlTenantID = Read-Host "Please enter the tenant ID you wish to add to the whitelist (or 'n' to stop)" - if($wlTenantID -eq "no"){break} + if($wlTenantID -eq "n"){break} try{ #region "HTTP request to get the issuer claim we want to add to the whitelist" diff --git a/deployment/B2C_Docs/B2C_Cleanup.md b/deployment/B2C_Docs/B2C_Cleanup.md index 3d395f0e..8cc0791c 100644 --- a/deployment/B2C_Docs/B2C_Cleanup.md +++ b/deployment/B2C_Docs/B2C_Cleanup.md @@ -1,35 +1,18 @@ # B2C Cleanup User Docs -## Terminal screenshots key: -* Red background = hidden B2C value -* Orange background = hidden AD value -* Pink background = user inputted value -## Starting The Script - -There are 2 ways to cleanup B2C: - -### 1. Running the B2C cleanup script from LTI cleanup (Recommended) - -Follow the steps in [LTI troubleshooting guide](https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/blob/consolidated_deploy_branch/docs/TROUBLESHOOTING.md) for cleanup and it will automatically direct you to the following steps. - -### 2. Running the B2C cleanup script manually (if you want to remove only B2C resources) - -* Load Learn-LTI/Deployment into Windows File Explorer -* **Hold shift** and right click in the file explorer to launch the Expanded Context Menu -* Click "Open Powershell Window Here" to launch powershell with cd already set to Learn-Lti/Deployment - * ![Expanded Context Menu](Images/01_ExpandedContextMenu.png) -* Type ".\B2CCleanup.ps1" into the newly launched Powershell then press enter - * ![start cleanup script](Images/Cleanup/00a_startScript.png) ## Step 1: Getting the token to be used in the HTML REQUESTS -* First, enter the client ID and then the secret value of the permission management application that was created when you ran B2CDeployment.ps1
(As this application is used to request for tokens required by the HTML REQUESTS to cleanup the other created resources) - * ![getting token](Images/Cleanup/01a_gettingToken.png) +![inputting values for getting token](Images/Cleanup/01_tokenInputs.png) +* Firstly, you must input the required values of: + 1. The name of your b2c tenant you are cleaning up + 2. the ID of the permission management application created + * (if this was not outputted by the deploy script then it terminated before its creation and thus you can leave this empty) + 3. the secret value of the permission management application created + * (if this was not outputted by the deploy script then it terminated before its creation and thus you can leave this empty) -## Step 2 & 3: Cleaning up the keysets and custom policies -* Steps 2 and 3 will now run requiring 0 user input and will automatically delete the custom policies and keysets created by B2CDeployment.ps1 ## Step 4: Deleting the generated applications * The applications generated by B2CDeployment.ps1 will now be deleted. You will be prompted to login via your browser twice; when the tenant the application to be deleted is from is different than your currently logged into tenant. When prompted please login via the new tab launched in your browser, then return to your powershell after logging in. @@ -39,4 +22,9 @@ Follow the steps in [LTI troubleshooting guide](https://github.com/UCL-MSc-Learn |---| | The launched tabs should look similar to the above; please login using it and then switch back to the powershell | -* Upon completion of this step your B2C and AD directories will have been cleaned up. +* Upon completion of this step your B2C and AD directories will have been cleaned up. And the script will return to the main LTI cleanup + + +# Troubleshooting + +* If at any point you get an error saying " 'xxxxxx' does not exist" that means either the deployment failed before said resource was created, or it has already been deleted; so these errors can be safely ignored. \ No newline at end of file diff --git a/deployment/B2C_Docs/B2C_Deployment.md b/deployment/B2C_Docs/B2C_Deployment.md index b04fd833..4c186d49 100644 --- a/deployment/B2C_Docs/B2C_Deployment.md +++ b/deployment/B2C_Docs/B2C_Deployment.md @@ -1,9 +1,6 @@ # B2C Deployment User Docs -## Terminal screenshots key: -* Red background = hidden B2C value -* Orange background = hidden AD value -* Pink background = user inputted value +This document will explain the steps that contain user interaction and what is required in those steps. ## Prerequisites @@ -12,26 +9,19 @@ * 1x B2C tenant * If not already set up information is available [here](https://docs.microsoft.com/en-us/azure/active-directory-b2c/tutorial-create-tenant) at step 1: "Create an Azure AD B2C Tenant" * You should have ready a **list of the tenant id's for the tenants you wish to give access** + 1. Could either keep it in a list such that you can insert them 1 by 1 into the terminal. + 2. Or optionally you could format it as shown below such that the script can automatically import them itself. + * Create a .txt file that has all the tenant ID's for the tenants you wish to add to the whitelist, with each ID separated onto a newline; an example file with 4 tenant ID's to be added to the whitelist is below + * ![whitelist text file](Images/Deployment/07_1_fileFormat.png) -## Starting The Script - -There are 2 ways to deploy B2C: -### 1. Running the B2C deploy script from LTI deploy (Recommended) +## Customising names of created resources: -Follow the steps in [LTI deployment guide](https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/blob/consolidated_deploy_branch/docs/CONSOLIDATED_DEPLOY.md) and it will automatically direct you to the following steps. +* To ease and speed up the automated the script the names have been hard coded with default values; if you wish to customise these values you will find their definition at the top of the B2CDeployment.ps1 file. -### 2. Running the B2C deploy script manually (if you want to run only B2C deploy) +## IMPORTANT: AppInfo.csv -* Load Learn-LTI/Deployment into Windows File Explorer -* **Hold shift** and right click in the file explorer to launch the Expanded Context Menu - -| ![Expanded Context Menu](Images/01_ExpandedContextMenu.png) | -|---| -| Click "Open Powershell Window Here" to launch powershell with cd already set to Learn-Lti/Deployment | - -* Type ".\B2CCleanup.ps1" into the newly launched Powershell then press enter - * ![start script](Images/Deployment/00a_startScript.png) +* It is important to not lose this file, as it contains the ID's of the created applications and the tenant they were created in; required by the cleanup script to automatically remove them. After each run of the script we would recommend creating and storing a copy of this file in case in the future you wish to cleanup again. ## Step 0: Enter tenant names @@ -50,14 +40,17 @@ Follow the steps in [LTI deployment guide](https://github.com/UCL-MSc-Learn-LTI/ |---| | The launched tab should look similar to the above; please login using it and then switch back to the powershell | -### Creating the app and its secret +* After finishing logging in the script will continue to create and configure the AD app required for b2c access, within your AD tenant. -* Return to your powershell Window, and you will now be prompted to give names for:
1. The AD Application to be created
2. The AD Applications Secret to be created
We suggest using a sensible name, such as "b2c_AD_app" and "b2c_AD_app_secret" - * ![Input app and secret name](Images/Deployment/01c_appName.png) +### Step 2: Logging into the B2C Tenant -### Recording the secret value (important) -* Upon successfully creating the app and its secret; the script will now output some important values in green and then pause until you next press Enter.
It is strongly recommended now that you take a moment to **store somewhere safe the ID of the app and the value for the secret** that has just been created for it; as this **secret value will no longer be accessible again**.
After recording these values press enter to continue with the script. - * ![record the secret](Images/Deployment/01d_secret.png) +* After the apps finished creating, the AD has finished being configured and the script will now move on to configure your B2C Tenant. +* As before, your powershell will now prompt you that a pop-up window has launched in your browser and directing you to log in to your B2C tenant through it + * ![Login to B2C Prompt](Images/Deployment/02a_LoginPrompt.png) + +| ![Login to B2C Tenant](Images/Deployment/01a_LoginTenant1.png) | +|---| +| The launched tab should look similar to the above; please login using it and then switch back to the powershell | ## Step 2: Logging into the B2C tenant via your browser @@ -69,78 +62,130 @@ Follow the steps in [LTI deployment guide](https://github.com/UCL-MSc-Learn-LTI/ |---| | The launched tab should look similar to the above; please login using it and then switch back to the powershell | -## Step 3: Creating the B2C Web Application +* After logging in, the script will automatically create and configure the B2C Web App, Permission Management App, Identity Experience Framework App, and Proxy Identify Experience Framework App (steps 3-6 inclusive) -### Creating the webapp and its secret -* Return to your powershell Window, and you will now be prompted to give names for:
1. The B2C Web Application to be created
2. The B2C Web Applications Secret to be created
We suggest using a sensible name, such as "b2c_AD_webapp" and "b2c_AD_webapp_secret" - * ![name web app](Images/Deployment/03a_nameWebApp.png) -### Recording the secret value (important) -* Upon successfully creating the webapp and its secret; the script will now output some important values in green and then pause until you next press Enter.
It is strongly recommended now that you take a moment to **store somewhere safe the ID of the app and the value for the secret** that has just been created for it; as this **secret value will no longer be accessible again**.
After recording these values press enter to continue with the script. - * ![record webapp secret](Images/Deployment/03b_secret.png) -## Steps 4 & 5: Creating the Identity Experience Framework & Proxy Identity Experience Framework Applications -* No user input is required in these steps; simply wait for them to finish -## Step 6: Creating Permission Management Application -### Creating the Permission Management Application and its secret +## Step 7: Creating a whitelist for the tenants we wish to give access to +* You have 2 choices for how to create the whitelist of tenant id's you wish to give access to: + * Input '1' to import via a file containing the id's of each tenant + * Input '2' to input 1 by 1 +* The tenant ID's you are using should be in the format 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' where each x is an alphanumeric character. +* Important note: this includes the tenant ID of your own AD tenant that you are setting this up on; your own AD tenant is not added by default. +* If you receive any 400 bad request errors please click [here](#400-bad-request-error) -* Return to your powershell Window, and you will now be prompted to give names for:
1. The B2C Permission Management Application to be created
2. The 2C Permission Management Applications Secret to be created
We suggest using a sensible name, such as "b2c_AD_PMA" and "b2c_AD_PMA_secret" - * ![name the PMA](Images/Deployment/06a_namePMA.png) +### Choice 1: Inputting via text file (recommended for larger whitelists) +* After inputting '1' as your choice, you will now be prompted to input the path to the .txt file you created which contains the tenants you wish to add to your whitelist. The script will now automatically add these tenants to the whitelist. + * ![successful run of importing whitelist via txt file](Images/Deployment/07_1_successful.png) -### Recording the secret value (important) +### Choice 2: Inputting 1 by 1 to terminal (recommended for smaller whitelists) -* Upon successfully creating the permission management app and its secret; the script will now output some important values in green and then pause until you next press Enter.
It is strongly recommended now that you take a moment to **store somewhere safe the ID of the app and the value for the secret** that has just been created for it; as this **secret value will no longer be accessible again**.
After recording these values press enter to continue with the script. - * ![secret PMA value](Images/Deployment/06b_secret.png) +* ![inputting ID's](Images/Deployment/07_2_successful.png) + * After inputting '2' as your choice, you will now be prompted to input 1 tenant ID you wish to add to the whitelist + * After doing so, you will now be prompted to input another. + * This will continue untill you input 'n' which will end this loop. -## Step 7: Creating a whitelist for the tenants we wish to give access to -* You have 2 choices for how to create the whitelist of tenant id's you wish to give access to: - * Input '1' to import via a file where the id of each tenant is separated with a newline or a comma. You will then need to input the path to that file, e.g. "C:/documents/myTenantIDs.txt" - * Input '2' to input 1 by 1; in this case you copy/paste the tenant ID's 1 by 1 into the console until you have no more then input "no" to terminate the script. - * ![inputting ID's](Images/Deployment/07_successfulWhitelist.png) - * if at any point you see an error as shown below, you have input an ID that doesn't exist. Verify you typed it correctly and if so, verify with the tenant owner that they sent you the correct value. - * ![failure to get issuer claim](Images/Deployment/07_failWhitelist.png) ## Step 8: (Optional) linking facebook app ### Don't link Facebook App * If you do not have a facebook application to link, simply input 'n' when prompted to skip this step - * ![Don't link FB](Images/Deployment/07_noFB.png) + * ![Don't link FB](Images/Deployment/08_noFB.png) ### Link Facebook App -* If you do have a facebook application to link, input 'y' when prompted then input the ID of the Facebook application you would like to lin - * ![Do link FB](Images/Deployment/07_yesFB.png) - +* If you do have a facebook application to link, input 'y' when prompted then input the ID of the Facebook application followed by the secret value for the Facebook application you would like to link + * ![Do link FB](Images/Deployment/08_yesFB.png) -## Step 9 & 10: Creating and Generating Custom Policies from templates - -* No user input is required in these steps; simply wait for them to finish ## Step 11: Adding Signing and Encryption keys and AADAppSecret for the IEF Applications ### Input key duration * You will first be prompted to input how long you wish the created keys to be valid for before they expire - * ![key duration](Images/Deployment/10a_time.png) -* The script should then continue without requiring any further user inputs + * ![key duration](Images/Deployment/11_time.png) +* If your console returns a 403 bad request error, please click [here](#403-forbidden-error) + + + + +## IMPORTANT: Secret Values + +![Secret Values](Images/Deployment/13_secrets.png) +* After the script finishes running it will output some important values in green and then pause the script (ID and secret values for the created AD app, Permission Management App, and Web App). +* Take this moment to copy/paste those values into a file and store it **somewhere securely** as you may require those secret values again in the future and they will NOT be accessible again. + * Also, the Permission Management Applications ID and Secret Value are required for the cleanup script +* After taking a note of those values, press enter to finsih the b2c deployment script, and return to the LTI deployment main script. + + + + + + + +# Troubleshooting + +## Early terminations from unexpected exceptions + +* If the script terminates at any point due to an unexpected exception, please make an issue request on the github. +* Then, run cleanup.bat +* If the script got far enough it will have output in green the permission management applications ID and secret values which are required by the cleanup script to cleanup certain resources created in the b2c setup + * If these values are not output, the script did not get far enough to where it will require cleaning up those resources so when prompted simply input any value for the PMA secret value and id as they do not matter. + +## Step 7: + +### 400 bad request error +* If at any point you receive a 400 bad request error, a tenant with the given ID could not be found. Please check with the admin who gave you that ID that it is correct. + * ![400 bad request error for tenant ID](Images/Deployment/07_1_fail.png) +* You must then manually add that ID to the deployment on the portal, instructions for doing so can be found [here](#update-the-whitelist-after-deployment) + +### Update the whitelist after deployment + +1. Load the Azure Portal +2. Login to your B2C Tenant +3. Search for "Azure AD B2C", and click on it +4. Click on "Identity Experience Framework" under "Policies" +5. Click on "Custom Policies" if it is not already loaded +6. Search your custom policies for "B2C_1A_TrustFrameworkExtensions" then click on it +7. Click "download" to download the custom policy +8. After it has finished downloading, load the file in your preferred text editor +9. Search within the file for "ValidTokenIssuerPrefixes" and find its first apperance (the uncommented one), should be on line 35. +10. The whitelist is held within this field, with each login URL separated by a comma. + 1. If you wish to remove a tenant, simply find the URL for that tenant and remove it from the field (and its trailing comma) + 2. If you wish to add a new tenant, copy and run the below command into your console to get the login URL, then add a comma after the last element in the whitelist then paste that url into it. + 1. \$wlTenantID = "NEW_WL_TENANT_ID" + \$headers = New-Object "System.Collections.Generic.Dictionary\[[String],[String]]" + \$response = Invoke-RestMethod "https://login.microsoftonline.com/\$wlTenantID/v2.0/.well-known/openid-configuration" -Method 'GET' -Headers \$headers + \$issuer = \$response.issuer + Write-Host \$issuer +11. After making your changes, save the file. +12. Now return to the Azure Portal and click "Upload Custom Policy" +13. Select the B2C_1A_TrustFrameworkExtensions.xml file you have just updated +14. And click the checkbox saying "overwrite the custom policy if it already exists" +15. Then click upload. + + + +## Step 11: + +### 403 forbidden error -#### Troubleshoot PMA Admin Consent * This step may fail due to a race condition between the granting of admin-consent vs the requirement of its usage in this step; you will know this has occured if you see the error message shown below - * ![error admin-consent race](Images/Deployment/10b_error.png) + * ![error admin-consent race](Images/Deployment/11_error.png) * To solve this issue: * First you must login to your b2c tenant on the Azure Portal. If the b2c tenant is already your active directory in the portal you can skip this step. * ![Switch directory on portal](Images/Deployment/10taa_switchDirectory.png) @@ -151,22 +196,4 @@ Follow the steps in [LTI deployment guide](https://github.com/UCL-MSc-Learn-LTI/ * ![Application permissions page](Images/Deployment/10tb_ManuallyGrantAdminConsent.png) * After clicking on "Grant Admin Consent" the page should now say all permissions are granted * ![Application permissions page](Images/Deployment/10tc_FullyGranted.png) -* Now simply return to the script and press enter - * The script should then continue without requiring any further user inputs - - -## Step 12: Creating the AADAppSecret Key - -* No user input is required in this step; simply wait for it to finish -* Upon this steps completion the B2C setup is now complete and can be configured with Learn-LTI - - -# Important note: Keep the generated AppInfo.csv safe -* This contains the ID's of the created applications as well as the tenants they belong to; this is required by B2CCleanup.ps1 if you wish to automatically clean up the script at a later date you will need this file (or else you must manually delete those applications) - - - - - -# Trouble shooting -* [STEP 10: Error when getting the list of all custom policies in the tenant ](#troubleshoot-pma-admin-consent) +* Now simply return to the powershell, wait 10 seconds, and press enter to continue the script diff --git a/deployment/B2C_Docs/Images/01_ExpandedContextMenu.png b/deployment/B2C_Docs/Images/01_ExpandedContextMenu.png deleted file mode 100644 index c495173f7b21078c9774d97b0eebba54f8ce09ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 125695 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

;&VvdG_U2}a31Lyi{j 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

p@v1}q{~|ge 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 diff --git a/images/b2cmode.png b/images/b2cmode.png index 0cc4b759d17267c5a72f204c6f908f8ef9144017..32422b01ed9790efcbdfb6879b7c6c5e7ae6dbd1 100644 GIT binary patch literal 141631 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 literal 139389 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

-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 Xj{m&W-*@u>@K5))p;pPwryu?oPPXvs From 3e803c2893c5d3dea24a37deacd6fca367b20796 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Mon, 1 Aug 2022 16:01:04 +0100 Subject: [PATCH 180/285] Removed duplicate screenshot from B2C_Deployment.md --- deployment/B2C_Docs/B2C_Deployment.md | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/deployment/B2C_Docs/B2C_Deployment.md b/deployment/B2C_Docs/B2C_Deployment.md index 4c186d49..46f2c6f3 100644 --- a/deployment/B2C_Docs/B2C_Deployment.md +++ b/deployment/B2C_Docs/B2C_Deployment.md @@ -51,29 +51,9 @@ This document will explain the steps that contain user interaction and what is r | ![Login to B2C Tenant](Images/Deployment/01a_LoginTenant1.png) | |---| | The launched tab should look similar to the above; please login using it and then switch back to the powershell | - - -## Step 2: Logging into the B2C tenant via your browser - -* Your powershell will now prompt you that a pop-up window has launched in your browser and directing you to login to your B2C tenant through it - * ![login prompt](Images/Deployment/02a_LoginPrompt.png) - -| ![Login to AD Tenant](Images/Deployment/01a_LoginTenant1.png) | -|---| -| The launched tab should look similar to the above; please login using it and then switch back to the powershell | - * After logging in, the script will automatically create and configure the B2C Web App, Permission Management App, Identity Experience Framework App, and Proxy Identify Experience Framework App (steps 3-6 inclusive) - - - - - - - - - ## Step 7: Creating a whitelist for the tenants we wish to give access to * You have 2 choices for how to create the whitelist of tenant id's you wish to give access to: * Input '1' to import via a file containing the id's of each tenant From 869be6105ca8b700f959211e141ad7d2512dac9f Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Mon, 1 Aug 2022 16:09:54 +0100 Subject: [PATCH 181/285] Modified B2CDeployment.ps1 to explicitly mention the automatic steps --- deployment/B2CDeployment.ps1 | 2 +- deployment/B2C_Docs/B2C_Deployment.md | 12 ++++++++++-- .../B2C_Docs/Images/Deployment/13_secrets.png | Bin 27873 -> 32592 bytes 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 1770151d..5cf7248b 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -765,7 +765,7 @@ try{ CustomPolicyUpdateOrUpload "B2C_1A_PasswordReset" $customPolicies $access_token #endregionWebClientID - Write-Title "Important values for the created applications SAVE these" + Write-Title "B2C Step 13: Important values for the created applications SAVE these" Write-Color "green" "Please take a moment to make a note of the following ID's and protect the following client secret's; as you will not be able to access it again." Write-Color "green" "AD Tenant name is $ADTenantName" Write-Color "green" "B2C Tenant name is $B2cTenantName" diff --git a/deployment/B2C_Docs/B2C_Deployment.md b/deployment/B2C_Docs/B2C_Deployment.md index 46f2c6f3..866965e5 100644 --- a/deployment/B2C_Docs/B2C_Deployment.md +++ b/deployment/B2C_Docs/B2C_Deployment.md @@ -51,9 +51,12 @@ This document will explain the steps that contain user interaction and what is r | ![Login to B2C Tenant](Images/Deployment/01a_LoginTenant1.png) | |---| | The launched tab should look similar to the above; please login using it and then switch back to the powershell | -* After logging in, the script will automatically create and configure the B2C Web App, Permission Management App, Identity Experience Framework App, and Proxy Identify Experience Framework App (steps 3-6 inclusive) +## Steps 3-6 automatic setup (app creations on the b2c tenant): + +* The script will automatically create and configure the B2C Web App, Permission Management App, Identity Experience Framework App, and Proxy Identify Experience Framework App (steps 3-6 inclusive) + ## Step 7: Creating a whitelist for the tenants we wish to give access to * You have 2 choices for how to create the whitelist of tenant id's you wish to give access to: * Input '1' to import via a file containing the id's of each tenant @@ -90,7 +93,9 @@ This document will explain the steps that contain user interaction and what is r +## Steps 9 & 10 automatic setup (creating and formatting the custom policies) +* The creation and formatting of the custom policies will now be done automatically without requiring any further input ## Step 11: Adding Signing and Encryption keys and AADAppSecret for the IEF Applications @@ -100,9 +105,12 @@ This document will explain the steps that contain user interaction and what is r * If your console returns a 403 bad request error, please click [here](#403-forbidden-error) +## Step 12 automatic setup (uploading the custom policies) + +* The custom policies will now be uploaded automatically without requiring further input -## IMPORTANT: Secret Values +## Step 13: IMPORTANT - Store Secret Values ![Secret Values](Images/Deployment/13_secrets.png) * After the script finishes running it will output some important values in green and then pause the script (ID and secret values for the created AD app, Permission Management App, and Web App). diff --git a/deployment/B2C_Docs/Images/Deployment/13_secrets.png b/deployment/B2C_Docs/Images/Deployment/13_secrets.png index 6599cf769551289eafee672d061d9d7461c12da2..753b6f9829366514e967f77244f304c28dd7f11c 100644 GIT binary patch literal 32592 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%0DfK5Jc?iq}V? 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 From 1613861240bbd5681c0146ada36eb51d959112ce Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Mon, 1 Aug 2022 17:15:58 +0100 Subject: [PATCH 182/285] Added unhandled exceptions for if the az cli commands return empty to prompt cleanup --- deployment/B2CDeployment.ps1 | 45 ++++++++++++++++++++++++++++-------- 1 file changed, 36 insertions(+), 9 deletions(-) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 5cf7248b..26b78021 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -1,12 +1,12 @@ $ErrorActionPreference = "Stop" #region "values determining the names of the resources" -$MultiTenantAppName = "TZ_b2c_AD_app" -$MultiTenantClientSecretName = "TZ_b2c_AD_app_secret" -$B2cAppName = "TZ_b2c_AD_webapp" -$WebClientSecretName = "TZ_b2c_AD_webapp_secret" -$PermissionAppName = "TZ_b2c_AD_PMA" -$PermissionClientSecretName = "TZ_b2c_AD_PMA_secret" +$MultiTenantAppName = "DM2_b2c_AD_app" +$MultiTenantClientSecretName = "DM2_b2c_AD_app_secret" +$B2cAppName = "DM2_b2c_AD_webapp" +$WebClientSecretName = "DM2_b2c_AD_webapp_secret" +$PermissionAppName = "DM2_b2c_AD_PMA" +$PermissionClientSecretName = "DM2_b2c_AD_PMA_secret" #endregion #region "Helper Functions" @@ -28,6 +28,17 @@ function Write-Error([string]$Text) { Write-Host "Error!`n$Text" -ForegroundColor "red" -BackgroundColor "black" -NoNewline Write-Host "`n=============================================================" -ForegroundColor "red" -BackgroundColor "black" } + +#function for defensive programming, checking if the az cli command failed and returned nothing, then throwing an exception if this occurs +function checkAzCommandSuccess([string]$retVal, [string]$description){ + if(!$description){ + throw "No description specified"; + } + #if the returned value from the azure cli is empty, then the command failed so throw an exception to terminate the script + if(!$retVal){ + throw "Error occurred whilst trying to $description" + } +} #endregion #region Setup Logging @@ -89,6 +100,7 @@ try{ $MultiTenantAppID = (az ad app create --display-name $MultiTenantAppName --sign-in-audience AzureADandPersonalMicrosoftAccount --web-redirect-uris https://$B2cTenantName.b2clogin.com/$B2cTenantName.onmicrosoft.com/oauth2/authresp --optional-claims "@manifest.json" --query appId --output tsv --only-show-errors) "$MultiTenantAppID,$ADTenantName" | Out-File -FilePath $AppInfoCSVPath -Append Write-Log -Message "Created MultiTenant app with id $MultiTenantAppID in $ADTenantName" + checkAzCommandSuccess $MultiTenantAppID "create the MultiTenant AD application $MultiTenantAppName" # Create client secret Write-Host "Creating the client secret for $MultiTenantAppName" @@ -114,11 +126,13 @@ try{ $MultiTenantAppServicePrincipal = az ad sp create --id $MultiTenantAppID --only-show-errors Write-Log -Message "MultiTenantAppServicePrincipal value:`n$MultiTenantAppServicePrincipal" + checkAzCommandSuccess $MultiTenantAppServicePrincipal "create the service principal for the MultiTenant AD application $MultiTenantAppName" Write-Host "Granting permissions to the service principal for $MultiTenantAppName" Write-Log -Message "Granting permissions to the service principal for $MultiTenantAppName" $MultiTenantAppPermissionGrantInfo = az ad app permission grant --id $MultiTenantAppID --api 00000003-0000-0000-c000-000000000000 --scope "email profile" --only-show-errors Write-Log -Message "MultiTenantAppPermissionGrantInfo value:`n$MultiTenantAppPermissionGrantInfo" + checkAzCommandSuccess $MultiTenantAppPermissionGrantInfo "grant permissions to the Multitenant AD app $MultiTenantAppName's service principal" az ad app permission add --id $MultiTenantAppID --api 00000003-0000-0000-c000-000000000000 --api-permissions $emailPermission $profilePermission --only-show-errors Remove-Item manifest.json @@ -151,6 +165,7 @@ try{ $WebClientInfo = (az ad app credential reset --id $WebClientID --append --display-name $WebClientSecretName --years $WebClientSecretDuration --only-show-errors) | ConvertFrom-Json $WebClientSecret = $WebClientInfo.password Write-Log -Message "WebClientInfo value:`n$WebClientInfo" + checkAzCommandSuccess $WebClientInfo "create a secret for the b2c web app $b2cAppName" Write-Log -Message "Created secret $WebClientSecretName ($WebClientSecret) for $B2cAppName ($WebClientID)" @@ -164,11 +179,13 @@ try{ $B2cAppServicePrincipalInfo = az ad sp create --id $WebClientID --only-show-errors Write-Log -Message "B2cAppServicePrincipalInfo value:`n$B2cAppServicePrincipalInfo" + checkAzCommandSuccess $B2cAppServicePrincipalInfo "create a service principal for the b2c web app $b2cAppName" Write-Log -Message "Granting permissions to the service principal for $B2cAppName" Write-Host "Granting permissions to the service principal for $B2cAppName" $WebClientPermissionGrantingInfo = az ad app permission grant --id $WebClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors Write-Log -Message "WebClientPermissionGrantingInfo value:`n$WebClientPermissionGrantingInfo" + checkAzCommandSuccess $WebClientPermissionGrantingInfo "grant permissions to the b2c web app $b2cAppName's service principal" az ad app permission add --id $WebClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors # expose the b2c.read api @@ -211,11 +228,13 @@ try{ $IEFServicePrincipalInfo = az ad sp create --id $IEFClientID --only-show-errors Write-Log -Message "IEFServicePrincipalInfo value:`n$IEFServicePrincipalInfo" + checkAzCommandSuccess $IEFServicePrincipalInfo "create a service principal for the IEF app $IEFAppName" Write-Log -Message "Granting permissions to the service principal for $IEFAppName" Write-Host "Granting permissions to the service principal for $IEFAppName" $IEFPermissionGrantInfo = az ad app permission grant --id $IEFClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors Write-Log -Message "IEFPermissionGrantInfo value:`n$IEFPermissionGrantInfo" + checkAzCommandSuccess $IEFPermissionGrantInfo "grant permissions for the IEF app $IEFAppName's service principal" az ad app permission add --id $IEFClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors @@ -261,12 +280,14 @@ try{ $PIEFServicePrincipalInfo = az ad sp create --id $ProxyIEFClientID --only-show-errors 2>&1 Write-Log -Message "PIEFServicePrincipalInfo value:`n$PIEFServicePrincipalInfo" + checkAzCommandSuccess $PIEFServicePrincipalInfo "create a service principal for the Proxy IEF app $ProxyIEFAppName" Write-Host "Granting permissions to the service principal for $ProxyIEFAppName" Write-Log -Message "Granting permissions to the service principal for $ProxyIEFAppName" $PIEFPermissionGrantInfo = az ad app permission grant --id $ProxyIEFClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors Write-Log -Message "PIEFPermissionGrantInfo value:`n$PIEFPermissionGrantInfo" + checkAzCommandSuccess $PIEFPermissionGrantInfo "grant permissions for the Proxy IEF app $ProxyIEFAppName's service principal" az ad app permission add --id $ProxyIEFClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors az ad app permission grant --id $ProxyIEFClientID --api $IEFClientID --scope "user_impersonation" --only-show-errors > $null @@ -289,6 +310,7 @@ try{ $PermissionClientSecretInfo = (az ad app credential reset --id $PermissionClientID --append --display-name $PermissionClientSecretName --years $PermissionClientSecretDuration --only-show-errors) | ConvertFrom-Json $PermissionClientSecret = $PermissionClientSecretInfo.password Write-Log -Message "PermissionClientSecretInfo value:`n$PermissionClientSecretInfo" + checkAzCommandSuccess $PermissionClientSecretInfo "create a secret for the permission management app $PermissionAppName" Write-Log -Message "Created secret $PermissionClientSecretName ($PermissionClientSecret) for $PermissionAppName ($PermissionClientID)" @@ -304,11 +326,13 @@ try{ $PermissionClientServicePrincipalInfo = az ad sp create --id $PermissionClientID --only-show-errors 2>&1 Write-Log -Message "PermissionClientServicePrincipalInfo value:`n$PermissionClientServicePrincipalInfo" + checkAzCommandSuccess $PermissionClientServicePrincipalInfo "create the service principal for the permission management app $PermissionAppName" Write-Host "Granting permissions to the service principal for $PermissionAppName" Write-Log -Message "Granting permissions to the service principal for $PermissionAppName" $PermissionClientPermissionGrantInfo = az ad app permission grant --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors Write-Log -Message "PermissionClientPermissionGrantInfo value:`n$PermissionClientPermissionGrantInfo" + checkAzCommandSuccess $PermissionClientPermissionGrantInfo "grant permissions for the permission management app $PermissionAppName's service principal" az ad app permission add --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors az ad app permission add --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $keysetRWPermission $policyRWPermission --only-show-errors @@ -333,8 +357,11 @@ try{ # Input via a file if ($fileOrInputs -eq "1") { - $filePath = Read-Host "Please enter the path to the file containing the tenant ID's" - $tenantIDs = Get-Content $filePath + $filePath = "./NonExistantPath.txt" + while((Test-Path -Path $filePath) -eq $false){ + $filePath = Read-Host "Please enter the path to the file containing the tenant ID's" + } + $tenantIDs = Get-Content $filePath foreach ($wlTenantID in $tenantIDs) { @@ -788,7 +815,7 @@ try{ catch{ if($PermissionClientSecret){ #TODO - verify this works Write-Title "The script crashed, please make a note of the following values then run cleanup.bat; inserting these values when prompted for the b2c cleanup" - Write-Color "green" "AD Tenant name is $ADTenantName" + Write-Color "green" "B2C Tenant name is $B2cTenantName" Write-Color "green" "Client ID for $PermissionAppName`: $PermissionClientID" Write-Color "green" "Client secret for $PermissionAppName`: $PermissionClientSecret" Read-Host "Press enter when ready to continue after recording the client secret" From 34a03b79e42eb484104c0964dd2b38cc9448e17d Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Mon, 1 Aug 2022 17:16:35 +0100 Subject: [PATCH 183/285] using the correct b2c read link --- client/src/App.tsx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/client/src/App.tsx b/client/src/App.tsx index 53af4329..b0e50458 100644 --- a/client/src/App.tsx +++ b/client/src/App.tsx @@ -34,7 +34,11 @@ function App() { scopes: [ 'openid', 'profile', - 'https://' + process.env.REACT_APP_EDNA_B2C_TENANT! + '.onmicrosoft.com/api/b2c.read' + 'https://' + + process.env.REACT_APP_EDNA_B2C_TENANT! + + '.onmicrosoft.com/' + + process.env.REACT_APP_EDNA_B2C_CLIENT_ID + + '/b2c.read' ] }; } else { @@ -43,10 +47,12 @@ function App() { }; } + console.log('in app.tsx'); + console.log(request); return ( - + Date: Mon, 1 Aug 2022 17:39:14 +0100 Subject: [PATCH 184/285] pushing changes for the limited client install --- client/.env.development | 4 ++-- client/.env.production | 20 ++++++++++---------- deployment/Limited_Install_Client.ps1 | 2 +- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/client/.env.development b/client/.env.development index 0ee19953..a88229df 100644 --- a/client/.env.development +++ b/client/.env.development @@ -1,7 +1,7 @@ GENERATE_SOURCEMAP='false' -REACT_APP_EDNA_AUTH_CLIENT_ID='2dcdb504-34c3-4463-ab8f-33a5c6e285c3' +REACT_APP_EDNA_AUTH_CLIENT_ID='b396eb29-cbbe-4d5a-93dc-7f6e34f3b88f' REACT_APP_EDNA_B2C_TENANT='playltib2c' -REACT_APP_EDNA_B2C_CLIENT_ID='2dcdb504-34c3-4463-ab8f-33a5c6e285c3' +REACT_APP_EDNA_B2C_CLIENT_ID='b396eb29-cbbe-4d5a-93dc-7f6e34f3b88f' REACT_APP_EDNA_PLATFORM_SERVICE_URL='http://localhost:7075/api' REACT_APP_EDNA_USERS_SERVICE_URL='http://localhost:7075/api' REACT_APP_EDNA_LEARN_CONTENT='http://localhost:7074/api' diff --git a/client/.env.production b/client/.env.production index cc766c1d..8487fa8f 100644 --- a/client/.env.production +++ b/client/.env.production @@ -1,13 +1,13 @@ GENERATE_SOURCEMAP='false' -REACT_APP_EDNA_AUTH_CLIENT_ID='2dcdb504-34c3-4463-ab8f-33a5c6e285c3' +REACT_APP_EDNA_AUTH_CLIENT_ID='b396eb29-cbbe-4d5a-93dc-7f6e34f3b88f' REACT_APP_EDNA_B2C_TENANT='playltib2c' -REACT_APP_EDNA_B2C_CLIENT_ID='2dcdb504-34c3-4463-ab8f-33a5c6e285c3' -REACT_APP_EDNA_PLATFORM_SERVICE_URL='https://platforms-nuu2fohq4.azurewebsites.net/api' -REACT_APP_EDNA_USERS_SERVICE_URL='https://users-nuu2fohq4.azurewebsites.net/api' -REACT_APP_EDNA_LEARN_CONTENT='https://learncontent-nuu2fohq4.azurewebsites.net/api' -REACT_APP_EDNA_LINKS_SERVICE_URL='https://links-nuu2fohq4.azurewebsites.net/api' -REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL='https://assignments-nuu2fohq4.azurewebsites.net/api' +REACT_APP_EDNA_B2C_CLIENT_ID='b396eb29-cbbe-4d5a-93dc-7f6e34f3b88f' +REACT_APP_EDNA_PLATFORM_SERVICE_URL='https://platforms-75ykpx5cf.azurewebsites.net/api' +REACT_APP_EDNA_USERS_SERVICE_URL='https://users-75ykpx5cf.azurewebsites.net/api' +REACT_APP_EDNA_LEARN_CONTENT='https://learncontent-75ykpx5cf.azurewebsites.net/api' +REACT_APP_EDNA_LINKS_SERVICE_URL='https://links-75ykpx5cf.azurewebsites.net/api' +REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL='https://assignments-75ykpx5cf.azurewebsites.net/api' REACT_APP_EDNA_TENANT_ID='21510bb9-6414-46d0-9a07-1faf98f25937' -REACT_APP_EDNA_DEFAULT_SCOPE='api://0e8d21c9-a2a5-4fe6-83f3-7ce62c4f0e04/user_impersonation' -REACT_APP_EDNA_MAIN_URL='https://learnclientnuu2fohq4.z33.web.core.windows.net/' -REACT_APP_EDNA_AAD_CLIENT_ID='0e8d21c9-a2a5-4fe6-83f3-7ce62c4f0e04' +REACT_APP_EDNA_DEFAULT_SCOPE='api://a6849ec6-cf17-402d-90f0-106d04aa451e/user_impersonation' +REACT_APP_EDNA_MAIN_URL='https://learnclient75ykpx5cf.z33.web.core.windows.net/' +REACT_APP_EDNA_AAD_CLIENT_ID='a6849ec6-cf17-402d-90f0-106d04aa451e' diff --git a/deployment/Limited_Install_Client.ps1 b/deployment/Limited_Install_Client.ps1 index 0d45b339..6160d9ce 100644 --- a/deployment/Limited_Install_Client.ps1 +++ b/deployment/Limited_Install_Client.ps1 @@ -100,6 +100,6 @@ Write-Host 'STEP #12 - Installing the client' $ClientInstallParams = @{ SourceRoot="../client"; - StaticWebsiteStorageAccount="learnclientccwwld5ib" + StaticWebsiteStorageAccount="learnclient75ykpx5cf" } Install-Client @ClientInstallParams \ No newline at end of file From 720a3b314d890d58946755081c9a102b418ef002 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Mon, 1 Aug 2022 18:38:03 +0100 Subject: [PATCH 185/285] using redirect, and other critical changes --- client/src/Core/Auth/AppAuthConfig.ts | 2 +- .../Core/Auth/AxiosBasicAuthInitializer.tsx | 44 ++++++++++--------- deployment/azuredeployB2CTemplate.json | 10 ++--- 3 files changed, 29 insertions(+), 27 deletions(-) diff --git a/client/src/Core/Auth/AppAuthConfig.ts b/client/src/Core/Auth/AppAuthConfig.ts index 82d1fa5a..40b68cae 100644 --- a/client/src/Core/Auth/AppAuthConfig.ts +++ b/client/src/Core/Auth/AppAuthConfig.ts @@ -22,7 +22,7 @@ if (process.env.REACT_APP_EDNA_B2C_TENANT! != 'NA') { process.env.REACT_APP_EDNA_B2C_TENANT! + '.onmicrosoft.com/' + process.env.REACT_APP_EDNA_B2C_CLIENT_ID + - 'api/b2c.read' + '/b2c.read' ] }; authority = b2cPolicies.authorities.signIn.authority; diff --git a/client/src/Core/Auth/AxiosBasicAuthInitializer.tsx b/client/src/Core/Auth/AxiosBasicAuthInitializer.tsx index 248a1e3c..668ecbdf 100644 --- a/client/src/Core/Auth/AxiosBasicAuthInitializer.tsx +++ b/client/src/Core/Auth/AxiosBasicAuthInitializer.tsx @@ -6,36 +6,38 @@ import React, { PropsWithChildren, useState, useEffect } from 'react'; import axios from 'axios'; import { useMsal } from '@azure/msal-react'; -import { InteractionRequiredAuthError } from '@azure/msal-browser'; +import { InteractionRequiredAuthError, InteractionStatus } from '@azure/msal-browser'; import { request } from './AppAuthConfig'; export const AxiosBasicAuthInitializer = ({ children }: PropsWithChildren<{}>): JSX.Element => { - const { instance, accounts } = useMsal(); + const { instance, accounts, inProgress } = useMsal(); const [isTokenLoaded, setIsTokenLoaded] = useState(false); const [accessToken, setAccessToken] = useState(null); - console.log(accounts); // Called everytime time the LTI app is accessed to authenticate the user before allowing access. request.account = accounts[0]; // TODO is this the right thing to do? useEffect(() => { - instance - .acquireTokenSilent(request) - .then(tokenObj => { - axios.defaults.headers.common = { Authorization: `bearer ${tokenObj.accessToken}` }; - setAccessToken(tokenObj.accessToken); - setIsTokenLoaded(true); - }) - .catch(error => { - // acquireTokenSilent can fail for a number of reasons, fallback to interaction - if (error instanceof InteractionRequiredAuthError) { - instance.acquireTokenPopup(request).then(response => { - setAccessToken(response.accessToken); - return response.accessToken; - }); - } - }); - axios.defaults.validateStatus = () => true; - }, []); + console.log(request); + if (!isTokenLoaded && inProgress === InteractionStatus.None) { + instance + .acquireTokenSilent(request) + .then(tokenObj => { + console.log(tokenObj); + axios.defaults.headers.common = { Authorization: `bearer ${tokenObj.accessToken}` }; + setAccessToken(tokenObj.accessToken); + setIsTokenLoaded(true); + }) + .catch(error => { + console.log('silent failed'); + console.log(error); + // acquireTokenSilent can fail for a number of reasons, fallback to interaction + if (error instanceof InteractionRequiredAuthError) { + instance.acquireTokenRedirect(request); + } + }); + axios.defaults.validateStatus = () => true; + } + }, [instance, accounts, inProgress, isTokenLoaded]); // Check if user has successfully been authenticated and load children(Children are basically anything that // is between the open and closing tag of this component), otherwise return null. diff --git a/deployment/azuredeployB2CTemplate.json b/deployment/azuredeployB2CTemplate.json index baddc753..bca7feb7 100644 --- a/deployment/azuredeployB2CTemplate.json +++ b/deployment/azuredeployB2CTemplate.json @@ -238,7 +238,7 @@ "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('users' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", "WEBSITE_RUN_FROM_PACKAGE": "1", - "ValidAudience": "[toLower(concat('' , parameters('appRegistrationClientId')))]", + "ValidAudience": "[toLower(concat(',' , parameters('appRegistrationClientId')))]", "ADConfigurationUrl": "", "B2CConfigurationUrl": "" } @@ -266,7 +266,7 @@ "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('assignments' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", "WEBSITE_RUN_FROM_PACKAGE": "1", - "ValidAudience": "[toLower(concat('' , parameters('appRegistrationClientId')))]", + "ValidAudience": "[toLower(concat(',' , parameters('appRegistrationClientId')))]", "ADConfigurationUrl": "", "B2CConfigurationUrl": "" } @@ -294,7 +294,7 @@ "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('platforms' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", "WEBSITE_RUN_FROM_PACKAGE": "1", - "ValidAudience": "[toLower(concat('' , parameters('appRegistrationClientId')))]", + "ValidAudience": "[toLower(concat(',' , parameters('appRegistrationClientId')))]", "ADConfigurationUrl": "", "B2CConfigurationUrl": "" } @@ -320,7 +320,7 @@ "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('links' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", "WEBSITE_RUN_FROM_PACKAGE": "1", - "ValidAudience": "[toLower(concat('' , parameters('appRegistrationClientId')))]", + "ValidAudience": "[toLower(concat(',' , parameters('appRegistrationClientId')))]", "ADConfigurationUrl": "", "B2CConfigurationUrl": "" } @@ -346,7 +346,7 @@ "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('learncontent' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", "WEBSITE_RUN_FROM_PACKAGE": "1", - "ValidAudience": "[toLower(concat('' , parameters('appRegistrationClientId')))]", + "ValidAudience": "[toLower(concat(',' , parameters('appRegistrationClientId')))]", "ADConfigurationUrl": "", "B2CConfigurationUrl": "" } From 610d28d0b8e0095ffe38e4ddd274eb12cb2fbb54 Mon Sep 17 00:00:00 2001 From: danielmusselwhite <56388919+danielmusselwhite@users.noreply.github.com> Date: Tue, 2 Aug 2022 16:46:38 +0100 Subject: [PATCH 186/285] Update DEPLOYMENT_GUIDE.md --- docs/DEPLOYMENT_GUIDE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/DEPLOYMENT_GUIDE.md b/docs/DEPLOYMENT_GUIDE.md index 87a7da07..d36bcb93 100644 --- a/docs/DEPLOYMENT_GUIDE.md +++ b/docs/DEPLOYMENT_GUIDE.md @@ -52,7 +52,7 @@ Type in 'ad' for AD mode of authentication which will direct you towards 'Deploy Type in 'b2c' for B2C mode of authentication. ![b2cmode.png](/images/b2cmode.png) -Go to the [B2C setup](https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/blob/main/deployment/B2C_Docs/B2C_Deployment.md) for B2C deployment. +**IMPORTANT: If you choose B2C, go to the [B2C setup documentation guide](https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/blob/all-test1/deployment/B2C_Docs/B2C_Deployment.md) for instructions on how to complete B2C deployment.** # Deploy to Azure Subscription using the script From 8b51cf0fd2b41107793f89a2339dfbf53d57fcf2 Mon Sep 17 00:00:00 2001 From: Sundram Goyal Date: Tue, 2 Aug 2022 17:16:47 +0100 Subject: [PATCH 187/285] cleanup doc update --- docs/TROUBLESHOOTING.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/docs/TROUBLESHOOTING.md b/docs/TROUBLESHOOTING.md index e6767f5d..20457cb8 100644 --- a/docs/TROUBLESHOOTING.md +++ b/docs/TROUBLESHOOTING.md @@ -32,6 +32,14 @@ To begin, you will need: To remove the services simply run the [cleanup.bat](https://github.com/microsoft/Learn-LTI/blob/main/deployment/cleanup.bat) script located in the Deployment folder. This will run the [Cleanup.ps1](https://github.com/microsoft/Learn-LTI/blob/main/deployment/Cleanup.ps1) script which will remove all the deployed resources for the Learn LTI Application from your Azure Subscription. +### Optional : For B2C Users + +By running [cleanup.bat](https://github.com/microsoft/Learn-LTI/blob/main/deployment/cleanup.bat), if you have B2C authentication, the script will ask for this to remove the B2C tenant as well as shown below: +![b2cclean.png](/images/b2cclean.png) + +After this step, you can follow this [guide](https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/blob/consolidated_deploy_branch/deployment/B2C_Docs/B2C_Cleanup.md) to remove B2C tenant from your app. + + To Manually remove resources simply remove the Microsoft Learn LTI resource group and Microsoft Learn LTI Application Registration - ResourceGroupName = "MSLearnLTI" @@ -41,10 +49,6 @@ If you have changed the name of the Resource Group or AppName simply replace the Ensure you [purge your keyvault]( https://github.com/microsoft/Learn-LTI/blob/main/docs/TROUBLESHOOTING.md#purging-key-vaults) before running the setup script again -**Note:** By running [cleanup.bat](https://github.com/microsoft/Learn-LTI/blob/main/deployment/cleanup.bat), if you have B2C authentication, the script will ask for this to remove the B2C tenant as well as shown below: -![b2cclean.png](/images/b2cclean.png) - -After this step, you can follow this [guide](https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/blob/consolidated_deploy_branch/deployment/B2C_Docs/B2C_Cleanup.md) to remove B2C tenant from your app. ## Check the Failed Deployment status and output From 38b259ebb4e6b741a89d7bb0166c0020cf38939d Mon Sep 17 00:00:00 2001 From: Sundram Goyal Date: Tue, 2 Aug 2022 17:25:30 +0100 Subject: [PATCH 188/285] asas --- docs/TROUBLESHOOTING.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/TROUBLESHOOTING.md b/docs/TROUBLESHOOTING.md index 20457cb8..327d0ff2 100644 --- a/docs/TROUBLESHOOTING.md +++ b/docs/TROUBLESHOOTING.md @@ -39,7 +39,6 @@ By running [cleanup.bat](https://github.com/microsoft/Learn-LTI/blob/main/deploy After this step, you can follow this [guide](https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/blob/consolidated_deploy_branch/deployment/B2C_Docs/B2C_Cleanup.md) to remove B2C tenant from your app. - To Manually remove resources simply remove the Microsoft Learn LTI resource group and Microsoft Learn LTI Application Registration - ResourceGroupName = "MSLearnLTI" From c7a30d59b6bbf6595338da5a15a56381c2512d2e Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Tue, 2 Aug 2022 17:39:13 +0100 Subject: [PATCH 189/285] updated cleanup guide in troubleshooting.md --- docs/DEPLOYMENT_GUIDE.md | 4 ++++ docs/TROUBLESHOOTING.md | 12 +++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/docs/DEPLOYMENT_GUIDE.md b/docs/DEPLOYMENT_GUIDE.md index d36bcb93..4a7e2c23 100644 --- a/docs/DEPLOYMENT_GUIDE.md +++ b/docs/DEPLOYMENT_GUIDE.md @@ -47,9 +47,13 @@ The script will ask you to choose 'Active Directory',i.e. AD mode or 'Business t B2C Mode is recommended due to it being possible to set it up for either single-tenant and multi-tenant access; whilst AD mode is less extensible and only supports single-tenant access. +## AD Mode setup + Type in 'ad' for AD mode of authentication which will direct you towards 'Deploy to Azure Subscription using the script'. ![admode.png](/images/admode.png) +## B2C Mode setup + Type in 'b2c' for B2C mode of authentication. ![b2cmode.png](/images/b2cmode.png) **IMPORTANT: If you choose B2C, go to the [B2C setup documentation guide](https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/blob/all-test1/deployment/B2C_Docs/B2C_Deployment.md) for instructions on how to complete B2C deployment.** diff --git a/docs/TROUBLESHOOTING.md b/docs/TROUBLESHOOTING.md index 327d0ff2..8983ad45 100644 --- a/docs/TROUBLESHOOTING.md +++ b/docs/TROUBLESHOOTING.md @@ -32,12 +32,18 @@ To begin, you will need: To remove the services simply run the [cleanup.bat](https://github.com/microsoft/Learn-LTI/blob/main/deployment/cleanup.bat) script located in the Deployment folder. This will run the [Cleanup.ps1](https://github.com/microsoft/Learn-LTI/blob/main/deployment/Cleanup.ps1) script which will remove all the deployed resources for the Learn LTI Application from your Azure Subscription. -### Optional : For B2C Users -By running [cleanup.bat](https://github.com/microsoft/Learn-LTI/blob/main/deployment/cleanup.bat), if you have B2C authentication, the script will ask for this to remove the B2C tenant as well as shown below: +### (Optional) Cleaning up B2C setup: + + +When running [cleanup.bat](https://github.com/microsoft/Learn-LTI/blob/main/deployment/cleanup.bat), you will be prompted to answer whether or not you have a b2c tenant to cleanup. ![b2cclean.png](/images/b2cclean.png) +* If you chose 'b2c' mode during the deployment, then; when prompted if you have a b2c tenant to cleanup, select 'y' + * After selecting 'y' the script will now run the b2c cleanup, please follow this [guide](https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/blob/consolidated_deploy_branch/deployment/B2C_Docs/B2C_Cleanup.md) for more information on how to cleanup the B2C tenant. +* If you chose 'ad' mode during the deployment, then; when prompted if you have a b2c tenant to cleanup, select 'n' to skip this step + -After this step, you can follow this [guide](https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/blob/consolidated_deploy_branch/deployment/B2C_Docs/B2C_Cleanup.md) to remove B2C tenant from your app. +### Important Cleanup Notes To Manually remove resources simply remove the Microsoft Learn LTI resource group and Microsoft Learn LTI Application Registration From a4f509023c57f2c4dc49d1f6afd828410f1d9632 Mon Sep 17 00:00:00 2001 From: Tianchen Zhang Date: Wed, 3 Aug 2022 00:08:55 +0100 Subject: [PATCH 190/285] cleanup debug output and todos --- client/src/App.tsx | 2 -- client/src/Core/Auth/AppAuthConfig.ts | 1 - client/src/Core/Auth/AxiosBasicAuthInitializer.tsx | 4 +--- deployment/.vscode/settings.json | 3 --- deployment/B2CDeployment.ps1 | 3 +-- deployment/Deploy.ps1 | 8 ++------ deployment/Limited-Install-Deploy.ps1 | 7 ------- deployment/test_text.txt | 2 -- 8 files changed, 4 insertions(+), 26 deletions(-) delete mode 100644 deployment/.vscode/settings.json delete mode 100644 deployment/test_text.txt diff --git a/client/src/App.tsx b/client/src/App.tsx index b0e50458..436a1dca 100644 --- a/client/src/App.tsx +++ b/client/src/App.tsx @@ -47,8 +47,6 @@ function App() { }; } - console.log('in app.tsx'); - console.log(request); return ( diff --git a/client/src/Core/Auth/AppAuthConfig.ts b/client/src/Core/Auth/AppAuthConfig.ts index 40b68cae..983ce256 100644 --- a/client/src/Core/Auth/AppAuthConfig.ts +++ b/client/src/Core/Auth/AppAuthConfig.ts @@ -13,7 +13,6 @@ export let request; let authority; // Swap out needed B2C vs AD options if (process.env.REACT_APP_EDNA_B2C_TENANT! != 'NA') { - console.log('In B2C mode'); // TODO remove in final version request = { scopes: [ 'openid', diff --git a/client/src/Core/Auth/AxiosBasicAuthInitializer.tsx b/client/src/Core/Auth/AxiosBasicAuthInitializer.tsx index 668ecbdf..cc3fd640 100644 --- a/client/src/Core/Auth/AxiosBasicAuthInitializer.tsx +++ b/client/src/Core/Auth/AxiosBasicAuthInitializer.tsx @@ -15,14 +15,12 @@ export const AxiosBasicAuthInitializer = ({ children }: PropsWithChildren<{}>): const [accessToken, setAccessToken] = useState(null); // Called everytime time the LTI app is accessed to authenticate the user before allowing access. - request.account = accounts[0]; // TODO is this the right thing to do? + request.account = accounts[0]; useEffect(() => { - console.log(request); if (!isTokenLoaded && inProgress === InteractionStatus.None) { instance .acquireTokenSilent(request) .then(tokenObj => { - console.log(tokenObj); axios.defaults.headers.common = { Authorization: `bearer ${tokenObj.accessToken}` }; setAccessToken(tokenObj.accessToken); setIsTokenLoaded(true); diff --git a/deployment/.vscode/settings.json b/deployment/.vscode/settings.json deleted file mode 100644 index d09a50ca..00000000 --- a/deployment/.vscode/settings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "svg.preview.background": "transparent" -} \ No newline at end of file diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 26b78021..f1441d5a 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -346,7 +346,6 @@ try{ Write-Title "B2C STEP 7: Creating a whitelist for the tenants we wish to give access to" Write-Host "Important - if no tenants are whitelisted; nobody will be able to access the AD" - #TODO - make it a file $fileOrInputs="" while($fileOrInputs -ne "1" -and $fileOrInputs -ne "2") { @@ -813,7 +812,7 @@ try{ return $ADTenantName, $B2cTenantName, $WebClientID, $WebClientSecret, $B2cTenantName, $ObjectId } catch{ - if($PermissionClientSecret){ #TODO - verify this works + if($PermissionClientSecret){ Write-Title "The script crashed, please make a note of the following values then run cleanup.bat; inserting these values when prompted for the b2c cleanup" Write-Color "green" "B2C Tenant name is $B2cTenantName" Write-Color "green" "Client ID for $PermissionAppName`: $PermissionClientID" diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index f2be1889..db499bc2 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -62,7 +62,7 @@ process { Write-Host '|______|______/_/ \_\_| \_\_| \_| |______|_| |_____|' Write-Host '' Write-Host '' - #endregion | Set-Content -path (".\test_text.txt") + #endregion #region Setup Logging . .\Write-Log.ps1 @@ -101,14 +101,12 @@ process { $b2c_tenant_name = "'NA'" if($b2cOrAD -eq "b2c"){ Write-Title "B2C Step #0: Running the B2C Setup Script" - # TODO - verify these values are correct e.g. are we returning the correct values or should we return something else? - $results = (& ".\B2CDeployment.ps1" $ExecutionStartTime) # TODO - verify that this can run this multiplatform as it only works on windows; may put mac and windows commands in a try catch + $results = (& ".\B2CDeployment.ps1" $ExecutionStartTime) if($results[-1] -eq -1){ throw "B2CDeployment.ps1 failed" } Write-Log -Message "Returned from the B2C setup script, continuing with LTI deployment" - # TODO - indexing from -1 etc. because it seems to return meaningless values before the final 3 which we actually want; need to work out why and perhaps fix if it is deemed an issue $AD_Tenant_Name = $results[-6] # tenant name of the AD server $b2c_tenant_name = $results[-5] #b2c tenant name $REACT_APP_EDNA_B2C_CLIENT_ID = $results[-4] #webclient ID @@ -123,8 +121,6 @@ process { #Updating function apps's settings - #$B2C_APP_CLIENT_ID_IDENTIFIER = "0cd1d1d6-a7aa-41e2-b569-1ca211147973" # TODO remove hardcode - #$AD_APP_CLIENT_ID_IDENTIFIER = "cb508fc8-6a5f-49b1-b688-dac065ba59e4" # TODO remove hardcode $OPENID_B2C_CONFIG_URL_IDENTIFIER = "https://${b2c_tenant_name}.b2clogin.com/${b2c_tenant_name}.onmicrosoft.com/${policy_name}/v2.0/.well-known/openid-configuration" $OPENID_AD_CONFIG_URL_IDENTIFIER = "https://login.microsoft.com/${AD_Tenant_Name}.onmicrosoft.com/v2.0/.well-known/openid-configuration" diff --git a/deployment/Limited-Install-Deploy.ps1 b/deployment/Limited-Install-Deploy.ps1 index bccf0af6..3ac0face 100644 --- a/deployment/Limited-Install-Deploy.ps1 +++ b/deployment/Limited-Install-Deploy.ps1 @@ -216,13 +216,6 @@ process { } #endregion - - - - - - - #region Provision Resources inside Resource Group on Azure using ARM template Write-Title 'STEP #5 - Creating Resources in Azure' diff --git a/deployment/test_text.txt b/deployment/test_text.txt deleted file mode 100644 index 42f8a8cd..00000000 --- a/deployment/test_text.txt +++ /dev/null @@ -1,2 +0,0 @@ -B2C client id -B2C config url From fb800f4de167b0054cae73d0e24be561fa403e75 Mon Sep 17 00:00:00 2001 From: Tianchen Zhang Date: Wed, 3 Aug 2022 00:34:26 +0100 Subject: [PATCH 191/285] replace hardcoding resource group and app names into default ones --- deployment/B2CDeployment.ps1 | 12 ++++++------ deployment/Deploy.ps1 | 4 ++-- deployment/Limited-Install-Deploy.ps1 | 8 ++------ 3 files changed, 10 insertions(+), 14 deletions(-) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index f1441d5a..bc41b249 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -1,12 +1,12 @@ $ErrorActionPreference = "Stop" #region "values determining the names of the resources" -$MultiTenantAppName = "DM2_b2c_AD_app" -$MultiTenantClientSecretName = "DM2_b2c_AD_app_secret" -$B2cAppName = "DM2_b2c_AD_webapp" -$WebClientSecretName = "DM2_b2c_AD_webapp_secret" -$PermissionAppName = "DM2_b2c_AD_PMA" -$PermissionClientSecretName = "DM2_b2c_AD_PMA_secret" +$MultiTenantAppName = "b2c_AD_app" +$MultiTenantClientSecretName = "b2c_AD_app_secret" +$B2cAppName = "b2c_AD_webapp" +$WebClientSecretName = "b2c_AD_webapp_secret" +$PermissionAppName = "b2c_AD_PMA" +$PermissionClientSecretName = "b2c_AD_PMA_secret" #endregion #region "Helper Functions" diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index db499bc2..2718afe6 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "RB1_all_MSLearnLti", - [string]$AppName = "RB1_all_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "MSLearnLti", + [string]$AppName = "MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null diff --git a/deployment/Limited-Install-Deploy.ps1 b/deployment/Limited-Install-Deploy.ps1 index 3ac0face..e0028925 100644 --- a/deployment/Limited-Install-Deploy.ps1 +++ b/deployment/Limited-Install-Deploy.ps1 @@ -13,8 +13,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "TZ_policy_validation1", - [string]$AppName = "TZ_policy_val1_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "MSLearnLti", + [string]$AppName = "MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null @@ -33,10 +33,6 @@ process { ((Get-Content -path ".\azuredeployTemplate.json" -Raw) -replace '', ("'"+$uniqueIdentifier+"'")) | Set-Content -path (".\azuredeploy.json") #endregion - #application ID and uri - $clientId = "cb508fc8-6a5f-49b1-b688-dac065ba59e4" - $apiURI = "api://cb508fc8-6a5f-49b1-b688-dac065ba59e4" - #region Show Learn LTI Banner Write-Host '' Write-Host ' _ ______ _____ _ _ _ _______ _____ ' From 75f8941a9fd81a069aa8792e177a72de95cc54b6 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Wed, 3 Aug 2022 16:49:29 +0100 Subject: [PATCH 192/285] Modified code to support custom domains for AD tenant and pass AD tenant from deploy.ps1 to b2cDeployment.ps1 --- deployment/B2CDeployment.ps1 | 53 ++++---- deployment/B2C_Docs/B2C_Deployment.md | 1 + deployment/Cleanup.ps1 | 4 +- .../B2C_1A_PasswordReset.xml | 4 +- .../B2C_1A_ProfileEdit.xml | 4 +- .../B2C_1A_TrustFrameworkBase.xml | 4 +- .../B2C_1A_TrustFrameworkExtensions.xml | 4 +- .../B2C_1A_TrustFrameworkLocalization.xml | 4 +- .../CustomPolicyTemplates/B2C_1A_signin.xml | 4 +- .../B2C_1A_signup_signin.xml | 4 +- deployment/Deploy.ps1 | 114 ++++++++++-------- 11 files changed, 106 insertions(+), 94 deletions(-) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index bc41b249..443e858d 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -70,13 +70,12 @@ try{ #endregion #region "B2C STEP 1: Create Active Directory application" - $B2cTenantName = Read-Host "Please enter your B2C tenant name" - $ADTenantName = Read-Host "Please enter your AD tenant name" - Write-Log -Message "User Entered B2C Tenant Name: $B2cTenantName`nAD Tenant Name: $ADTenantName" - Write-Title "B2C STEP 1: Create AD application" - Write-Host "Please login to $ADTenantName via the pop-up window that has launched in your browser" - az login --tenant "$ADTenantName.onmicrosoft.com" --allow-no-subscriptions --only-show-errors > $null + Write-Host "Please login to your AD tenant for this subscription via the pop-up window that has launched in your browser" + $ADTenantId = $args[1] + az login --tenant $ADTenantId --allow-no-subscriptions --only-show-errors > $null + $ADTenantNameFull = az rest --method get --url https://graph.microsoft.com/v1.0/domains --query 'value[?isDefault].id' -o tsv + # $MultiTenantAppName = Read-Host "Please give a name for the AD application to be created" $ADAppManifest = "{ `"idToken`": [ @@ -97,9 +96,9 @@ try{ `"saml2Token`": [] }" Out-File -FilePath "manifest.json" -InputObject $ADAppManifest - $MultiTenantAppID = (az ad app create --display-name $MultiTenantAppName --sign-in-audience AzureADandPersonalMicrosoftAccount --web-redirect-uris https://$B2cTenantName.b2clogin.com/$B2cTenantName.onmicrosoft.com/oauth2/authresp --optional-claims "@manifest.json" --query appId --output tsv --only-show-errors) - "$MultiTenantAppID,$ADTenantName" | Out-File -FilePath $AppInfoCSVPath -Append - Write-Log -Message "Created MultiTenant app with id $MultiTenantAppID in $ADTenantName" + $MultiTenantAppID = (az ad app create --display-name $MultiTenantAppName --sign-in-audience AzureADandPersonalMicrosoftAccount --web-redirect-uris https://$B2cTenantName.b2clogin.com/$B2cTenantNameFull/oauth2/authresp --optional-claims "@manifest.json" --query appId --output tsv --only-show-errors) + "$MultiTenantAppID,$ADTenantNameFull" | Out-File -FilePath $AppInfoCSVPath -Append + Write-Log -Message "Created MultiTenant app with id $MultiTenantAppID in $ADTenantNameFull" checkAzCommandSuccess $MultiTenantAppID "create the MultiTenant AD application $MultiTenantAppName" # Create client secret @@ -140,9 +139,13 @@ try{ #region "B2C STEP 2: login" + $B2cTenantName = Read-Host "Please enter your B2C tenant ID" + Write-Log -Message "User Entered B2C Tenant Name: $B2cTenantID" Write-Title "B2C STEP 2: Logging into the B2C Tenant" Write-Host "Please login to $B2cTenantName via the pop-up window that has launched in your browser" - az login --tenant "$B2cTenantName.onmicrosoft.com" --allow-no-subscriptions --only-show-errors > $null + az login --tenant $B2CTenantID --allow-no-subscriptions --only-show-errors > $null + $B2cTenantNameFull = az rest --method get --url https://graph.microsoft.com/v1.0/domains --query 'value[?isDefault].id' -o tsv + $B2cTenantName = $B2cTenantNameFull.split('.')[0] #endregion @@ -152,7 +155,7 @@ try{ $appinfo = (az ad app create --display-name $B2cAppName --sign-in-audience AzureADandPersonalMicrosoftAccount --web-redirect-uris https://jwt.ms --enable-access-token-issuance true --enable-id-token-issuance true --only-show-errors) | ConvertFrom-Json $WebClientID = $appinfo.appId $ObjectId = $appinfo.id - Write-Log -Message "Created web app with id $WebClientID in $B2cTenantName" + Write-Log -Message "Created web app with id $WebClientID in $B2cTenantNameFull" "$WebClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append @@ -191,7 +194,7 @@ try{ # expose the b2c.read api Write-Host "Exposing the b2c.read API" Write-Log -Message "Exposing the b2c.read API" - az ad app update --id $WebClientID --identifier-uris "https://$B2cTenantName.onmicrosoft.com/$WebClientID" --only-show-errors + az ad app update --id $WebClientID --identifier-uris "https://$B2cTenantNameFull/$WebClientID" --only-show-errors $WebAppInfo = (az ad app show --id $WebClientID --only-show-errors | ConvertFrom-Json) $WebAppApiInfo = $WebAppInfo.api $WebScopeGUID = [guid]::NewGuid() @@ -217,9 +220,9 @@ try{ #region "B2C STEP 4: Create IdentityExperienceFramework app" Write-Title "B2C STEP 4: Creating the Identity Experience Framework application" $IEFAppName = "IdentityExperienceFramework" - $IEFAppInfo = (az ad app create --display-name $IEFAppName --sign-in-audience AzureADMyOrg --web-redirect-uris https://$B2cTenantName.b2clogin.com/$B2cTenantName.onmicrosoft.com --only-show-errors) | ConvertFrom-Json + $IEFAppInfo = (az ad app create --display-name $IEFAppName --sign-in-audience AzureADMyOrg --web-redirect-uris https://$B2cTenantName.b2clogin.com/$B2cTenantNameFull --only-show-errors) | ConvertFrom-Json $IEFClientID = $IEFAppInfo.appId - Write-Log -Message "Created IEF app with id $IEFClientID in $B2cTenantName" + Write-Log -Message "Created IEF app with id $IEFClientID in $B2cTenantNameFull" "$IEFClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append # set permissions for the IEF app @@ -241,7 +244,7 @@ try{ # expose the user_impersonation API Write-Host "Exposing the user_impersonation API" Write-Log -Message "Exposing the user_impersonation API" - az ad app update --id $IEFClientID --identifier-uris "https://$B2cTenantName.onmicrosoft.com/$IEFClientID" --only-show-errors + az ad app update --id $IEFClientID --identifier-uris "https://$B2cTenantNameFull/$IEFClientID" --only-show-errors $IEFAppInfo = (az ad app show --id $IEFClientID --only-show-errors | ConvertFrom-Json) $IEFAppApiInfo = $IEFAppInfo.api $IEFScopeGUID = [guid]::NewGuid() @@ -272,7 +275,7 @@ try{ $ProxyIEFAppName = "ProxyIdentityExperienceFramework" $ProxyIEFAppInfo = (az ad app create --display-name $ProxyIEFAppName --sign-in-audience AzureADMyOrg --public-client-redirect-uris myapp://auth --is-fallback-public-client true --only-show-errors) | ConvertFrom-Json $ProxyIEFClientID = $ProxyIEFAppInfo.appId - Write-Log -Message "Created Proxy IEF app with id $ProxyIEFClientID in $B2cTenantName" + Write-Log -Message "Created Proxy IEF app with id $ProxyIEFClientID in $B2cTenantNameFull" "$ProxyIEFClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append Write-Host "Granting permissions to the Proxy IEF application" @@ -298,7 +301,7 @@ try{ Write-Title "B2C STEP 6: Creating Permission Management application" # $PermissionAppName = Read-Host "Please give a name for the permission management application to be created" $PermissionClientID = (az ad app create --display-name $PermissionAppName --sign-in-audience AzureADMyOrg --query appId --output tsv --only-show-errors) - Write-Log -Message "Created Permission Management app with id $PermissionClientID in $B2cTenantName" + Write-Log -Message "Created Permission Management app with id $PermissionClientID in $B2cTenantNameFull" "$PermissionClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append # create client secret @@ -445,7 +448,7 @@ try{ Get-ChildItem ".\CustomPolicy\" | Foreach-Object { #ignore the gitkeep if($_.Name -ne ".gitkeep"){ - ((Get-Content -path $_.FullName -Raw) -replace '<>', $B2cTenantName) | Set-Content -path (".\CustomPolicy\"+$_.Name) + ((Get-Content -path $_.FullName -Raw) -replace '<>', $B2cTenantNameFull) | Set-Content -path (".\CustomPolicy\"+$_.Name) ((Get-Content -path $_.FullName -Raw) -replace '<>', $ProxyIEFClientID) | Set-Content -path (".\CustomPolicy\"+$_.Name) @@ -500,8 +503,8 @@ try{ Write-Log -Message "body = client_id=$PermissionClientID&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&client_secret=$PermissionClientSecret&grant_type=client_credentials" $body = "client_id=$PermissionClientID&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&client_secret=$PermissionClientSecret&grant_type=client_credentials" - Write-Log -Message "http request url = https://login.microsoftonline.com/$B2cTenantName.onmicrosoft.com/oauth2/v2.0/token" - $response = Invoke-RestMethod "https://login.microsoftonline.com/$B2cTenantName.onmicrosoft.com/oauth2/v2.0/token" -Method 'POST' -Headers $headers -Body $body + Write-Log -Message "http request url = https://login.microsoftonline.com/$B2cTenantNameFull/oauth2/v2.0/token" + $response = Invoke-RestMethod "https://login.microsoftonline.com/$B2cTenantNameFull/oauth2/v2.0/token" -Method 'POST' -Headers $headers -Body $body $access_token = $response.access_token $access_token = "Bearer " + $access_token #endregion @@ -517,7 +520,7 @@ try{ } catch{ if(($Error[0].Exception.Message).contains("403")){ - Write-Color "Red" "403 forbidden error likely due to admin-consent having not yet been granted; please switch your directory to the b2c tenant ($B2cTenantName) in the Azure portal then copy and paste the yellow link into your browser to manually grant admin-consent then press enter." + Write-Color "Red" "403 forbidden error likely due to admin-consent having not yet been granted; please switch your directory to the b2c tenant ($B2cTenantNameFull) in the Azure portal then copy and paste the yellow link into your browser to manually grant admin-consent then press enter." Write-Color "Red" "Please check the markdown https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/deployment/B2C_Docs/B2C_Deployment.md if you require assistance on how to do this." $PMA_Page = "https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/~/CallAnAPI/appId/$PermissionClientID/isMSAApp~/false" Write-Color "Yellow" "$PMA_Page" @@ -793,8 +796,8 @@ try{ Write-Title "B2C Step 13: Important values for the created applications SAVE these" Write-Color "green" "Please take a moment to make a note of the following ID's and protect the following client secret's; as you will not be able to access it again." - Write-Color "green" "AD Tenant name is $ADTenantName" - Write-Color "green" "B2C Tenant name is $B2cTenantName" + Write-Color "green" "AD Tenant name is $ADTenantNameFull" + Write-Color "green" "B2C Tenant name is $B2cTenantNameFull" Write-Color "green" "Client ID for $MultiTenantAppName`: $MultiTenantAppID" Write-Color "green" "Client secret for $MultiTenantAppName`: $MultiTenantClientSecret" Write-Color "green" "Client ID for $B2cAppName`: $WebClientID" @@ -809,12 +812,12 @@ try{ #returning values required by the Deploy.ps1 script - return $ADTenantName, $B2cTenantName, $WebClientID, $WebClientSecret, $B2cTenantName, $ObjectId + return $ADTenantNameFull, $B2cTenantNameFull, $WebClientID, $WebClientSecret, $B2cTenantName, $ObjectId } catch{ if($PermissionClientSecret){ Write-Title "The script crashed, please make a note of the following values then run cleanup.bat; inserting these values when prompted for the b2c cleanup" - Write-Color "green" "B2C Tenant name is $B2cTenantName" + Write-Color "green" "B2C Tenant name is $B2cTenantNameFull" Write-Color "green" "Client ID for $PermissionAppName`: $PermissionClientID" Write-Color "green" "Client secret for $PermissionAppName`: $PermissionClientSecret" Read-Host "Press enter when ready to continue after recording the client secret" diff --git a/deployment/B2C_Docs/B2C_Deployment.md b/deployment/B2C_Docs/B2C_Deployment.md index 866965e5..a4239c8d 100644 --- a/deployment/B2C_Docs/B2C_Deployment.md +++ b/deployment/B2C_Docs/B2C_Deployment.md @@ -8,6 +8,7 @@ This document will explain the steps that contain user interaction and what is r * 1x AD tenant * 1x B2C tenant * If not already set up information is available [here](https://docs.microsoft.com/en-us/azure/active-directory-b2c/tutorial-create-tenant) at step 1: "Create an Azure AD B2C Tenant" + * IMPORTANT: In the current version custom domains are NOT supported, i.e. your tenant domain must be in the format b2cTenantName.onmicrosoft.com * You should have ready a **list of the tenant id's for the tenants you wish to give access** 1. Could either keep it in a list such that you can insert them 1 by 1 into the terminal. 2. Or optionally you could format it as shown below such that the script can automatically import them itself. diff --git a/deployment/Cleanup.ps1 b/deployment/Cleanup.ps1 index 3caae804..292e7a24 100644 --- a/deployment/Cleanup.ps1 +++ b/deployment/Cleanup.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "ALLAD_test3_MSLearnLTI", - [string]$AppName = "ALLAD_test3_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "DM5_all_MSLearnLti", + [string]$AppName = "DM5_all_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null ) diff --git a/deployment/CustomPolicyTemplates/B2C_1A_PasswordReset.xml b/deployment/CustomPolicyTemplates/B2C_1A_PasswordReset.xml index fb6a5b93..7593de8d 100644 --- a/deployment/CustomPolicyTemplates/B2C_1A_PasswordReset.xml +++ b/deployment/CustomPolicyTemplates/B2C_1A_PasswordReset.xml @@ -1,6 +1,6 @@ - + - <>.onmicrosoft.com + <> B2C_1A_TrustFrameworkExtensions diff --git a/deployment/CustomPolicyTemplates/B2C_1A_ProfileEdit.xml b/deployment/CustomPolicyTemplates/B2C_1A_ProfileEdit.xml index 2baea90c..5ae75c20 100644 --- a/deployment/CustomPolicyTemplates/B2C_1A_ProfileEdit.xml +++ b/deployment/CustomPolicyTemplates/B2C_1A_ProfileEdit.xml @@ -1,6 +1,6 @@ - + - <>.onmicrosoft.com + <> B2C_1A_TrustFrameworkExtensions diff --git a/deployment/CustomPolicyTemplates/B2C_1A_TrustFrameworkBase.xml b/deployment/CustomPolicyTemplates/B2C_1A_TrustFrameworkBase.xml index 243c054b..b8754974 100644 --- a/deployment/CustomPolicyTemplates/B2C_1A_TrustFrameworkBase.xml +++ b/deployment/CustomPolicyTemplates/B2C_1A_TrustFrameworkBase.xml @@ -4,9 +4,9 @@ xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/online/cpim/schemas/2013/06" PolicySchemaVersion="0.3.0.0" - TenantId="<>.onmicrosoft.com" + TenantId="<>" PolicyId="B2C_1A_TrustFrameworkBase" - PublicPolicyUri="http://<>.onmicrosoft.com/B2C_1A_TrustFrameworkBase"> + PublicPolicyUri="http://<>/B2C_1A_TrustFrameworkBase"> diff --git a/deployment/CustomPolicyTemplates/B2C_1A_TrustFrameworkExtensions.xml b/deployment/CustomPolicyTemplates/B2C_1A_TrustFrameworkExtensions.xml index 54b8da49..6ef257e8 100644 --- a/deployment/CustomPolicyTemplates/B2C_1A_TrustFrameworkExtensions.xml +++ b/deployment/CustomPolicyTemplates/B2C_1A_TrustFrameworkExtensions.xml @@ -1,6 +1,6 @@ - + - <>.onmicrosoft.com + <> B2C_1A_TrustFrameworkLocalization diff --git a/deployment/CustomPolicyTemplates/B2C_1A_TrustFrameworkLocalization.xml b/deployment/CustomPolicyTemplates/B2C_1A_TrustFrameworkLocalization.xml index 379933f7..a4fca109 100644 --- a/deployment/CustomPolicyTemplates/B2C_1A_TrustFrameworkLocalization.xml +++ b/deployment/CustomPolicyTemplates/B2C_1A_TrustFrameworkLocalization.xml @@ -1,6 +1,6 @@ - + - <>.onmicrosoft.com + <> B2C_1A_TrustFrameworkBase diff --git a/deployment/CustomPolicyTemplates/B2C_1A_signin.xml b/deployment/CustomPolicyTemplates/B2C_1A_signin.xml index 34b61b4e..8d3b2845 100644 --- a/deployment/CustomPolicyTemplates/B2C_1A_signin.xml +++ b/deployment/CustomPolicyTemplates/B2C_1A_signin.xml @@ -1,6 +1,6 @@ - + - <>.onmicrosoft.com + <> B2C_1A_TrustFrameworkExtensions diff --git a/deployment/CustomPolicyTemplates/B2C_1A_signup_signin.xml b/deployment/CustomPolicyTemplates/B2C_1A_signup_signin.xml index 3f4a63da..e6740549 100644 --- a/deployment/CustomPolicyTemplates/B2C_1A_signup_signin.xml +++ b/deployment/CustomPolicyTemplates/B2C_1A_signup_signin.xml @@ -1,6 +1,6 @@ - + - <>.onmicrosoft.com + <> B2C_1A_TrustFrameworkExtensions diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 2718afe6..04b8ff16 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "MSLearnLti", - [string]$AppName = "MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "DM5_all_MSLearnLti", + [string]$AppName = "DM5_all_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null @@ -92,57 +92,6 @@ process { #formatting a unique identifier to ensure we create a new keyvault for each run $uniqueIdentifier = [Int64]((Get-Date).ToString('yyyyMMddhhmmss')) #get the current second as being the unique identifier - #region "B2C STEP 1: Calling B2CDeployment to set up the b2c script and retrieving the returned values to be used later on" - $REACT_APP_EDNA_B2C_CLIENT_ID = "'NA'" - $REACT_APP_EDNA_AUTH_CLIENT_ID = "'Placeholder'" # either replaced below by returned value of b2c script if b2cOrAD = "b2c", or just before step 11.a to AAD_Client_ID's ($appinfo.appId) value if b2cOrAD = "ad" - $b2c_secret = "'NA'" - $REACT_APP_EDNA_B2C_TENANT = "'NA'" - $B2C_ObjectID = "'NA'" - $b2c_tenant_name = "'NA'" - if($b2cOrAD -eq "b2c"){ - Write-Title "B2C Step #0: Running the B2C Setup Script" - $results = (& ".\B2CDeployment.ps1" $ExecutionStartTime) - if($results[-1] -eq -1){ - throw "B2CDeployment.ps1 failed" - } - Write-Log -Message "Returned from the B2C setup script, continuing with LTI deployment" - - $AD_Tenant_Name = $results[-6] # tenant name of the AD server - $b2c_tenant_name = $results[-5] #b2c tenant name - $REACT_APP_EDNA_B2C_CLIENT_ID = $results[-4] #webclient ID - $REACT_APP_EDNA_AUTH_CLIENT_ID = $results[-4] #webclient ID - $b2c_secret = $results[-3] #webclient secret - $b2c_secret = $b2c_secret # turning the secret into a form we can store - $REACT_APP_EDNA_B2C_TENANT = $results[-2] #b2c tenant name - $B2C_ObjectID = $results[-1] # b2c webapp id that needs the SPA uri - - #update b2c deploy template - $policy_name = "b2c_1a_signin" - - #Updating function apps's settings - - $OPENID_B2C_CONFIG_URL_IDENTIFIER = "https://${b2c_tenant_name}.b2clogin.com/${b2c_tenant_name}.onmicrosoft.com/${policy_name}/v2.0/.well-known/openid-configuration" - $OPENID_AD_CONFIG_URL_IDENTIFIER = "https://login.microsoft.com/${AD_Tenant_Name}.onmicrosoft.com/v2.0/.well-known/openid-configuration" - - Write-Title $OPENID_B2C_CONFIG_URL_IDENTIFIER - Write-Title $OPENID_AD_CONFIG_URL_IDENTIFIER - - ((Get-Content -path ".\azuredeploy.json" -Raw) -replace '""', $b2c_secret) | Set-Content -path (".\azuredeploy.json") - - - (Get-Content -path ".\azuredeployB2CTemplate.json" -Raw) ` - -replace '', ($REACT_APP_EDNA_B2C_CLIENT_ID) ` - -replace '', ("'"+$uniqueIdentifier+"'") ` - -replace '', ($OPENID_B2C_CONFIG_URL_IDENTIFIER) ` - -replace '', ($b2c_secret) ` - -replace '', ($OPENID_AD_CONFIG_URL_IDENTIFIER) | Set-Content -path (".\azuredeploy.json") - } - #endregion - - #else its AD load the AD azuredeploy template - else{ - ((Get-Content -path ".\azuredeployADTemplate.json" -Raw) -replace '', ("'"+$uniqueIdentifier+"'")) | Set-Content -path (".\azuredeploy.json") - } #region Login to Azure CLI @@ -243,6 +192,65 @@ process { $UserEmailAddress = $ActiveSubscription.user.name #endregion + + #region "B2C STEP 0: Calling B2CDeployment to set up the b2c script and retrieving the returned values to be used later on" + $REACT_APP_EDNA_B2C_CLIENT_ID = "'NA'" + $REACT_APP_EDNA_AUTH_CLIENT_ID = "'Placeholder'" # either replaced below by returned value of b2c script if b2cOrAD = "b2c", or just before step 11.a to AAD_Client_ID's ($appinfo.appId) value if b2cOrAD = "ad" + $b2c_secret = "'NA'" + $REACT_APP_EDNA_B2C_TENANT = "'NA'" + $B2C_ObjectID = "'NA'" + $b2c_tenant_name_full = "'NA'" + if($b2cOrAD -eq "b2c"){ + Write-Title "B2C Step #0: Running the B2C Setup Script" + + # passing in the ExecutionStartTime to continue the log file + # passing in the tenantId of the AD tenant as the b2c setup must be linked with the AD tenant for the chosen subscription + $results = (& ".\B2CDeployment.ps1" $ExecutionStartTime $ActiveSubscription.tenantId) + if($results[-1] -eq -1){ + throw "B2CDeployment.ps1 failed" + } + Write-Log -Message "Returned from the B2C setup script, continuing with LTI deployment" + + # TODO - indexing from -1 etc. because it seems to return meaningless values before the final 3 which we actually want; need to work out why and perhaps fix if it is deemed an issue + $AD_Tenant_Name_full = $results[-6] # tenant name of the AD server + $b2c_tenant_name_full = $results[-5] #b2c tenant name + $REACT_APP_EDNA_B2C_CLIENT_ID = $results[-4] #webclient ID + $REACT_APP_EDNA_AUTH_CLIENT_ID = $results[-4] #webclient ID + $b2c_secret = $results[-3] #webclient secret + $b2c_secret = $b2c_secret # turning the secret into a form we can store + $REACT_APP_EDNA_B2C_TENANT = $results[-2] #b2c tenant name + $B2C_ObjectID = $results[-1] # b2c webapp id that needs the SPA uri + + #update b2c deploy template + $policy_name = "b2c_1a_signin" + + #Updating function apps's settings + + #$B2C_APP_CLIENT_ID_IDENTIFIER = "0cd1d1d6-a7aa-41e2-b569-1ca211147973" # TODO remove hardcode + #$AD_APP_CLIENT_ID_IDENTIFIER = "cb508fc8-6a5f-49b1-b688-dac065ba59e4" # TODO remove hardcode + $OPENID_B2C_CONFIG_URL_IDENTIFIER = "https://${b2c_tenant_name}.b2clogin.com/${b2c_tenant_name_full}/${policy_name}/v2.0/.well-known/openid-configuration" + $OPENID_AD_CONFIG_URL_IDENTIFIER = "https://login.microsoft.com/${AD_Tenant_Name_full}/v2.0/.well-known/openid-configuration" + + Write-Title $OPENID_B2C_CONFIG_URL_IDENTIFIER + Write-Title $OPENID_AD_CONFIG_URL_IDENTIFIER + + ((Get-Content -path ".\azuredeploy.json" -Raw) -replace '""', $b2c_secret) | Set-Content -path (".\azuredeploy.json") + + + (Get-Content -path ".\azuredeployB2CTemplate.json" -Raw) ` + -replace '', ($REACT_APP_EDNA_B2C_CLIENT_ID) ` + -replace '', ("'"+$uniqueIdentifier+"'") ` + -replace '', ($OPENID_B2C_CONFIG_URL_IDENTIFIER) ` + -replace '', ($b2c_secret) ` + -replace '', ($OPENID_AD_CONFIG_URL_IDENTIFIER) | Set-Content -path (".\azuredeploy.json") + } + #else its AD load the AD azuredeploy template + else{ + ((Get-Content -path ".\azuredeployADTemplate.json" -Raw) -replace '', ("'"+$uniqueIdentifier+"'")) | Set-Content -path (".\azuredeploy.json") + } + #endregion + + #region Choose Region for Deployment Write-Title "STEP #3 - Choose Location`n(Please refer to the Documentation / ReadMe on Github for the List of Supported Locations)" From 1010bc7f90328cb3564aebb49d1fea85da633413 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Wed, 3 Aug 2022 17:51:59 +0100 Subject: [PATCH 193/285] Fixed bugs due to tenantName now including extension; and updating documentnation and logging --- client/.env.development | 6 +-- client/.env.production | 22 +++++------ deployment/B2CCleanup.ps1 | 6 +-- deployment/B2CDeployment.ps1 | 37 +++++++----------- deployment/B2C_Docs/B2C_Cleanup.md | 2 +- deployment/B2C_Docs/B2C_Deployment.md | 4 +- .../Images/Deployment/00b_tenantNames.png | Bin 7409 -> 3630 bytes deployment/Deploy.ps1 | 14 +++++-- 8 files changed, 45 insertions(+), 46 deletions(-) diff --git a/client/.env.development b/client/.env.development index a88229df..04ec3803 100644 --- a/client/.env.development +++ b/client/.env.development @@ -1,7 +1,7 @@ GENERATE_SOURCEMAP='false' -REACT_APP_EDNA_AUTH_CLIENT_ID='b396eb29-cbbe-4d5a-93dc-7f6e34f3b88f' -REACT_APP_EDNA_B2C_TENANT='playltib2c' -REACT_APP_EDNA_B2C_CLIENT_ID='b396eb29-cbbe-4d5a-93dc-7f6e34f3b88f' +REACT_APP_EDNA_AUTH_CLIENT_ID='87627e40-a86e-4f3e-b016-37f63130bb32' +REACT_APP_EDNA_B2C_TENANT='w3jnkb2corg' +REACT_APP_EDNA_B2C_CLIENT_ID='87627e40-a86e-4f3e-b016-37f63130bb32' REACT_APP_EDNA_PLATFORM_SERVICE_URL='http://localhost:7075/api' REACT_APP_EDNA_USERS_SERVICE_URL='http://localhost:7075/api' REACT_APP_EDNA_LEARN_CONTENT='http://localhost:7074/api' diff --git a/client/.env.production b/client/.env.production index 8487fa8f..ce753099 100644 --- a/client/.env.production +++ b/client/.env.production @@ -1,13 +1,13 @@ GENERATE_SOURCEMAP='false' -REACT_APP_EDNA_AUTH_CLIENT_ID='b396eb29-cbbe-4d5a-93dc-7f6e34f3b88f' -REACT_APP_EDNA_B2C_TENANT='playltib2c' -REACT_APP_EDNA_B2C_CLIENT_ID='b396eb29-cbbe-4d5a-93dc-7f6e34f3b88f' -REACT_APP_EDNA_PLATFORM_SERVICE_URL='https://platforms-75ykpx5cf.azurewebsites.net/api' -REACT_APP_EDNA_USERS_SERVICE_URL='https://users-75ykpx5cf.azurewebsites.net/api' -REACT_APP_EDNA_LEARN_CONTENT='https://learncontent-75ykpx5cf.azurewebsites.net/api' -REACT_APP_EDNA_LINKS_SERVICE_URL='https://links-75ykpx5cf.azurewebsites.net/api' -REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL='https://assignments-75ykpx5cf.azurewebsites.net/api' +REACT_APP_EDNA_AUTH_CLIENT_ID='87627e40-a86e-4f3e-b016-37f63130bb32' +REACT_APP_EDNA_B2C_TENANT='w3jnkb2corg' +REACT_APP_EDNA_B2C_CLIENT_ID='87627e40-a86e-4f3e-b016-37f63130bb32' +REACT_APP_EDNA_PLATFORM_SERVICE_URL='https://platforms-utepejgvf.azurewebsites.net/api' +REACT_APP_EDNA_USERS_SERVICE_URL='https://users-utepejgvf.azurewebsites.net/api' +REACT_APP_EDNA_LEARN_CONTENT='https://learncontent-utepejgvf.azurewebsites.net/api' +REACT_APP_EDNA_LINKS_SERVICE_URL='https://links-utepejgvf.azurewebsites.net/api' +REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL='https://assignments-utepejgvf.azurewebsites.net/api' REACT_APP_EDNA_TENANT_ID='21510bb9-6414-46d0-9a07-1faf98f25937' -REACT_APP_EDNA_DEFAULT_SCOPE='api://a6849ec6-cf17-402d-90f0-106d04aa451e/user_impersonation' -REACT_APP_EDNA_MAIN_URL='https://learnclient75ykpx5cf.z33.web.core.windows.net/' -REACT_APP_EDNA_AAD_CLIENT_ID='a6849ec6-cf17-402d-90f0-106d04aa451e' +REACT_APP_EDNA_DEFAULT_SCOPE='api://c86e988f-062a-43b0-ae18-e759030a5c83/user_impersonation' +REACT_APP_EDNA_MAIN_URL='https://learnclientutepejgvf.z33.web.core.windows.net/' +REACT_APP_EDNA_AAD_CLIENT_ID='c86e988f-062a-43b0-ae18-e759030a5c83' diff --git a/deployment/B2CCleanup.ps1 b/deployment/B2CCleanup.ps1 index ccefe056..59ddf3ce 100644 --- a/deployment/B2CCleanup.ps1 +++ b/deployment/B2CCleanup.ps1 @@ -12,7 +12,7 @@ function Write-Title([string]$Title) { # relevant docs: https://docs.microsoft.com/en-us/graph/auth-v2-service#4-get-an-access-token Write-Title "B2C STEP 1: Getting the token to be used in the HTML REQUESTS" -$B2cTenantName = Read-Host "Please enter your B2C tenant name" +$B2cTenantNameFull = Read-Host "Please enter your B2C tenant name (including its extension)" $PermissionClientID = Read-Host "Please enter the client ID of the permission management application" $PermissionClientSecret = Read-Host "Please enter the client secret of the permission management application" -AsSecureString #Converting from secure string to normal string @@ -24,7 +24,7 @@ $headers.Add("Content-Type", "application/x-www-form-urlencoded") $body = "client_id=$PermissionClientID&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&client_secret=$PermissionClientSecret&grant_type=client_credentials" -$response = Invoke-RestMethod "https://login.microsoftonline.com/$B2cTenantName.onmicrosoft.com/oauth2/v2.0/token" -Method 'POST' -Headers $headers -Body $body +$response = Invoke-RestMethod "https://login.microsoftonline.com/$B2cTenantNameFull/oauth2/v2.0/token" -Method 'POST' -Headers $headers -Body $body $access_token = $response.access_token $access_token = "Bearer " + $access_token #endregion @@ -82,7 +82,7 @@ foreach ($info in $AppInfo) { if ($tid -ne $LastTenantID) { $LastTenantID = $tid Write-Host "Please login to $tid via the pop-up window that has launched in your browser" - az login --tenant "$tid.onmicrosoft.com" --allow-no-subscriptions --only-show-errors > $null + az login --tenant "$tid" --allow-no-subscriptions --only-show-errors > $null } Write-Host "Deleting $id from $tid" az ad app delete --id $id --only-show-errors diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 443e858d..095cce4c 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -36,6 +36,7 @@ function checkAzCommandSuccess([string]$retVal, [string]$description){ } #if the returned value from the azure cli is empty, then the command failed so throw an exception to terminate the script if(!$retVal){ + Write-Log -Message "az cli command trying to $description failed" throw "Error occurred whilst trying to $description" } } @@ -69,12 +70,19 @@ try{ } #endregion + $B2cTenantNameFull = Read-Host "Please enter your B2C tenant name (including its extension)" + $B2cTenantName = $B2cTenantNameFull.split('.')[0] + #region "B2C STEP 1: Create Active Directory application" Write-Title "B2C STEP 1: Create AD application" Write-Host "Please login to your AD tenant for this subscription via the pop-up window that has launched in your browser" $ADTenantId = $args[1] + Write-Log -Message "Received AD Tenant ID: $ADTenantId" az login --tenant $ADTenantId --allow-no-subscriptions --only-show-errors > $null + Write-Log -Message "Logged into AD Tenant with ID: $ADTenantId" $ADTenantNameFull = az rest --method get --url https://graph.microsoft.com/v1.0/domains --query 'value[?isDefault].id' -o tsv + $ADTenantName = $ADTenantNameFull.split('.')[0] + Write-Log -Message "Received full name of '$ADTenantNameFull' for AD tenant with ID: $ADTenantId" # $MultiTenantAppName = Read-Host "Please give a name for the AD application to be created" $ADAppManifest = "{ @@ -110,7 +118,6 @@ try{ $MultiTenantClientSecretInfo = az ad app credential reset --id $MultiTenantAppID --append --display-name $MultiTenantClientSecretName --years $MultiTenantClientSecretDuration --only-show-errors | ConvertFrom-Json $MultiTenantClientSecret = $MultiTenantClientSecretInfo.password - Write-Log -Message "MultiTenantClientSecretInfo value:`n$MultiTenantClientSecretInfo" # if it failed to create the service Write-Log -Message "Created secret $MultiTenantClientSecretName ($MultiTenantClientSecret) for $MultiTenantAppName ($MultiTenantAppID)" @@ -130,7 +137,6 @@ try{ Write-Host "Granting permissions to the service principal for $MultiTenantAppName" Write-Log -Message "Granting permissions to the service principal for $MultiTenantAppName" $MultiTenantAppPermissionGrantInfo = az ad app permission grant --id $MultiTenantAppID --api 00000003-0000-0000-c000-000000000000 --scope "email profile" --only-show-errors - Write-Log -Message "MultiTenantAppPermissionGrantInfo value:`n$MultiTenantAppPermissionGrantInfo" checkAzCommandSuccess $MultiTenantAppPermissionGrantInfo "grant permissions to the Multitenant AD app $MultiTenantAppName's service principal" az ad app permission add --id $MultiTenantAppID --api 00000003-0000-0000-c000-000000000000 --api-permissions $emailPermission $profilePermission --only-show-errors @@ -139,13 +145,10 @@ try{ #region "B2C STEP 2: login" - $B2cTenantName = Read-Host "Please enter your B2C tenant ID" - Write-Log -Message "User Entered B2C Tenant Name: $B2cTenantID" + Write-Log -Message "User Entered B2C Tenant Name: $B2cTenantNameFull" Write-Title "B2C STEP 2: Logging into the B2C Tenant" - Write-Host "Please login to $B2cTenantName via the pop-up window that has launched in your browser" - az login --tenant $B2CTenantID --allow-no-subscriptions --only-show-errors > $null - $B2cTenantNameFull = az rest --method get --url https://graph.microsoft.com/v1.0/domains --query 'value[?isDefault].id' -o tsv - $B2cTenantName = $B2cTenantNameFull.split('.')[0] + Write-Host "Please login to $B2cTenantNameFull via the pop-up window that has launched in your browser" + az login --tenant $B2cTenantNameFull --allow-no-subscriptions --only-show-errors > $null #endregion @@ -157,7 +160,7 @@ try{ $ObjectId = $appinfo.id Write-Log -Message "Created web app with id $WebClientID in $B2cTenantNameFull" - "$WebClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append + "$WebClientID,$B2cTenantNameFull" | Out-File -FilePath $AppInfoCSVPath -Append # create client secret Write-Host "Creating the client secret for $B2cAppName with id $WebClientID" @@ -167,7 +170,6 @@ try{ $WebClientInfo = (az ad app credential reset --id $WebClientID --append --display-name $WebClientSecretName --years $WebClientSecretDuration --only-show-errors) | ConvertFrom-Json $WebClientSecret = $WebClientInfo.password - Write-Log -Message "WebClientInfo value:`n$WebClientInfo" checkAzCommandSuccess $WebClientInfo "create a secret for the b2c web app $b2cAppName" Write-Log -Message "Created secret $WebClientSecretName ($WebClientSecret) for $B2cAppName ($WebClientID)" @@ -181,13 +183,11 @@ try{ Write-Log -Message "Creating service principal for $B2cAppName" $B2cAppServicePrincipalInfo = az ad sp create --id $WebClientID --only-show-errors - Write-Log -Message "B2cAppServicePrincipalInfo value:`n$B2cAppServicePrincipalInfo" checkAzCommandSuccess $B2cAppServicePrincipalInfo "create a service principal for the b2c web app $b2cAppName" Write-Log -Message "Granting permissions to the service principal for $B2cAppName" Write-Host "Granting permissions to the service principal for $B2cAppName" $WebClientPermissionGrantingInfo = az ad app permission grant --id $WebClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors - Write-Log -Message "WebClientPermissionGrantingInfo value:`n$WebClientPermissionGrantingInfo" checkAzCommandSuccess $WebClientPermissionGrantingInfo "grant permissions to the b2c web app $b2cAppName's service principal" az ad app permission add --id $WebClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors @@ -223,20 +223,18 @@ try{ $IEFAppInfo = (az ad app create --display-name $IEFAppName --sign-in-audience AzureADMyOrg --web-redirect-uris https://$B2cTenantName.b2clogin.com/$B2cTenantNameFull --only-show-errors) | ConvertFrom-Json $IEFClientID = $IEFAppInfo.appId Write-Log -Message "Created IEF app with id $IEFClientID in $B2cTenantNameFull" - "$IEFClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append + "$IEFClientID,$B2cTenantNameFull" | Out-File -FilePath $AppInfoCSVPath -Append # set permissions for the IEF app Write-Host "Granting permissions to the IEF application" Write-Log -Message "Creating service principal for $IEFAppName" $IEFServicePrincipalInfo = az ad sp create --id $IEFClientID --only-show-errors - Write-Log -Message "IEFServicePrincipalInfo value:`n$IEFServicePrincipalInfo" checkAzCommandSuccess $IEFServicePrincipalInfo "create a service principal for the IEF app $IEFAppName" Write-Log -Message "Granting permissions to the service principal for $IEFAppName" Write-Host "Granting permissions to the service principal for $IEFAppName" $IEFPermissionGrantInfo = az ad app permission grant --id $IEFClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors - Write-Log -Message "IEFPermissionGrantInfo value:`n$IEFPermissionGrantInfo" checkAzCommandSuccess $IEFPermissionGrantInfo "grant permissions for the IEF app $IEFAppName's service principal" az ad app permission add --id $IEFClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors @@ -276,20 +274,18 @@ try{ $ProxyIEFAppInfo = (az ad app create --display-name $ProxyIEFAppName --sign-in-audience AzureADMyOrg --public-client-redirect-uris myapp://auth --is-fallback-public-client true --only-show-errors) | ConvertFrom-Json $ProxyIEFClientID = $ProxyIEFAppInfo.appId Write-Log -Message "Created Proxy IEF app with id $ProxyIEFClientID in $B2cTenantNameFull" - "$ProxyIEFClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append + "$ProxyIEFClientID,$B2cTenantNameFull" | Out-File -FilePath $AppInfoCSVPath -Append Write-Host "Granting permissions to the Proxy IEF application" Write-Log -Message "Creating service principal for $ProxyIEFAppName" $PIEFServicePrincipalInfo = az ad sp create --id $ProxyIEFClientID --only-show-errors 2>&1 - Write-Log -Message "PIEFServicePrincipalInfo value:`n$PIEFServicePrincipalInfo" checkAzCommandSuccess $PIEFServicePrincipalInfo "create a service principal for the Proxy IEF app $ProxyIEFAppName" Write-Host "Granting permissions to the service principal for $ProxyIEFAppName" Write-Log -Message "Granting permissions to the service principal for $ProxyIEFAppName" $PIEFPermissionGrantInfo = az ad app permission grant --id $ProxyIEFClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors - Write-Log -Message "PIEFPermissionGrantInfo value:`n$PIEFPermissionGrantInfo" checkAzCommandSuccess $PIEFPermissionGrantInfo "grant permissions for the Proxy IEF app $ProxyIEFAppName's service principal" az ad app permission add --id $ProxyIEFClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors @@ -302,7 +298,7 @@ try{ # $PermissionAppName = Read-Host "Please give a name for the permission management application to be created" $PermissionClientID = (az ad app create --display-name $PermissionAppName --sign-in-audience AzureADMyOrg --query appId --output tsv --only-show-errors) Write-Log -Message "Created Permission Management app with id $PermissionClientID in $B2cTenantNameFull" - "$PermissionClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append + "$PermissionClientID,$B2cTenantNameFull" | Out-File -FilePath $AppInfoCSVPath -Append # create client secret Write-Host "Creating the client secret for $PermissionAppName" @@ -312,7 +308,6 @@ try{ $PermissionClientSecretInfo = (az ad app credential reset --id $PermissionClientID --append --display-name $PermissionClientSecretName --years $PermissionClientSecretDuration --only-show-errors) | ConvertFrom-Json $PermissionClientSecret = $PermissionClientSecretInfo.password - Write-Log -Message "PermissionClientSecretInfo value:`n$PermissionClientSecretInfo" checkAzCommandSuccess $PermissionClientSecretInfo "create a secret for the permission management app $PermissionAppName" Write-Log -Message "Created secret $PermissionClientSecretName ($PermissionClientSecret) for $PermissionAppName ($PermissionClientID)" @@ -328,13 +323,11 @@ try{ #defensive programming around race condition between app creation and secret added to the app $PermissionClientServicePrincipalInfo = az ad sp create --id $PermissionClientID --only-show-errors 2>&1 - Write-Log -Message "PermissionClientServicePrincipalInfo value:`n$PermissionClientServicePrincipalInfo" checkAzCommandSuccess $PermissionClientServicePrincipalInfo "create the service principal for the permission management app $PermissionAppName" Write-Host "Granting permissions to the service principal for $PermissionAppName" Write-Log -Message "Granting permissions to the service principal for $PermissionAppName" $PermissionClientPermissionGrantInfo = az ad app permission grant --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --scope "openid offline_access" --only-show-errors - Write-Log -Message "PermissionClientPermissionGrantInfo value:`n$PermissionClientPermissionGrantInfo" checkAzCommandSuccess $PermissionClientPermissionGrantInfo "grant permissions for the permission management app $PermissionAppName's service principal" az ad app permission add --id $PermissionClientID --api 00000003-0000-0000-c000-000000000000 --api-permissions $openidPermission $offlineAccessPermission --only-show-errors diff --git a/deployment/B2C_Docs/B2C_Cleanup.md b/deployment/B2C_Docs/B2C_Cleanup.md index 8cc0791c..99aff3b3 100644 --- a/deployment/B2C_Docs/B2C_Cleanup.md +++ b/deployment/B2C_Docs/B2C_Cleanup.md @@ -5,7 +5,7 @@ ![inputting values for getting token](Images/Cleanup/01_tokenInputs.png) * Firstly, you must input the required values of: - 1. The name of your b2c tenant you are cleaning up + 1. The name of your b2c tenant you are cleaning up (INCLUDING its extension e.g. the default .onmicrosoft.com) 2. the ID of the permission management application created * (if this was not outputted by the deploy script then it terminated before its creation and thus you can leave this empty) 3. the secret value of the permission management application created diff --git a/deployment/B2C_Docs/B2C_Deployment.md b/deployment/B2C_Docs/B2C_Deployment.md index a4239c8d..94eecc87 100644 --- a/deployment/B2C_Docs/B2C_Deployment.md +++ b/deployment/B2C_Docs/B2C_Deployment.md @@ -8,7 +8,7 @@ This document will explain the steps that contain user interaction and what is r * 1x AD tenant * 1x B2C tenant * If not already set up information is available [here](https://docs.microsoft.com/en-us/azure/active-directory-b2c/tutorial-create-tenant) at step 1: "Create an Azure AD B2C Tenant" - * IMPORTANT: In the current version custom domains are NOT supported, i.e. your tenant domain must be in the format b2cTenantName.onmicrosoft.com + * **IMPORTANT: In the current version custom domains are NOT supported, i.e. your tenant domain must be in the DEFAULT format of b2cTenantName.onmicrosoft.com** * You should have ready a **list of the tenant id's for the tenants you wish to give access** 1. Could either keep it in a list such that you can insert them 1 by 1 into the terminal. 2. Or optionally you could format it as shown below such that the script can automatically import them itself. @@ -26,7 +26,7 @@ This document will explain the steps that contain user interaction and what is r ## Step 0: Enter tenant names -* You will immediately be prompted to input the name of the B2C and AD tenants you have created:
1. First, input the name of the B2C Tenant you have created
2. Next, input the name of the Azure AD Tenant you have created +* You will immediately be prompted to input the name of the B2C and AD tenants you have created:
1. First, input the name of the B2C Tenant you have created (INCLUDING its extension e.g. the default .onmicrosoft.com) * ![input tenant names](Images/Deployment/00b_tenantNames.png) diff --git a/deployment/B2C_Docs/Images/Deployment/00b_tenantNames.png b/deployment/B2C_Docs/Images/Deployment/00b_tenantNames.png index e29ced5a8d8a1cb60f396ae4e9903d89fabc29bf..2df548a962e7795a73e988755dbdef9911926aba 100644 GIT binary patch delta 3606 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 literal 7409 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"', $b2c_secret) | Set-Content -path (".\azuredeploy.json") @@ -243,11 +240,20 @@ process { -replace '', ($OPENID_B2C_CONFIG_URL_IDENTIFIER) ` -replace '', ($b2c_secret) ` -replace '', ($OPENID_AD_CONFIG_URL_IDENTIFIER) | Set-Content -path (".\azuredeploy.json") + + + # log back in to the azure account now we've returned from B2C Script + Write-Log -Message "Logging back in to Azure Account after returning frmo B2C Script" + az login --tenant $AD_Tenant_Name_full #logging back into the azure account for the AD tenant + az account set --subscription $NameOrId #setting the active subscription back to the stored value } #else its AD load the AD azuredeploy template else{ ((Get-Content -path ".\azuredeployADTemplate.json" -Raw) -replace '', ("'"+$uniqueIdentifier+"'")) | Set-Content -path (".\azuredeploy.json") } + + + #endregion From b22a356f221b89dd16134e802e5e90bcb46e6c33 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Wed, 3 Aug 2022 18:42:35 +0100 Subject: [PATCH 194/285] Removed unneeded file --- .gitignore | 6 +++++- deployment/.DS_Store | Bin 6148 -> 0 bytes 2 files changed, 5 insertions(+), 1 deletion(-) delete mode 100644 deployment/.DS_Store diff --git a/.gitignore b/.gitignore index de1b9a66..611cf5ea 100644 --- a/.gitignore +++ b/.gitignore @@ -350,4 +350,8 @@ MigrationBackup/ .ionide/ # Jetbrains working folder -**/.idea \ No newline at end of file +**/.idea + + +#ignoring mac os generated .DS_Store +**/.DS_Store \ No newline at end of file diff --git a/deployment/.DS_Store b/deployment/.DS_Store deleted file mode 100644 index 9c4075f6e1b97cde561fe155456f179a7e411a69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK%}N6?5T4j-Q;N`oqQ`*Of^97Y@v>~|3%H^OmD;sM7uQYcw)Rj8d({{6O?)0_ zk}O!-gC`L?1Iag;pJeBQ%?|(we>!LYQ~^L@BNU{p5i+lJZMk4VVdm(9h6hN)Svp!X z(O)#tw@dJ$2_5Lcx9<;Q9is0e9K}&OsnaMr8tb#yZ6N6Bz(5~9HnLvF95WT0oho+g9Tn#9?_TQ&~uns zL=TFvsfadJxF?3N>1bCj&U2VqwCNzs$~cc(Ie)wevpU+92?ya>@ From 983af3618e988ce7b0f94cf156a08a023cce8634 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Wed, 3 Aug 2022 22:06:44 +0100 Subject: [PATCH 195/285] correcting names for deploy and cleanup --- deployment/Cleanup.ps1 | 4 ++-- deployment/Deploy.ps1 | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/deployment/Cleanup.ps1 b/deployment/Cleanup.ps1 index 292e7a24..5c222405 100644 --- a/deployment/Cleanup.ps1 +++ b/deployment/Cleanup.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "DM5_all_MSLearnLti", - [string]$AppName = "DM5_all_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "MSLearnLti", + [string]$AppName = "MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null ) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index c4cb888c..960b739d 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "DM5_all_MSLearnLti", - [string]$AppName = "DM5_all_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "MSLearnLti", + [string]$AppName = "MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null From 682622bd57a417c98476b7e7aa184aed3830118d Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Wed, 3 Aug 2022 22:37:45 +0100 Subject: [PATCH 196/285] changed prompt slightly --- deployment/Deploy.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 960b739d..91658352 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -85,7 +85,7 @@ process { #region "getting the setup mode for b2c vs ad" $b2cOrAD = "none" while($b2cOrAD -ne "b2c" -and $b2cOrAD -ne "ad") { - $b2cOrAD = Read-Host "Would you like to set this up with b2c or AD? (b2c/ad) (b2c recommended as it can be single tenant or multitenant, ad only single tenant [less scalable])" + $b2cOrAD = Read-Host "Would you like to set this up with Azure Business to Consumer or Azure Active Directory? B2C is reccomended as it can support multi-tenant authentication. (b2c/ad) " } #endregion From deafd8013e03a9e697ae5e5cf6bc199c68eab106 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Thu, 4 Aug 2022 11:24:50 +0100 Subject: [PATCH 197/285] updated deployment guide docs to move b2c or ad choice to be under subscription --- docs/DEPLOYMENT_GUIDE.md | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/docs/DEPLOYMENT_GUIDE.md b/docs/DEPLOYMENT_GUIDE.md index 4a7e2c23..865b7f68 100644 --- a/docs/DEPLOYMENT_GUIDE.md +++ b/docs/DEPLOYMENT_GUIDE.md @@ -41,23 +41,6 @@ You have now cloned the repo * You should now see the Microsoft Learn LTI Tool script popup. ![startofdeploy.png](/images/startofdeploy.png) -# Choosing the AD or B2C mode - -The script will ask you to choose 'Active Directory',i.e. AD mode or 'Business to Consumer',i.e. B2C mode for authentication between your LTI and LMS. - -B2C Mode is recommended due to it being possible to set it up for either single-tenant and multi-tenant access; whilst AD mode is less extensible and only supports single-tenant access. - -## AD Mode setup - -Type in 'ad' for AD mode of authentication which will direct you towards 'Deploy to Azure Subscription using the script'. -![admode.png](/images/admode.png) - -## B2C Mode setup - -Type in 'b2c' for B2C mode of authentication. -![b2cmode.png](/images/b2cmode.png) -**IMPORTANT: If you choose B2C, go to the [B2C setup documentation guide](https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/blob/all-test1/deployment/B2C_Docs/B2C_Deployment.md) for instructions on how to complete B2C deployment.** - # Deploy to Azure Subscription using the script @@ -74,6 +57,25 @@ Type in the name of the Azure subscription that you hold (this is a prerequisite If you're unsure about whether your account has a subscription, check [here.](https://ms.portal.azure.com/#blade/Microsoft_Azure_Billing/SubscriptionsBlade??WT.mc_id=learnlti-github-cxa) + +## Choosing the AD or B2C mode + +The script will ask you to choose 'Active Directory',i.e. AD mode or 'Business to Consumer',i.e. B2C mode for authentication between your LTI and LMS. + +B2C Mode is recommended due to it being possible to set it up for either single-tenant and multi-tenant access; whilst AD mode is less extensible and only supports single-tenant access. + +### AD Mode setup + +Type in 'ad' for AD mode of authentication which will direct you towards 'Deploy to Azure Subscription using the script'. +![admode.png](/images/admode.png) + +### B2C Mode setup + +Type in 'b2c' for B2C mode of authentication. +![b2cmode.png](/images/b2cmode.png) +**IMPORTANT: If you choose B2C, go to the [B2C setup documentation guide](https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/blob/all-test1/deployment/B2C_Docs/B2C_Deployment.md) for instructions on how to complete B2C deployment.** + + ## Choose Location The following regions are supported: From 6969ec575dc4b46600ac9ac099a5bbefe1a671bc Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Thu, 4 Aug 2022 11:35:38 +0100 Subject: [PATCH 198/285] Removed legacy signupsignin custom policy --- .../B2C_1A_signup_signin.xml | 24 ------------------- 1 file changed, 24 deletions(-) delete mode 100644 deployment/CustomPolicyTemplates/B2C_1A_signup_signin.xml diff --git a/deployment/CustomPolicyTemplates/B2C_1A_signup_signin.xml b/deployment/CustomPolicyTemplates/B2C_1A_signup_signin.xml deleted file mode 100644 index e6740549..00000000 --- a/deployment/CustomPolicyTemplates/B2C_1A_signup_signin.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - <> - B2C_1A_TrustFrameworkExtensions - - - - - PolicyProfile - - - - - - - - - - - - - - - \ No newline at end of file From 5d8776a6e7ddf65ba6178974851828dcb564269d Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Thu, 4 Aug 2022 12:36:32 +0100 Subject: [PATCH 199/285] Modified b2c deployment docs to be more clear on the whitelist requirements --- deployment/B2C_Docs/B2C_Deployment.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/deployment/B2C_Docs/B2C_Deployment.md b/deployment/B2C_Docs/B2C_Deployment.md index 94eecc87..27440650 100644 --- a/deployment/B2C_Docs/B2C_Deployment.md +++ b/deployment/B2C_Docs/B2C_Deployment.md @@ -10,10 +10,13 @@ This document will explain the steps that contain user interaction and what is r * If not already set up information is available [here](https://docs.microsoft.com/en-us/azure/active-directory-b2c/tutorial-create-tenant) at step 1: "Create an Azure AD B2C Tenant" * **IMPORTANT: In the current version custom domains are NOT supported, i.e. your tenant domain must be in the DEFAULT format of b2cTenantName.onmicrosoft.com** * You should have ready a **list of the tenant id's for the tenants you wish to give access** - 1. Could either keep it in a list such that you can insert them 1 by 1 into the terminal. - 2. Or optionally you could format it as shown below such that the script can automatically import them itself. - * Create a .txt file that has all the tenant ID's for the tenants you wish to add to the whitelist, with each ID separated onto a newline; an example file with 4 tenant ID's to be added to the whitelist is below - * ![whitelist text file](Images/Deployment/07_1_fileFormat.png) + * Note: the AD tenant you are creating these resources on is **NOT** included in the whitelist by default. By Default this whitelist is empty and no tenants will be able to login/access the resources. + * There are 2 ways to add the tenants you wish to whitelist during the deployment + 1. You can insert them 1 by 1 into the terminal (recommended for a small number of tenants). + 2. You can save them in a file formatted as shown below then give that path to the script so it can import them automatically (recommended for a small number of tenants). + * Create a .txt file that has all the tenant ID's for the tenants you wish to add to the whitelist, with each ID separated onto a newline; an example file with 4 tenant ID's to be added to the whitelist is below + * ![whitelist text file](Images/Deployment/07_1_fileFormat.png) + * If you wish to add or remove tenants from this whitelist after deployment click [here](#update-the-whitelist-after-deployment) for a guide on how to do so. ## Customising names of created resources: From edcc0a2fafd1dc78b50e8037eb98dc4402a57853 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Thu, 4 Aug 2022 12:44:57 +0100 Subject: [PATCH 200/285] Moved B2C related docs into the doc and image folders used for the rest of the docs --- {deployment/B2C_Docs => docs}/B2C_Cleanup.md | 6 +-- .../B2C_Docs => docs}/B2C_Deployment.md | 36 +++++++++--------- docs/DEPLOYMENT_GUIDE.md | 2 +- docs/TROUBLESHOOTING.md | 2 +- images/.DS_Store | Bin 6148 -> 0 bytes .../B2C_Cleanup}/01_tokenInputs.png | Bin .../B2C_Cleanup}/04a_LoginTenant1.png | Bin .../B2C_Cleanup}/04b_output.png | Bin .../B2C_Deployment}/00b_tenantNames.png | Bin .../B2C_Deployment}/01a_LoginTenant1.png | Bin .../B2C_Deployment}/01b_LoginPrompt.png | Bin .../B2C_Deployment}/02a_LoginPrompt.png | Bin .../B2C_Deployment}/07_1_fail.png | Bin .../B2C_Deployment}/07_1_fileFormat.png | Bin .../B2C_Deployment}/07_1_successful.png | Bin .../B2C_Deployment}/07_2_successful.png | Bin .../B2C_Deployment}/08_noFB.png | Bin .../B2C_Deployment}/08_yesFB.png | Bin .../B2C_Deployment}/10taa_switchDirectory.png | Bin .../B2C_Deployment}/10tab_current.png | Bin .../10tb_ManuallyGrantAdminConsent.png | Bin .../B2C_Deployment}/10tc_FullyGranted.png | Bin .../B2C_Deployment}/11_error.png | Bin .../B2C_Deployment}/11_time.png | Bin .../B2C_Deployment}/13_secrets.png | Bin 25 files changed, 23 insertions(+), 23 deletions(-) rename {deployment/B2C_Docs => docs}/B2C_Cleanup.md (87%) rename {deployment/B2C_Docs => docs}/B2C_Deployment.md (88%) delete mode 100644 images/.DS_Store rename {deployment/B2C_Docs/Images/Cleanup => images/B2C_Cleanup}/01_tokenInputs.png (100%) rename {deployment/B2C_Docs/Images/Cleanup => images/B2C_Cleanup}/04a_LoginTenant1.png (100%) rename {deployment/B2C_Docs/Images/Cleanup => images/B2C_Cleanup}/04b_output.png (100%) rename {deployment/B2C_Docs/Images/Deployment => images/B2C_Deployment}/00b_tenantNames.png (100%) rename {deployment/B2C_Docs/Images/Deployment => images/B2C_Deployment}/01a_LoginTenant1.png (100%) rename {deployment/B2C_Docs/Images/Deployment => images/B2C_Deployment}/01b_LoginPrompt.png (100%) rename {deployment/B2C_Docs/Images/Deployment => images/B2C_Deployment}/02a_LoginPrompt.png (100%) rename {deployment/B2C_Docs/Images/Deployment => images/B2C_Deployment}/07_1_fail.png (100%) rename {deployment/B2C_Docs/Images/Deployment => images/B2C_Deployment}/07_1_fileFormat.png (100%) rename {deployment/B2C_Docs/Images/Deployment => images/B2C_Deployment}/07_1_successful.png (100%) rename {deployment/B2C_Docs/Images/Deployment => images/B2C_Deployment}/07_2_successful.png (100%) rename {deployment/B2C_Docs/Images/Deployment => images/B2C_Deployment}/08_noFB.png (100%) rename {deployment/B2C_Docs/Images/Deployment => images/B2C_Deployment}/08_yesFB.png (100%) rename {deployment/B2C_Docs/Images/Deployment => images/B2C_Deployment}/10taa_switchDirectory.png (100%) rename {deployment/B2C_Docs/Images/Deployment => images/B2C_Deployment}/10tab_current.png (100%) rename {deployment/B2C_Docs/Images/Deployment => images/B2C_Deployment}/10tb_ManuallyGrantAdminConsent.png (100%) rename {deployment/B2C_Docs/Images/Deployment => images/B2C_Deployment}/10tc_FullyGranted.png (100%) rename {deployment/B2C_Docs/Images/Deployment => images/B2C_Deployment}/11_error.png (100%) rename {deployment/B2C_Docs/Images/Deployment => images/B2C_Deployment}/11_time.png (100%) rename {deployment/B2C_Docs/Images/Deployment => images/B2C_Deployment}/13_secrets.png (100%) diff --git a/deployment/B2C_Docs/B2C_Cleanup.md b/docs/B2C_Cleanup.md similarity index 87% rename from deployment/B2C_Docs/B2C_Cleanup.md rename to docs/B2C_Cleanup.md index 99aff3b3..d560c214 100644 --- a/deployment/B2C_Docs/B2C_Cleanup.md +++ b/docs/B2C_Cleanup.md @@ -3,7 +3,7 @@ ## Step 1: Getting the token to be used in the HTML REQUESTS -![inputting values for getting token](Images/Cleanup/01_tokenInputs.png) +![inputting values for getting token](../images/B2C_Cleanup/01_tokenInputs.png) * Firstly, you must input the required values of: 1. The name of your b2c tenant you are cleaning up (INCLUDING its extension e.g. the default .onmicrosoft.com) 2. the ID of the permission management application created @@ -16,9 +16,9 @@ ## Step 4: Deleting the generated applications * The applications generated by B2CDeployment.ps1 will now be deleted. You will be prompted to login via your browser twice; when the tenant the application to be deleted is from is different than your currently logged into tenant. When prompted please login via the new tab launched in your browser, then return to your powershell after logging in. - * ![output of deleting apps](Images/Cleanup/04b_output.png) + * ![output of deleting apps](../images/B2C_Cleanup/04b_output.png) -| ![Login to AD Tenant](Images/Cleanup/04a_LoginTenant1.png) | +| ![Login to AD Tenant](../images/B2C_Cleanup/04a_LoginTenant1.png) | |---| | The launched tabs should look similar to the above; please login using it and then switch back to the powershell | diff --git a/deployment/B2C_Docs/B2C_Deployment.md b/docs/B2C_Deployment.md similarity index 88% rename from deployment/B2C_Docs/B2C_Deployment.md rename to docs/B2C_Deployment.md index 27440650..6854c8f6 100644 --- a/deployment/B2C_Docs/B2C_Deployment.md +++ b/docs/B2C_Deployment.md @@ -15,7 +15,7 @@ This document will explain the steps that contain user interaction and what is r 1. You can insert them 1 by 1 into the terminal (recommended for a small number of tenants). 2. You can save them in a file formatted as shown below then give that path to the script so it can import them automatically (recommended for a small number of tenants). * Create a .txt file that has all the tenant ID's for the tenants you wish to add to the whitelist, with each ID separated onto a newline; an example file with 4 tenant ID's to be added to the whitelist is below - * ![whitelist text file](Images/Deployment/07_1_fileFormat.png) + * ![whitelist text file](../images/B2C_Deployment/07_1_fileFormat.png) * If you wish to add or remove tenants from this whitelist after deployment click [here](#update-the-whitelist-after-deployment) for a guide on how to do so. @@ -30,7 +30,7 @@ This document will explain the steps that contain user interaction and what is r ## Step 0: Enter tenant names * You will immediately be prompted to input the name of the B2C and AD tenants you have created:
1. First, input the name of the B2C Tenant you have created (INCLUDING its extension e.g. the default .onmicrosoft.com) - * ![input tenant names](Images/Deployment/00b_tenantNames.png) + * ![input tenant names](../images/B2C_Deployment/00b_tenantNames.png) ## Step 1: Create AD application @@ -38,9 +38,9 @@ This document will explain the steps that contain user interaction and what is r ### Login to AD Tenant via your browser * Your powershell will now prompt you that a pop-up window has launched in your browser and directing you to log in to your AD tenant through it - * ![Login to AD Prompt](Images/Deployment/01b_LoginPrompt.png) + * ![Login to AD Prompt](../images/B2C_Deployment/01b_LoginPrompt.png) -| ![Login to AD Tenant](Images/Deployment/01a_LoginTenant1.png) | +| ![Login to AD Tenant](../images/B2C_Deployment/01a_LoginTenant1.png) | |---| | The launched tab should look similar to the above; please login using it and then switch back to the powershell | @@ -50,9 +50,9 @@ This document will explain the steps that contain user interaction and what is r * After the apps finished creating, the AD has finished being configured and the script will now move on to configure your B2C Tenant. * As before, your powershell will now prompt you that a pop-up window has launched in your browser and directing you to log in to your B2C tenant through it - * ![Login to B2C Prompt](Images/Deployment/02a_LoginPrompt.png) + * ![Login to B2C Prompt](../images/B2C_Deployment/02a_LoginPrompt.png) -| ![Login to B2C Tenant](Images/Deployment/01a_LoginTenant1.png) | +| ![Login to B2C Tenant](../images/B2C_Deployment/01a_LoginTenant1.png) | |---| | The launched tab should look similar to the above; please login using it and then switch back to the powershell | @@ -72,11 +72,11 @@ This document will explain the steps that contain user interaction and what is r ### Choice 1: Inputting via text file (recommended for larger whitelists) * After inputting '1' as your choice, you will now be prompted to input the path to the .txt file you created which contains the tenants you wish to add to your whitelist. The script will now automatically add these tenants to the whitelist. - * ![successful run of importing whitelist via txt file](Images/Deployment/07_1_successful.png) + * ![successful run of importing whitelist via txt file](../images/B2C_Deployment/07_1_successful.png) ### Choice 2: Inputting 1 by 1 to terminal (recommended for smaller whitelists) -* ![inputting ID's](Images/Deployment/07_2_successful.png) +* ![inputting ID's](../images/B2C_Deployment/07_2_successful.png) * After inputting '2' as your choice, you will now be prompted to input 1 tenant ID you wish to add to the whitelist * After doing so, you will now be prompted to input another. * This will continue untill you input 'n' which will end this loop. @@ -87,13 +87,13 @@ This document will explain the steps that contain user interaction and what is r ### Don't link Facebook App * If you do not have a facebook application to link, simply input 'n' when prompted to skip this step - * ![Don't link FB](Images/Deployment/08_noFB.png) + * ![Don't link FB](../images/B2C_Deployment/08_noFB.png) ### Link Facebook App * If you do have a facebook application to link, input 'y' when prompted then input the ID of the Facebook application followed by the secret value for the Facebook application you would like to link - * ![Do link FB](Images/Deployment/08_yesFB.png) + * ![Do link FB](../images/B2C_Deployment/08_yesFB.png) @@ -105,7 +105,7 @@ This document will explain the steps that contain user interaction and what is r ### Input key duration * You will first be prompted to input how long you wish the created keys to be valid for before they expire - * ![key duration](Images/Deployment/11_time.png) + * ![key duration](../images/B2C_Deployment/11_time.png) * If your console returns a 403 bad request error, please click [here](#403-forbidden-error) @@ -116,7 +116,7 @@ This document will explain the steps that contain user interaction and what is r ## Step 13: IMPORTANT - Store Secret Values -![Secret Values](Images/Deployment/13_secrets.png) +![Secret Values](../images/B2C_Deployment/13_secrets.png) * After the script finishes running it will output some important values in green and then pause the script (ID and secret values for the created AD app, Permission Management App, and Web App). * Take this moment to copy/paste those values into a file and store it **somewhere securely** as you may require those secret values again in the future and they will NOT be accessible again. * Also, the Permission Management Applications ID and Secret Value are required for the cleanup script @@ -141,7 +141,7 @@ This document will explain the steps that contain user interaction and what is r ### 400 bad request error * If at any point you receive a 400 bad request error, a tenant with the given ID could not be found. Please check with the admin who gave you that ID that it is correct. - * ![400 bad request error for tenant ID](Images/Deployment/07_1_fail.png) + * ![400 bad request error for tenant ID](../images/B2C_Deployment/07_1_fail.png) * You must then manually add that ID to the deployment on the portal, instructions for doing so can be found [here](#update-the-whitelist-after-deployment) ### Update the whitelist after deployment @@ -177,15 +177,15 @@ This document will explain the steps that contain user interaction and what is r * This step may fail due to a race condition between the granting of admin-consent vs the requirement of its usage in this step; you will know this has occured if you see the error message shown below - * ![error admin-consent race](Images/Deployment/11_error.png) + * ![error admin-consent race](../images/B2C_Deployment/11_error.png) * To solve this issue: * First you must login to your b2c tenant on the Azure Portal. If the b2c tenant is already your active directory in the portal you can skip this step. - * ![Switch directory on portal](Images/Deployment/10taa_switchDirectory.png) + * ![Switch directory on portal](../images/B2C_Deployment/10taa_switchDirectory.png) * Load up the Azure portal; then click on your icon in the top right of the screen, then click "Switch Directory" - * ![ACtive directory](Images/Deployment/10tab_current.png) + * ![ACtive directory](../images/B2C_Deployment/10tab_current.png) * Now click "Switch" for your b2c tenant so it now displays "active" * Next, follow the link highlighted yellow in your console which will take you to the below page. On this page you should see a button called "Grant admin consent for {B2C Tenant Name} circled in red. - * ![Application permissions page](Images/Deployment/10tb_ManuallyGrantAdminConsent.png) + * ![Application permissions page](../images/B2C_Deployment/10tb_ManuallyGrantAdminConsent.png) * After clicking on "Grant Admin Consent" the page should now say all permissions are granted - * ![Application permissions page](Images/Deployment/10tc_FullyGranted.png) + * ![Application permissions page](../images/B2C_Deployment/10tc_FullyGranted.png) * Now simply return to the powershell, wait 10 seconds, and press enter to continue the script diff --git a/docs/DEPLOYMENT_GUIDE.md b/docs/DEPLOYMENT_GUIDE.md index 865b7f68..5fba2ae8 100644 --- a/docs/DEPLOYMENT_GUIDE.md +++ b/docs/DEPLOYMENT_GUIDE.md @@ -73,7 +73,7 @@ Type in 'ad' for AD mode of authentication which will direct you towards 'Deploy Type in 'b2c' for B2C mode of authentication. ![b2cmode.png](/images/b2cmode.png) -**IMPORTANT: If you choose B2C, go to the [B2C setup documentation guide](https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/blob/all-test1/deployment/B2C_Docs/B2C_Deployment.md) for instructions on how to complete B2C deployment.** +**IMPORTANT: If you choose B2C, go to the [B2C setup documentation guide](https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/blob/main/docs/B2C_Deployment.md) for instructions on how to complete B2C deployment.** ## Choose Location diff --git a/docs/TROUBLESHOOTING.md b/docs/TROUBLESHOOTING.md index 8983ad45..6e70f6c7 100644 --- a/docs/TROUBLESHOOTING.md +++ b/docs/TROUBLESHOOTING.md @@ -39,7 +39,7 @@ To remove the services simply run the [cleanup.bat](https://github.com/microsoft When running [cleanup.bat](https://github.com/microsoft/Learn-LTI/blob/main/deployment/cleanup.bat), you will be prompted to answer whether or not you have a b2c tenant to cleanup. ![b2cclean.png](/images/b2cclean.png) * If you chose 'b2c' mode during the deployment, then; when prompted if you have a b2c tenant to cleanup, select 'y' - * After selecting 'y' the script will now run the b2c cleanup, please follow this [guide](https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/blob/consolidated_deploy_branch/deployment/B2C_Docs/B2C_Cleanup.md) for more information on how to cleanup the B2C tenant. + * After selecting 'y' the script will now run the b2c cleanup, please follow this [guide](https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/blob/main/docs/B2C_Cleanup.md) for more information on how to cleanup the B2C tenant. * If you chose 'ad' mode during the deployment, then; when prompted if you have a b2c tenant to cleanup, select 'n' to skip this step diff --git a/images/.DS_Store b/images/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 Date: Thu, 4 Aug 2022 14:22:31 +0100 Subject: [PATCH 201/285] update devtestenv documentation about b2c login configurations for moodle --- docs/DEVTESTENV.md | 50 +++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 47 insertions(+), 3 deletions(-) diff --git a/docs/DEVTESTENV.md b/docs/DEVTESTENV.md index d56e2ad2..06365ceb 100644 --- a/docs/DEVTESTENV.md +++ b/docs/DEVTESTENV.md @@ -10,7 +10,10 @@ Before installing either of the components, ensure you have created an active di The following guide has been developed to allow you to setup a DevTest Environment of Moodle using an Azure Moodle Bitnami Image. -## Setting up your test LMS Environment with AAD Single Sign On. +The DevTest Environment of Moodle can support both [AAD Single Sign in](#Setting-up-your-test-LMS-Environment-with-AAD-Single-Sign-in.) or [Azure AD B2C Multi-tenant Sign in](#Setting-up-your-test-LMS-Environment-with-Azure-AD-B2C-Multitenant-Sign-in) + + +## Setting up your test LMS Environment with AAD Single Sign in. 1. Configuring an LMS: We will be looking at how to configure a Moodle instance to suit the requirements of the solution @@ -38,7 +41,7 @@ The following guide has been developed to allow you to setup a DevTest Environme - Click on the settings blade of the OpenID Connect plugin and scroll down to "Redirect URI" - You will be needing this in the next section when you create an application registration of moodle in Azure Active Directory 3. Add the Moodle instance as an Application in your Azure Active directory (You should have admin or owner rights to your Azure active directory to be able to add applications and assign permissions to them). Most detailed steps can be found at https://docs.moodle.org/310/en/Microsoft_365#Enable_the_OpenID_Connect_Authentication_Plugin -## Here is a summary set of instructions. +### Here is a summary set of instructions. - Sign in to the Microsoft Azure Management Portal. - Click on the Azure Active Directory link from Azure services section, then App Registrations from Manage section on the left. @@ -69,4 +72,45 @@ The following guide has been developed to allow you to setup a DevTest Environme 4. Configuring the Learn LTI Application - Simply now follow the deployment guide to set up the Learn LTI Application, ensure that you login into the Azure CLI as the same user that created the Azure Active Directory within which you aim to deploy the Azure resources - - Follow the remaining deployment guide \ No newline at end of file + - Follow the remaining deployment guide + +## Setting up your test LMS Environment with Azure AD B2C Multitenant Sign in +1. Configuring an LMS: + We will be looking at how to configure a Moodle instance to suit the requirements of the solution + - Host an instance of moodle on a public IP address (You can use a bitnami image https://bitnami.com/stack/moodle) + - Ensure that the domain hosting the moodle instance has an SSL certificate. If it does not have one, add one. (You could potentially use Let's encrypt certification generator as in https://docs.bitnami.com/aws/how-to/generate-install-lets-encrypt-ssl/). If you are using an Azure Bitnami image, you will need to SSH into the Virtual machine and use its terminal. +2. Setting up Multi-tenant Sign in for Azure Active Directory B2C + + - Install and configure Azure AD B2C Connect plugin into Moodle + - Go to https://github.com/UCL-MSc-Learn-LTI/moodle-auth_azureb2c/archive/refs/heads/master.zip and download the Azure AD B2C Connect plugin into your local directory. + - Log into your Moodle instance as an administrator and go to site administration + - Click on plugins and go to install plugins + - Use the "Install plugin from zip file feature" and install the Azure AD B2C Connect plugin + - Next, go to Dashboard/Site administration/Plugins/Manage authentication and scroll down to find the Azure AD B2C Connect plugin + - Enable the Azure AD B2C Connect plugin by clicking the eye button. + ![enable-b2c-plugin](../images/enableB2CPlugin.png) + - Click on the Settings blade of the Azure AD B2C Connect plugin + - Configure the Azure AD B2C Connect plugin: + - **Azure B2C scope**: openid + - To get the user_impersonation_url, switch to the B2C tenant in Azure Portal, go to Azure AD B2C - App registrations and find the B2C Web app. + The user_impersonation_url can be found at API Permissions - user_impersonation. + ![user-impersonation](../images/user_impersonation.png) + - **Provider name**: Choose a good name, e.g., Azure AD B2C Connect + - **Client ID**: The client ID of the B2C Web app + - **Client secret**: The client secret of the B2C Web app + - **Authorization endpoint**: https://.b2clogin.com/.onmicrosoft.com/oauth2/v2.0/authorize?p=b2c_1a_signin + - The b2c_tenant_name is the name of the B2C tenant that is used to setup the login process. For example, if the domain of the B2C tenant is testb2c.onmicrosoft.com, then b2c_tenant_name should be **testb2c** + - **Forgot Password endpoint**: https://.b2clogin.com/.onmicrosoft.com/oauth2/v2.0/authorize?p=b2c_1a_passwordreset + - **Edit Profile endpoint**: https://.b2clogin.com/.onmicrosoft.com/oauth2/v2.0/authorize?p=b2c_1a_profileedit + - **Token endpoint**: https://.b2clogin.com/.onmicrosoft.com/oauth2/v2.0/token?p=b2c_1a_signin + - **Resource**: graph.windows.net + - **Redirect URI**: Record this value since it will be used in the next step + - Click "Save Changes" + - Register the Redirect URI to the B2C web app + - Switch to the B2C tenant in Azure Portal, go to Azure AD B2C - App registrations and find the B2C Web app. + - Go to Authentication. Under "Web" tab, click "Add URI" + - Add the Redirect URI recorded in the last step to the Web Redirect URIs. + ![web-redirect](../images/web-redirect.png) + - Click "Save" + + From e9eb1e665cf09dc51adf0656c7ab9c61c622952b Mon Sep 17 00:00:00 2001 From: Tianchen Zhang Date: Thu, 4 Aug 2022 14:24:09 +0100 Subject: [PATCH 202/285] fix: add documentation images --- images/enableB2CPlugin.png | Bin 0 -> 8760 bytes images/user_impersonation.png | Bin 0 -> 224331 bytes images/web-redirect.png | Bin 0 -> 54491 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 images/enableB2CPlugin.png create mode 100644 images/user_impersonation.png create mode 100644 images/web-redirect.png diff --git a/images/enableB2CPlugin.png b/images/enableB2CPlugin.png new file mode 100644 index 0000000000000000000000000000000000000000..efa835f0c068ae9dc8824c8149256c47a1d560eb GIT binary patch literal 8760 zcmdV81y@~36E1vk3xNdC~ze4Fc`i* zZB!J^)?jaVEfhIRN<7D-;hcp>eLf*IG>7W!3lgHN!;XvgOAp{_CZoxV!inSw7r@kG zT`b?Fh#7Dn1FFXFOb4`AXOF!?M)W4n0>kXuI^ULe)YSa!&0zc5+SUq!xcyvG8*`X> z`Kn|O!Ow;ZFr?~D24&;H{kaKPS8^{d0|0X5ZJ3&QOL}YZ=VH47_}clsixh2IA&g3Q zww+S)pinvD3sx1=%oClL&En?7Wa6q{pBGj1>CrIz`LeTcEjN(tb z;N$FeWc^PFx<;M@$OUsygaeG0PRzP^k34{b|hH;oSM%b!6y8!wsAhblV`X7UP zh+OC=%{`10Si|7xm#O!Vzksm7=nDj+!ER@Vn5Tx6eBMpVFSpg}I|<&_Lt5XwmXl;41^M)b4y-NGO;%9xGoxYN6=m&zYO1d^%dq;zs`k0qvwB?a)HxuJ6S^2Ws;m zzKE5up66g`8>UgyY2 z9j1-Mm*5OakRK0M6K$D?5!#uR`=T17o`|J8}fCS znc&xrbSNm?{#2+SyO*^?sJgY!mPH}T7RX>Y$?9MUy|Vhy^uC{j?YqLy0m}%Hf%AB* z%eJT|j8OwDZr>F6F*iPJuxF>+y7@X+90iey_&5&Y7E}oB+}3wl;TMwPggpv44u)Z_ z_jjS+dV4N7<6RxW)MGg;50}t+t-okMu5rQFV=u;s#RNt94c_on1VOpoo z=E=|;Bzy_#^dT)R%UiCWtDnBEHLu`h&F6JFWBr(~VD!^c4kQ+S?L9w<$~PzUetVz; z5RCV}Lhjk4J^a)w2oI8a&HmC8s_Ru%M`tbDre)9oaC99w@Vd^D&IJd+mI91nZ&4Zs zP+(WIA+C4&qjH)FcfC^uaZ8HCJOlN_gZB3oMTCpt#rTAfi`MNy0~XtDPX~qUCtvlh z3=%~bY~fvlpO!AJDIlmD#uic&Jh9us7VRYC{TY(IpHmhZA0iUJz^C93`Vk9w(!rSD z_(7v&i7>=?r=s2wVMgP@8nQDWkP9i}p$wAbK`w@32}YcR!mbWuC1fs_bRu-mp$^+4 z4~q&_VxWc&o%thW_i&YY*?SA$@q3E72nRjfF9c&<$xV#Q-5;D8#s)|?7|;8hAv&-t z2V^!>&V!s;UgCKPlMvIOJHTo5KI5m-CCf^Z5n2*s;iUzd6#Jb;h!SBS9tW?UQ5Adu z22Tfvh8zaBh75#Q^$zsnAcYtT+7aBx>Wgv8gA^y#CDg^*huH_r@I7Q@7wc7Q6nrR% zuE3v6DwQj!7T7H6M+rB@c}Q+;p5E%6W?Z_r;X$6t~agX52GRqOev5ILO zV+);%X~D#{XMGxR8vh9Y8-8fu416=gR{Mr*51v4_UdV=Z&tYI@SdwtIaI^48I7ZkB z=4O9H|9O9G_&jDN^9e=?%Zv?~m+8=ihrnr47D)sN49T=4b821ERZ>cFV5+#(d`iaW zV+KY#IEE2=4I{^yvgtHE99$qTk>tXp6;u+`52&!AQmEyq?Fo(v zLkU1?Cymv{9M$TwnlfcICJhITRE@}*3~Mb5kAXnTo|+GfWz}pJm#cGQ%(IR@R({7o z4grn|t!S%K_d}GxrMod)l=s&9}l*+i5%5;XPCq2 zMop3oRj;d3#}rK(fZ4$EO93>nMAO7(8hDz@Kn(;L+z$7<#SI-TF0D(=#->&5Yz_ju z-sKNcgsV+#E$1r~D;3St%RS2`%`7dQH?|juu4T7P+e2qq+s$3Iiyc zBT^A@<`LyFDYATKt0TDLOEOY*RJBrdYBIU2JKOx=A6yi?{eh*qK$E*Ma0z=Kn~m^7 z5t)gCzJ%aFuFjy2s>KYMox*NrSngKeQlE$(z8Wt9vz6h-GfitbuSwv%_pa$~_^uF! z5UGGPP0El+T68)3j)t7o%xr4K@X=7n4)|4hcp)w&?zR}em{NX81Ob=J;HvNQ=I1Z! z2JGZq#2yx|<4F_rr33b1*H{{yH~p-wUljV&acwxcZJwfG)IU0ZyfHy!kY{u>bl>T_ zC~@IRULGwOwdM}$41ASGBvK{bLwX#A)Acf5|@_xoXTpXpE@I^PGyz3#bI`xXRQ`zS&9`M z8OwsY*B$wQ8qofew6Euz_qXA12(bzzrKrHMk@$uJLusElf9_snJ|-Aan`s@? z+dnh>WEiT!905zT(aEmOG40!o&sCnQ)UTjWyPiLQDIHIAiL+7_P|H=F*2d9VZJKjE zuBp$Y6hxV)^rLiANmisTaqX0@IvIY*x^}>nWQnuBtCMRxpDQ?%x}I&AHA)Rhg=67a ziK*E>qAk-gZ@{pjUU@J|HPm>#@jos!Z?iCWOgd6k51peh=WvQxadA-@tmtRoZINn) zcT7A1aYJ^~KKj1kW}q|EvGZK^?9ln+N!`KwOI99Eai;p(3ZA*CjiiMo$0wJn=Ap{{ zF8oA+rS}?G6`VO#Syon#`oU5*u>isz=~3dhr7 zIDi*ak4M$Om)-Z7w_ILlpojcDLY1M{)EU%Jo|jL@yrn7@&%~z^;fWqJEcM}*9InJ? z!y%>kD&v})+O5u9JFZLNTbPa35$%hf61Io;$8AfMr^u`O?HrFd8`?u2$B#w`k~oU5 zCuff*j+Hlr2m&|_oZ{~GxAd>)BcvCknH)Pj`CQa)#xG?%%}bX(>3ZpjI$E+|ALlREwO(3RZ;5fkxGi4? zADnL#4hl`$V|ik^6TQCNOZi^6E2o{v`KSo zaZ^#13_j=Hp&OhV^OQKCgX-|`u>9oku?8Iy&TU{5NeQ6@ncxVWInZ-xbR7IuSn+w^ ziS5N1Y8aZcEArM0MD#N10Y^*|@$CSjY@{k?EF}e?c$1+4AVFpT@HYwMZD72Ox3fx2 zAOPy^j`TJJvq1lu1^bW%_Kyr;_+`kaARs38c2_X4GcvLUn%dX{!8Z%uT+Ny(s@khc zNwOQ*SkdSi+UOh6I9u8Nf&e(3+22GfBYQnOXDdrIYJz4~Z|QmC;AW!Z z{B8dKoA{UTKS0%gfh?>{|3&_1=KqUS0vg!~*jT+W+H?O~n7_gQo%|cfN&74C|0LqC zEdSQNrI{O+llFflEtOsbgw ziqH+mc=59R|408OHldu+xe+Wkti%4#`Y!`!pLY#LH1dCY_#0%4tc$oI+6(#H>pzaXwY>TK zwfsi@ROSNwphXCnf6@PA2!J>OeMfMFp;_>U5)0y!AS+Te$bSvVbkTGX_2$V%B4u=1a$2YO{jj0tf@z20SKp;Ov2wMJ2{R^}3#8V<-juAcbiuYn`e1*= z-$nDrRMBnpr&8`MP{I$G|D^RV=ZiCtdSgW*PYczSHEIz{7KnHQssG7^2T*%ucQUNXhxhkuvgmC2{o>2x@!Ph$JfrXzaIOD1k& z!tQ~C4!AQqN59+*6q)mC;G1)QD$eTgbk-_Xx`eRcLL;;71cgzt86LXqJX}FO8=`3j z8a1zJy{uWi^12e7iRjMk(bo`I$ER@vcd|t^JKO^vHm}R6!qn1^RJ|ULYesbt2@937 zz8oJgv3WlEhdBf5{NpO~aAU1>OBXKs(Cn@cl$u>G3tsN`3p4ZAyt^;#a!GujQy{!J z30rTXp6)Lt{2n%HHZyq!B}%?G19wMBT0C<5rHp>&nVw%<#9VBT49%~3l3rtWl=;Dy z>cPUnp;0FkeAkJ^bvlVLpDhu+v0OA7oY+A6uqb7{+!Xx{6~SqC;mfJ$VFNbKiQm?w z+^@>>rhvEH9#Plsj>Sf;>lVv5$Mp76MK>ICG+S~wt-9~?*amk%?;NLVv|R5|H>nQs z`#gSVa(_bi z8gO%$xgs=sP#@-q&5p@O>=)kKE0~DJVZT=;H!;7)iimqE|GF3$9$2a4O~1cln&|o% zOS9to=|FHr+vusyt8*1MY*fC2-^k!R#%M=j^Wl0eT%UOO6Gc$MK6*(EeZ+q_6d<4Gj9dQTpZKJliu3JJfUyP>n_+%T2Y2It_& zs376rZ<^T$R=caB7wKN7a=|=gQ)F+W=a_TAH zrWjnN)5$mQm0K}tpcOJ@lrL7BQ1g(>)WTh_!!dJ)bCuA>=vk&)G-ZOxoIkg$9%Mb! z4fZ%vhhDoiS6(Ml>?!nB^kiAv?*0O$o%ZTSor*x>!3<38O*)qwGr8&+I-AQyT!p~t zK%$NZ^=5wuakJfa%@3o&D87f=Lu#WD$dPD5k#g6^Zx;(F@)eqDF6Bl*xB9!s`{GSp zJhWLv^4c^`7kSsK1IlcaQt^6>dZYFA>>OWIV7+8AyVh+UmD&SBu^gjhV=@-kthwJf zR3>%A^)>TxzF~6B6nReQ$#%744r&^AVQiuF{&<6XABB9jox}c;P1ZFA#X{_M^_PpD zNRDfZjWrOs-;3-M6GT{RU>Ft-aRA(-x(%SmQ%<_*lqil`qha`?%vSuFtHTxW$+iBR zGDgb7#OwN+<#(-=eHO|G@^{N{^NvG1kTCWL`(RzfSEAgfOvWN>j=MU?L#y6fO`tAS z<@O82;*n-+E+Vc#lI9G; zRiV9uV!s)o_5Bh{X38T5e@K3&=$XuD(E=V67wutQgeXlHEmLJb3Cg5hlfiv2Sixrw z!6*G4%{;hpchj6qj*AI=glSLAN&_5;l^L8(TBy$^r=o7K3FhOqZO+3%y(}V~z3II0 zg|nMRE34~K5*8~WZ9Ik2goE47NqiVOqxil&aXIr2XhSN4OU&Ip3Vo?2&h61+;U$YE z#jEpFjS%Dhk8SwpqpAG0t@^p+tFzL*p^rve!DP=JKb*p|w=>QCUTC^>c)R9r)m++@BoYaQPQYlA z;;H2L=W*HHRlgSD^}Jo?L8rYYvkgJB?5MDLBDx~(zLKidI{l5bPb zPpy{X>L{?s+xUwEa~D_f>x0=mnbV9pl3d}=@|ZGn(eV>42Q67y`fe1fuw22YD0x0^ zKujG;7-p^t%aaCJdZq2llgr^Jg&$*O0{o0G6UU3S^R8Yy?3W+7C_6k4uN2Y@-CSIT z^PKuy!QqWHI7_l6*?E5URsE1}mKSP=<%89xlt`euDTo*`501s+v=?o;6Jl-9YPD{E zk5?cpgGA(=i%f|@wyjhN9#c)}pD^#RSB}nM9QR@nF^+tS4YP4W>*HvpF0sNReKMIV z&sSi)V1I+T9$f zk(We72K?UFaj-#{{Kd3_F^It)t|!+LolOR20+_bmkx(~9IbSW%ik04{ffmCGQvaa- zaQ&R8FNeD_MrmT~;xr4=?71mjb6oWv!m1j+;n~@6*6>*Mi_Ch5U+|}RB26vgQ+??7 z;>lC_h8J;WNKA%NhQnJekK7(mqLW(mS#XvHI;?N57!8If-4vljD}i8@|f zq!PAAK*vn2>TF*jCAN#B>b37}glJSV;%R3K9-D;i6N z&y`M&)M%vJ8;}&;950C*`dj?`B>g~0(7LC)k$!HY(Ry`0lv_EffnuiV-I!QdI1)wd zlzQ@`U1OZx2oljW$h)$tvhqlt3&9xC2M5qf?90UZBXkiZoPAU`K&`-2jthAqXnMB} zI8VcM7>CZQiwgmZJRvYpHOl{c%ZMxh1fn*|3+Q3CU&M?cYRbsadPGz1xAs@97iQ8# z)uoJ+zkSq#WMW-xuL7rU=d$s-x|kOd`r5q@)jA#>$t$|6 z@)Zsac#I{TU;R{9Ag61xEq}BLeKVh*8M$Ku&S9;>UQ>pqD(8aWN}-nljR`|9}f*uzGP1Z5O8{G|4fKA09eT(H}f98fD~l z1GLzfT)r9di!!2*U{P}I?w~meFCJ-^Hjdj7{k@Wu)z{J+VS*Lmw-JzQZ|b*32X z7ogMU&%0~-l+h{{N$~J^?REyUzX!r&TPh!lNG^TlX)E1KkccJ-(3;y2vrV4z)g@=h zsm;I`U(Hew%wraocR5Gm^UW5fV{AXe+0c70RBQ8Sl9 zckQ$?t=bPiIG0y~X^DA=WYYTJv523vEU6DHR=^Y(dE>gyf4)h8eOu z3;r%rF1qTkZwNJvtR7KtMjacxWBV9KeC8XH3QOEYoXvO zjeL%z^3v~Rv?4KVrBR{*lGFp&vq?BgHofktoDXcVX&=aUL34rJQshPuCR5F z>N)y|f{Xw=rE+@?1;(PXhkE|ZMUW11jRwX8-y+x13ew~kh5L=xaV0e_+s z+WWE?H|qagodN&}X*W2IiDHJv!29D_C(pKPY|~ZBV#ji{ys#ELW+HR{lkx%E{cgFQ z{J`PxvMlSgVSb-0Sa4K#%>?)&ywymf=(D172KRHEp%`*MjGtF^FWnc=NI+o829i^I+ z;4Dj_t1OX9x~o7TG#yNAhmX-PayDDu4a6SImJBc1gv%>bj3GOmf_GP8YF>Ljma{0B zSJ?OmEhdeYp4@bG|6D|0@__yLdJ@k7H7~; z-~=(WP&@lh*$+~r*t;Y$g94?e2hqN_qf>DgS9i(%J|iya9(awrBd%n=rwv$+=P=&j zr0iZ?vB)c2-3Rh}4)J3RMCr-rt4pPi`>GYMrgDtHwj31YT}CSLa~7P3E50(f2(yz$ z6z+anO!&R$y>NgweF{u%&-pCNB2$m%ero_JqG_8-=NQ(Jm3P9IpSu1tx%JfPk^AlF z?F6db%rKHCoxi^XWia%sDqM16u(*0W&*p*9Yx4ckp^@!EzC+`7+&Gs$p1Jtd6crPa7Oddc_5DA*p8F2~ literal 0 HcmV?d00001 diff --git a/images/user_impersonation.png b/images/user_impersonation.png new file mode 100644 index 0000000000000000000000000000000000000000..2e3f39645eca037abdf3fa5840a85a95f1cf19ef GIT binary patch literal 224331 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
6TE1k>j!h!Altl6 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

21HH*4G#AW@NT&K=DHNMIFfLk+rZZ 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

AP6hWvj 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

i_w+Y?4c8~BO@@3!)S6&y?&z=6|uUWV3vc3y> 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�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 literal 0 HcmV?d00001 From ce7755572c8c11c0acdb59e257c26d38d418506b Mon Sep 17 00:00:00 2001 From: Sundram Goyal Date: Thu, 4 Aug 2022 16:11:21 +0100 Subject: [PATCH 203/285] platform page update --- deployment/Deploy.ps1 | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 7ae68164..1dede9a9 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -234,7 +234,21 @@ process { Write-Log -Message "User Entered Subscription Name/ID: $SubscriptionNameOrId" } } - $UserEmailAddress = $ActiveSubscription.user.name + $UserEmailAddress = @($ActiveSubscription.user.name) + Write-Host "Email that will be allowed to access platforms page:" $UserEmailAddress + $choice = Read-Host "Want to add more users/email(y/n):" + $choice = $choice.Trim() + if($choice -eq "y"){ + $extramail = Read-Host "Enter user's email or 'n' to exit:" + While($extramail -ne 'n'){ + $UserEmailAddress = $UserEmailAddress + $extramail + $extramail = Read-Host "Enter user's email or 'n' to exit:" + } + Write-Host "Updated list of emails that will be allowed to access platforms page:" $UserEmailAddress + } + + + #endregion #region Choose Region for Deployment From 95e2e0a007266f78fcca8c0c5e3b991aceaa5a7f Mon Sep 17 00:00:00 2001 From: Sundram Goyal Date: Thu, 4 Aug 2022 17:27:12 +0100 Subject: [PATCH 204/285] platform page update --- deployment/Deploy.ps1 | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 1dede9a9..25ba6c0b 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "AllB2C_test2_MSLearnLTI", - [string]$AppName = "AllB2C_test2_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "Allad_test2_MSLearnLTI", + [string]$AppName = "Allad_test2_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null @@ -234,14 +234,14 @@ process { Write-Log -Message "User Entered Subscription Name/ID: $SubscriptionNameOrId" } } - $UserEmailAddress = @($ActiveSubscription.user.name) + $UserEmailAddress = $ActiveSubscription.user.name Write-Host "Email that will be allowed to access platforms page:" $UserEmailAddress $choice = Read-Host "Want to add more users/email(y/n):" $choice = $choice.Trim() if($choice -eq "y"){ $extramail = Read-Host "Enter user's email or 'n' to exit:" While($extramail -ne 'n'){ - $UserEmailAddress = $UserEmailAddress + $extramail + $UserEmailAddress = $UserEmailAddress + ";" + $extramail $extramail = Read-Host "Enter user's email or 'n' to exit:" } Write-Host "Updated list of emails that will be allowed to access platforms page:" $UserEmailAddress From 8c55328aef0c729c11b91b5b572dd071a4822d28 Mon Sep 17 00:00:00 2001 From: danielmusselwhite <56388919+danielmusselwhite@users.noreply.github.com> Date: Fri, 5 Aug 2022 10:41:44 +0100 Subject: [PATCH 205/285] Update DEPLOYMENT_GUIDE.md --- docs/DEPLOYMENT_GUIDE.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/DEPLOYMENT_GUIDE.md b/docs/DEPLOYMENT_GUIDE.md index 5fba2ae8..5f452d6a 100644 --- a/docs/DEPLOYMENT_GUIDE.md +++ b/docs/DEPLOYMENT_GUIDE.md @@ -66,12 +66,12 @@ B2C Mode is recommended due to it being possible to set it up for either single- ### AD Mode setup -Type in 'ad' for AD mode of authentication which will direct you towards 'Deploy to Azure Subscription using the script'. +Type in 'ad' for AD mode of authentication (which only allows single-tenant). ![admode.png](/images/admode.png) -### B2C Mode setup +### B2C Mode setup (recommended due to extensibility) -Type in 'b2c' for B2C mode of authentication. +Type in 'b2c' for B2C mode of authentication (which allows single-tenant or multi-tenant and can be changed after deployment). ![b2cmode.png](/images/b2cmode.png) **IMPORTANT: If you choose B2C, go to the [B2C setup documentation guide](https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/blob/main/docs/B2C_Deployment.md) for instructions on how to complete B2C deployment.** From ffb03e2b6b62bad95d07fc36023610298ffe5582 Mon Sep 17 00:00:00 2001 From: duynguyen3010 <106589346+duynguyen3010@users.noreply.github.com> Date: Mon, 8 Aug 2022 15:18:02 +0100 Subject: [PATCH 206/285] Create UITest.yml --- .github/workflows/UITest.yml | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 .github/workflows/UITest.yml diff --git a/.github/workflows/UITest.yml b/.github/workflows/UITest.yml new file mode 100644 index 00000000..59872247 --- /dev/null +++ b/.github/workflows/UITest.yml @@ -0,0 +1,30 @@ +# This is a basic workflow to help you get started with Actions + +name: UI Test + +# Controls when the workflow will run +on: + # Triggers the workflow on push or pull request events but only for the "main" branch + push: + branches: [ "Selenium_UI_test" ] + pull_request: + branches: [ "Selenium_UI_test" ] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + # This workflow contains a single job called "build" + uitest: + # The type of runner that the job will run on + runs-on: window-latest + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v3 + + # Runs a single command using the runners shell + - name: Run a one-line script + run: echo Test action is working! From a1ff07a006a30d284561ffb230e48bb8f2ccb34c Mon Sep 17 00:00:00 2001 From: duynguyen3010 <106589346+duynguyen3010@users.noreply.github.com> Date: Mon, 8 Aug 2022 15:18:56 +0100 Subject: [PATCH 207/285] Delete UITest.yml --- .github/workflows/UITest.yml | 30 ------------------------------ 1 file changed, 30 deletions(-) delete mode 100644 .github/workflows/UITest.yml diff --git a/.github/workflows/UITest.yml b/.github/workflows/UITest.yml deleted file mode 100644 index 59872247..00000000 --- a/.github/workflows/UITest.yml +++ /dev/null @@ -1,30 +0,0 @@ -# This is a basic workflow to help you get started with Actions - -name: UI Test - -# Controls when the workflow will run -on: - # Triggers the workflow on push or pull request events but only for the "main" branch - push: - branches: [ "Selenium_UI_test" ] - pull_request: - branches: [ "Selenium_UI_test" ] - - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - -# A workflow run is made up of one or more jobs that can run sequentially or in parallel -jobs: - # This workflow contains a single job called "build" - uitest: - # The type of runner that the job will run on - runs-on: window-latest - - # Steps represent a sequence of tasks that will be executed as part of the job - steps: - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v3 - - # Runs a single command using the runners shell - - name: Run a one-line script - run: echo Test action is working! From c2b45cc9db070bd4eed2d167665fdf18f7df5edd Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Tue, 9 Aug 2022 11:04:41 +0100 Subject: [PATCH 208/285] Fixed markdown link in b2c deployment script --- deployment/B2CDeployment.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 095cce4c..edb44769 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -514,7 +514,7 @@ try{ catch{ if(($Error[0].Exception.Message).contains("403")){ Write-Color "Red" "403 forbidden error likely due to admin-consent having not yet been granted; please switch your directory to the b2c tenant ($B2cTenantNameFull) in the Azure portal then copy and paste the yellow link into your browser to manually grant admin-consent then press enter." - Write-Color "Red" "Please check the markdown https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/deployment/B2C_Docs/B2C_Deployment.md if you require assistance on how to do this." + Write-Color "Red" "Please check the markdown https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/docs/B2C_Deployment.md if you require assistance on how to do this." $PMA_Page = "https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/~/CallAnAPI/appId/$PermissionClientID/isMSAApp~/false" Write-Color "Yellow" "$PMA_Page" Read-Host "Press enter after manually granting the admin consent permission and waiting 10 seconds" From 2482fef5da86621d15487962bc00160444ec01de Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Tue, 9 Aug 2022 12:35:57 +0100 Subject: [PATCH 209/285] Fixed bug where setting subscription back upon returning from b2c script was failing due to using out of scope nameOrId variable --- deployment/Deploy.ps1 | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 91658352..0344f80e 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -217,10 +217,19 @@ process { $REACT_APP_EDNA_B2C_CLIENT_ID = $results[-4] #webclient ID $REACT_APP_EDNA_AUTH_CLIENT_ID = $results[-4] #webclient ID $b2c_secret = $results[-3] #webclient secret - $b2c_secret = $b2c_secret # turning the secret into a form we can store $REACT_APP_EDNA_B2C_TENANT = $results[-2] #b2c tenant name $B2C_ObjectID = $results[-1] # b2c webapp id that needs the SPA uri + Write-Log -Message "Returned the follow values from the b2c setup script- + `nAD_Tenant_Name_full: $AD_Tenant_Name_full + `nb2c_tenant_name_full: $b2c_tenant_name_full + `nREACT_APP_EDNA_B2C_CLIENT_ID: $REACT_APP_EDNA_B2C_CLIENT_ID + `nREACT_APP_EDNA_AUTH_CLIENT_ID: $REACT_APP_EDNA_AUTH_CLIENT_ID + `nb2c_secret: $b2c_secret + `nREACT_APP_EDNA_B2C_TENANT: $REACT_APP_EDNA_B2C_TENANT + `nB2C_ObjectID: $B2C_ObjectID" + + #update b2c deploy template $policy_name = "b2c_1a_signin" @@ -243,9 +252,9 @@ process { # log back in to the azure account now we've returned from B2C Script - Write-Log -Message "Logging back in to Azure Account after returning frmo B2C Script" + Write-Log -Message "Logging back in to Azure Account for tenant $AD_Tenant_Name_full and subscription $SubscriptionNameOrId after returning frmo B2C Script" az login --tenant $AD_Tenant_Name_full #logging back into the azure account for the AD tenant - az account set --subscription $NameOrId #setting the active subscription back to the stored value + az account set --subscription $SubscriptionNameOrId #setting the active subscription back to the stored value } #else its AD load the AD azuredeploy template else{ From ff0ab75babb5350a1f03d8c6579602d30c0b7ae6 Mon Sep 17 00:00:00 2001 From: duynguyen3010 <106589346+duynguyen3010@users.noreply.github.com> Date: Thu, 11 Aug 2022 18:37:10 +0100 Subject: [PATCH 210/285] Create UITest.yml --- .github/workflows/UITest.yml | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 .github/workflows/UITest.yml diff --git a/.github/workflows/UITest.yml b/.github/workflows/UITest.yml new file mode 100644 index 00000000..5b7e3e8f --- /dev/null +++ b/.github/workflows/UITest.yml @@ -0,0 +1,24 @@ +# This action runs the Selenium automated tests + +name: UI Automated Testing +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v3 + + - name: Add VSTest.console.exe to the PATH + uses: darenm/Setup-VSTest@v1 + + - name: Run functional tests + run: vstest.console.exe "Selenium_Nunit_UI_Test\bin\Debug\net6.0\Selenium_Nunit_UI_Test.dll" From 0d4a44a428f5e82f25fc0f6884378ab4dfdfec2d Mon Sep 17 00:00:00 2001 From: duynguyen3010 <106589346+duynguyen3010@users.noreply.github.com> Date: Thu, 11 Aug 2022 18:38:18 +0100 Subject: [PATCH 211/285] Delete UITest.yml --- .github/workflows/UITest.yml | 24 ------------------------ 1 file changed, 24 deletions(-) delete mode 100644 .github/workflows/UITest.yml diff --git a/.github/workflows/UITest.yml b/.github/workflows/UITest.yml deleted file mode 100644 index 5b7e3e8f..00000000 --- a/.github/workflows/UITest.yml +++ /dev/null @@ -1,24 +0,0 @@ -# This action runs the Selenium automated tests - -name: UI Automated Testing -on: - push: - branches: [ "main" ] - pull_request: - branches: [ "main" ] - - workflow_dispatch: - -jobs: - build: - runs-on: ubuntu-latest - - steps: - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v3 - - - name: Add VSTest.console.exe to the PATH - uses: darenm/Setup-VSTest@v1 - - - name: Run functional tests - run: vstest.console.exe "Selenium_Nunit_UI_Test\bin\Debug\net6.0\Selenium_Nunit_UI_Test.dll" From 8540f0e56b7c9a518e04e654bba432f84b19d56f Mon Sep 17 00:00:00 2001 From: Tianchen Zhang Date: Mon, 15 Aug 2022 02:31:42 +0100 Subject: [PATCH 212/285] feat: unit testing for validation; remove code cloning --- backend/Edna.Lite.sln | 9 ++ .../Edna.Platforms/PlatformsApi.cs | 53 +--------- .../Edna.Tests.Utils/Edna.Tests.Utils.csproj | 26 +++++ .../MockConfigurationManager.cs | 24 +++++ .../Tests/Edna.Tests.Utils/ValidationTest.cs | 99 +++++++++++++++++++ .../Edna.Utils.Http/HttpHeadersExtensions.cs | 5 +- 6 files changed, 164 insertions(+), 52 deletions(-) create mode 100644 backend/Tests/Edna.Tests.Utils/Edna.Tests.Utils.csproj create mode 100644 backend/Tests/Edna.Tests.Utils/MockConfigurationManager.cs create mode 100644 backend/Tests/Edna.Tests.Utils/ValidationTest.cs diff --git a/backend/Edna.Lite.sln b/backend/Edna.Lite.sln index 6a7e8655..f85222fc 100644 --- a/backend/Edna.Lite.sln +++ b/backend/Edna.Lite.sln @@ -41,6 +41,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Edna.Bindings.Lti1", "Bindi EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Edna.Bindings.User", "Bindings\Edna.Bindings.User\Edna.Bindings.User.csproj", "{6C829E23-9827-48CA-BC5D-9EC166F79475}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{26D2F024-6ED4-4673-958E-100BF2361AA9}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Edna.Tests.Utils", "Tests\Edna.Tests.Utils\Edna.Tests.Utils.csproj", "{DA77D908-9088-4CA6-9120-139D8DA9EA96}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -107,6 +111,10 @@ Global {6C829E23-9827-48CA-BC5D-9EC166F79475}.Debug|Any CPU.Build.0 = Debug|Any CPU {6C829E23-9827-48CA-BC5D-9EC166F79475}.Release|Any CPU.ActiveCfg = Release|Any CPU {6C829E23-9827-48CA-BC5D-9EC166F79475}.Release|Any CPU.Build.0 = Release|Any CPU + {DA77D908-9088-4CA6-9120-139D8DA9EA96}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DA77D908-9088-4CA6-9120-139D8DA9EA96}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DA77D908-9088-4CA6-9120-139D8DA9EA96}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DA77D908-9088-4CA6-9120-139D8DA9EA96}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -127,6 +135,7 @@ Global {AAF190CC-6BE7-474A-8215-AEE4FC982B4C} = {84D0D444-A012-4A2C-8E28-C98D901D96B0} {6E98F8FB-019A-4DE3-BAB8-24B7C8A10580} = {65999A96-B776-46AD-A419-40D4CE1A3941} {6C829E23-9827-48CA-BC5D-9EC166F79475} = {65999A96-B776-46AD-A419-40D4CE1A3941} + {DA77D908-9088-4CA6-9120-139D8DA9EA96} = {26D2F024-6ED4-4673-958E-100BF2361AA9} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {0794D86D-4281-4111-B1D5-DBCCE16A5973} diff --git a/backend/Functions/Edna.Platforms/Edna.Platforms/PlatformsApi.cs b/backend/Functions/Edna.Platforms/Edna.Platforms/PlatformsApi.cs index 527b8a47..d6960281 100644 --- a/backend/Functions/Edna.Platforms/Edna.Platforms/PlatformsApi.cs +++ b/backend/Functions/Edna.Platforms/Edna.Platforms/PlatformsApi.cs @@ -158,61 +158,16 @@ private async Task ValidatePermission(HttpRequest req) return true; #endif - _logger.LogInformation("In validate"); if (!await req.Headers.ValidateToken(_adManager, _b2CManager, ValidAudience, message => _logger.LogError(message))) return false; - if (!req.Headers.TryGetTokenClaims(out Claim[] claims, message => _logger.LogError(message))) - return false; - - // By checking appidacr claim, we can know if the call was made by a user or by the system. - // https://docs.microsoft.com/en-us/azure/active-directory/develop/access-tokens - var isB2CToken = claims.FirstOrDefault(claim => claim.Type == "_isB2CToken")?.Value; - string appidacr = claims.FirstOrDefault(claim => claim.Type == "appidacr")?.Value; - string azpacr = claims.FirstOrDefault(claim => claim.Type == "azpacr")?.Value; - // made by system - if (appidacr == "2" || azpacr == "2") - return true; - if (appidacr == "0" || azpacr == "0" || isB2CToken == "true") - { - if (!TryGetUserEmails(claims, out List userEmails)) - { - _logger.LogError("Could not get any user email / uid for the current user."); - return false; - } - _logger.LogInformation(String.Join(",",userEmails)); - _logger.LogInformation(String.Join(",",AllowedUsers)); - // return value of if user email is in the allowed users list - return AllowedUsers.Intersect(userEmails).Any(); - } - + bool isSystemCallOrUserWithValidEmail = req.Headers.TryGetUserEmails(out List userEmails); + if (isSystemCallOrUserWithValidEmail) + return userEmails.Count <= 0 || AllowedUsers.Intersect(userEmails).Any(); + _logger.LogError("Could not get user email."); return false; } - private bool TryGetUserEmails(IEnumerable claims, out List userEmails) - { - userEmails = new List(); - if (claims == null) - return false; - - Claim[] claimsArray = claims.ToArray(); - - userEmails = PossibleEmailClaimTypes - .Select(claimType => claimsArray.FirstOrDefault(claim => claim.Type == claimType)) - .Where(claim => claim != null) - .Select(claim => claim.Value) - .Distinct() - .ToList(); - - _logger.LogInformation("In get user"); - // string emails = claimsArray.FirstOrDefault(claim => claim.Type == "emails").Value; - // string[] emailsCollection = emails.Split(","); - // userEmails.Concat(emailsCollection); - - - return userEmails.Any(); - } - private string GeneratePlatformID() { StringBuilder platformID = new StringBuilder(); diff --git a/backend/Tests/Edna.Tests.Utils/Edna.Tests.Utils.csproj b/backend/Tests/Edna.Tests.Utils/Edna.Tests.Utils.csproj new file mode 100644 index 00000000..27107043 --- /dev/null +++ b/backend/Tests/Edna.Tests.Utils/Edna.Tests.Utils.csproj @@ -0,0 +1,26 @@ + + + + netcoreapp3.1 + + false + + Edna.Tests.Utils + + + + + + + + + + + + + + + + + + diff --git a/backend/Tests/Edna.Tests.Utils/MockConfigurationManager.cs b/backend/Tests/Edna.Tests.Utils/MockConfigurationManager.cs new file mode 100644 index 00000000..015625b2 --- /dev/null +++ b/backend/Tests/Edna.Tests.Utils/MockConfigurationManager.cs @@ -0,0 +1,24 @@ +using System.Threading; +using System.Threading.Tasks; +using Microsoft.IdentityModel.Protocols; + +namespace Edna.Tests.Utils +{ + public class MockConfigurationManager : IConfigurationManager where T : class + { + private T _configuration; + + public MockConfigurationManager(T configuration) + { + _configuration = configuration; + } + + public async Task GetConfigurationAsync(CancellationToken cancel) + { + await Task.Delay(10, cancel); + return _configuration; + } + + public void RequestRefresh() { } + } +} \ No newline at end of file diff --git a/backend/Tests/Edna.Tests.Utils/ValidationTest.cs b/backend/Tests/Edna.Tests.Utils/ValidationTest.cs new file mode 100644 index 00000000..6ad1bdd4 --- /dev/null +++ b/backend/Tests/Edna.Tests.Utils/ValidationTest.cs @@ -0,0 +1,99 @@ +using System; +using System.Collections.Generic; +using System.IdentityModel.Tokens.Jwt; +using System.Security.Claims; +using System.Security.Cryptography; +using System.Threading.Tasks; +using Edna.Utils.Http; +using Microsoft.AspNetCore.Http; +using Microsoft.IdentityModel.Protocols.OpenIdConnect; +using Microsoft.IdentityModel.Tokens; +using NUnit.Framework; + +namespace Edna.Tests.Utils +{ + public class ValidationTest + { + private string _issuer; + private string _audience; + private string _email = "test@example.com"; + private RsaSecurityKey _key; + private DateTime _nbf, _exp; + private OpenIdConnectConfiguration _b2CConfig, _adConfig; + private MockConfigurationManager _b2CManager, _adManager; + + [SetUp] + public void Setup() + { + _issuer = Guid.NewGuid().ToString(); + _audience = "https://testb2ctenant.b2clogin.com/" + Guid.NewGuid() + "/v2.0/"; + _key = new RsaSecurityKey(RSA.Create(4096)); + _nbf = DateTime.Now; + _exp = _nbf.Add(new TimeSpan(0, 1, 0, 0)); + _b2CConfig = new OpenIdConnectConfiguration { Issuer = _issuer }; + _b2CConfig.SigningKeys.Add(_key); + _adConfig = new OpenIdConnectConfiguration { Issuer = _issuer }; + _adConfig.SigningKeys.Add(_key); + _b2CManager = new MockConfigurationManager(_b2CConfig); + _adManager = new MockConfigurationManager(_adConfig); + } + + [Test] + public async Task TestTokenValidation() + { + var claims = new[] + { + new Claim(JwtRegisteredClaimNames.Email, _email), + }; + var signingKeys = new SigningCredentials(_key, SecurityAlgorithms.RsaSha256); + var token = new JwtSecurityTokenHandler().WriteToken(new JwtSecurityToken(_issuer, _audience, claims, _nbf, _exp, signingKeys)); + var headers = new HeaderDictionary { { "Authorization", "bearer " + token } }; + Assert.IsTrue(await headers.ValidateToken(_b2CManager, _adManager, _audience)); + } + + [Test] + public void TestB2CValidatePermission() + { + var claims = new[] + { + new Claim(JwtRegisteredClaimNames.Email, _email), + new Claim("_isB2CToken", "true"), + }; + var signingKeys = new SigningCredentials(_key, SecurityAlgorithms.RsaSha256); + var token = new JwtSecurityTokenHandler().WriteToken(new JwtSecurityToken(_issuer, _audience, claims, _nbf, _exp, signingKeys)); + var headers = new HeaderDictionary { { "Authorization", "bearer " + token } }; + Assert.IsTrue(headers.TryGetUserEmails(out List userEmails)); + Assert.GreaterOrEqual(userEmails.Count, 1); + } + + [Test] + public void TestAdUserValidatePermission() + { + var claims = new[] + { + new Claim(JwtRegisteredClaimNames.Email, _email), + new Claim("azpacr", "0") + }; + var signingKeys = new SigningCredentials(_key, SecurityAlgorithms.RsaSha256); + var token = new JwtSecurityTokenHandler().WriteToken(new JwtSecurityToken(_issuer, _audience, claims, _nbf, _exp, signingKeys)); + var headers = new HeaderDictionary { { "Authorization", "bearer " + token } }; + Assert.IsTrue(headers.TryGetUserEmails(out List userEmails)); + Assert.GreaterOrEqual(userEmails.Count, 1); + } + + [Test] + public void TestAdSystemValidatePermission() + { + var claims = new[] + { + new Claim(JwtRegisteredClaimNames.Email, _email), + new Claim("azpacr", "2") + }; + var signingKeys = new SigningCredentials(_key, SecurityAlgorithms.RsaSha256); + var token = new JwtSecurityTokenHandler().WriteToken(new JwtSecurityToken(_issuer, _audience, claims, _nbf, _exp, signingKeys)); + var headers = new HeaderDictionary { { "Authorization", "bearer " + token } }; + Assert.IsTrue(headers.TryGetUserEmails(out List userEmails)); + Assert.IsTrue(userEmails.Count == 0); + } + } +} \ No newline at end of file diff --git a/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/HttpHeadersExtensions.cs b/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/HttpHeadersExtensions.cs index e5d6b094..79a0564b 100644 --- a/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/HttpHeadersExtensions.cs +++ b/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/HttpHeadersExtensions.cs @@ -22,11 +22,10 @@ public static class HttpHeadersExtensions private static readonly JwtSecurityTokenHandler JwtSecurityTokenHandler = new JwtSecurityTokenHandler(); public static async Task ValidateToken(this IHeaderDictionary headers, - ConfigurationManager adConfigurationManager, - ConfigurationManager b2CConfigurationManager, + IConfigurationManager adConfigurationManager, + IConfigurationManager b2CConfigurationManager, string validAudience, Action logAction = null) { - IdentityModelEventSource.ShowPII = true; if (!headers.ContainsKey("Authorization")) { logAction?.Invoke("No Authorization header was found in the request."); From 87747fbf93af5671d0efe4c7db6af3b837da7236 Mon Sep 17 00:00:00 2001 From: Tianchen Zhang Date: Mon, 15 Aug 2022 02:43:13 +0100 Subject: [PATCH 213/285] temp: unit test github actions on test branch --- .github/workflows/unit-test.yml | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 .github/workflows/unit-test.yml diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml new file mode 100644 index 00000000..82287387 --- /dev/null +++ b/.github/workflows/unit-test.yml @@ -0,0 +1,28 @@ +name: unit test + +on: + push: + branches: [ TZ_Unit_Test ] + pull_request: + branches: [ TZ_Unit_Test ] + +jobs: + build: + runs-on: windows-latest + + env: + SOURCE_DIR: ${{ github.workspace }}\backend + DOTNET_VERSION: "3.1.101" + + steps: + - uses: actions/checkout@v2 + - name: Setup .NET Core + uses: actions/setup-dotnet@v1 + with: + dotnet-version: ${{ env.DOTNET_VERSION }} + - name: Install dependencies + run: dotnet restore ${{ env.SOURCE_DIR }} + - name: Build + run: dotnet build ${{ env.SOURCE_DIR }} --configuration Release --no-restore + - name: Test + run: dotnet test ${{ env.SOURCE_DIR }} --no-restore --verbosity normal \ No newline at end of file From af1360736020bde34ae80b3676ac05e1e412a83f Mon Sep 17 00:00:00 2001 From: Tianchen Zhang Date: Mon, 15 Aug 2022 02:58:40 +0100 Subject: [PATCH 214/285] fix: change RSA key in unit testing to 2048 bit to make the tests faster --- backend/Tests/Edna.Tests.Utils/ValidationTest.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/Tests/Edna.Tests.Utils/ValidationTest.cs b/backend/Tests/Edna.Tests.Utils/ValidationTest.cs index 6ad1bdd4..05647810 100644 --- a/backend/Tests/Edna.Tests.Utils/ValidationTest.cs +++ b/backend/Tests/Edna.Tests.Utils/ValidationTest.cs @@ -27,7 +27,7 @@ public void Setup() { _issuer = Guid.NewGuid().ToString(); _audience = "https://testb2ctenant.b2clogin.com/" + Guid.NewGuid() + "/v2.0/"; - _key = new RsaSecurityKey(RSA.Create(4096)); + _key = new RsaSecurityKey(RSA.Create(2048)); _nbf = DateTime.Now; _exp = _nbf.Add(new TimeSpan(0, 1, 0, 0)); _b2CConfig = new OpenIdConnectConfiguration { Issuer = _issuer }; From 453e0d8a4c376d3533ffdd8987f5b1ee577be1f5 Mon Sep 17 00:00:00 2001 From: danielmusselwhite <56388919+danielmusselwhite@users.noreply.github.com> Date: Mon, 15 Aug 2022 10:42:34 +0100 Subject: [PATCH 215/285] Alphabetized Location List displayed in deploy.ps1 --- deployment/Deploy.ps1 | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 0344f80e..22c9bace 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -277,7 +277,8 @@ process { while(1){ try{ if(!$LocationName) { - Write-Host "$(az account list-locations --output table --query "[].{Name:name}" | Out-String)`n" + $LocationNames = az account list-locations --output table --query "[].{Name:name}" + Write-Host "$($LocationNames[2..$LocationNames.Length] | Sort-Object | Out-String)`n" $LocationName = Read-Host 'Enter Location From Above List for Resource Provisioning' #trimming the input for empty spaces, if any $LocationName = $LocationName.Trim() @@ -479,4 +480,4 @@ process { Stop-Transcript $exit = Read-Host 'Press any Key to Exit' } -} \ No newline at end of file +} From fa87f97e5273c6998e3ec19d5da43edb7a59d075 Mon Sep 17 00:00:00 2001 From: Tianchen Zhang Date: Mon, 15 Aug 2022 10:45:26 +0100 Subject: [PATCH 216/285] unit test github actions triggered on branch all_test-2 --- .github/workflows/unit-test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml index 82287387..31f4e82c 100644 --- a/.github/workflows/unit-test.yml +++ b/.github/workflows/unit-test.yml @@ -2,9 +2,9 @@ name: unit test on: push: - branches: [ TZ_Unit_Test ] + branches: [ all_test-2 ] pull_request: - branches: [ TZ_Unit_Test ] + branches: [ all_test-2 ] jobs: build: From 7e7b2abd549877da9e7b714ae860665f2ef336e6 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Mon, 15 Aug 2022 11:54:00 +0100 Subject: [PATCH 217/285] npm build cleanup --- client/src/App.tsx | 4 +--- client/src/Stores/Users.store.ts | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/client/src/App.tsx b/client/src/App.tsx index 436a1dca..f1bc7b52 100644 --- a/client/src/App.tsx +++ b/client/src/App.tsx @@ -4,8 +4,6 @@ *--------------------------------------------------------------------------------------------*/ import React from 'react'; -import { useState } from 'react'; -import axios from 'axios'; import { BrowserRouter } from 'react-router-dom'; import { RootStore } from './Stores/Root.store'; import { StoreProvider } from './Stores/Core'; @@ -17,7 +15,7 @@ import { AppAuthConfig } from './Core/Auth/AppAuthConfig'; import { initializeIcons } from '@fluentui/react'; import { appTheme } from './Core/Themes/MainTheme'; import { PlatformPage } from './Features/Platform/PlatformPage'; -import { PublicClientApplication, InteractionType, InteractionRequiredAuthError } from '@azure/msal-browser'; +import { InteractionType } from '@azure/msal-browser'; import { MsalAuthenticationTemplate, MsalProvider } from '@azure/msal-react'; import { AxiosBasicAuthInitializer } from './Core/Auth/AxiosBasicAuthInitializer'; diff --git a/client/src/Stores/Users.store.ts b/client/src/Stores/Users.store.ts index 148c66ee..7dceb996 100644 --- a/client/src/Stores/Users.store.ts +++ b/client/src/Stores/Users.store.ts @@ -14,7 +14,6 @@ import { UserRole } from '../Models/UserRole.model'; import { UserDto } from '../Dtos/User.dto'; import _ from 'lodash'; import { AppAuthConfig } from '../Core/Auth/AppAuthConfig'; -import { Account } from 'msal'; import { AccountInfo } from '@azure/msal-browser'; import { WithError } from '../Core/Utils/Axios/safeData'; import { ErrorPageContent } from '../Core/Components/ErrorPageContent'; @@ -29,7 +28,7 @@ export class UsersStore extends ChildStore { @observable userDetails: User | null = null; @observable userImageUrl = ''; @observable participants: User[] | null = null; - @observable account: Account | null = null; + @observable account: AccountInfo | null = null; @observable errorContent: ErrorPageContent | undefined = undefined; initialize(): void { @@ -94,7 +93,6 @@ export class UsersStore extends ChildStore { userDto.givenName || userDto.familyName ? `${userDto.givenName ? userDto.givenName + ' ' : ''}${userDto.familyName || ''}` : ''; - console.log(displayName); return { roleDisplayName: this.roleIdToRoleDisplayName.get(userDto.role)!, displayName, From 58a03303ba18cdeacf18d264ee9c7ebd352d310b Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Mon, 15 Aug 2022 13:10:32 +0100 Subject: [PATCH 218/285] Fixed issue with double single quotes added to .env.development when in AD mode; and with placeholder not being replaced --- deployment/Deploy.ps1 | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 0344f80e..3c315e8a 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -5,11 +5,11 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "MSLearnLti", - [string]$AppName = "MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "AdOnly2-MSLearnLti", + [string]$AppName = "AdOnly2-MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, - [string]$SubscriptionNameOrId = $null, - [string]$LocationName = $null + [string]$SubscriptionNameOrId = "550c8aca-87a0-4da2-8e2e-10aca7b2e187", + [string]$LocationName = "uksouth" ) process { @@ -194,12 +194,12 @@ process { #region "B2C STEP 0: Calling B2CDeployment to set up the b2c script and retrieving the returned values to be used later on" - $REACT_APP_EDNA_B2C_CLIENT_ID = "'NA'" - $REACT_APP_EDNA_AUTH_CLIENT_ID = "'Placeholder'" # either replaced below by returned value of b2c script if b2cOrAD = "b2c", or just before step 11.a to AAD_Client_ID's ($appinfo.appId) value if b2cOrAD = "ad" - $b2c_secret = "'NA'" - $REACT_APP_EDNA_B2C_TENANT = "'NA'" - $B2C_ObjectID = "'NA'" - $b2c_tenant_name_full = "'NA'" + $REACT_APP_EDNA_B2C_CLIENT_ID = 'NA' + $REACT_APP_EDNA_AUTH_CLIENT_ID = 'Placeholder' # either replaced below by returned value of b2c script if b2cOrAD = "b2c", or at end of step 4 to AAD_Client_ID's ($appinfo.appId) value if b2cOrAD = "ad" so it is ready for its usage when updating .env.development and .env.deploy + $b2c_secret = 'NA' + $REACT_APP_EDNA_B2C_TENANT = 'NA' + $B2C_ObjectID = 'NA' + $b2c_tenant_name_full = 'NA' if($b2cOrAD -eq "b2c"){ Write-Title "B2C Step #0: Running the B2C Setup Script" @@ -277,7 +277,8 @@ process { while(1){ try{ if(!$LocationName) { - Write-Host "$(az account list-locations --output table --query "[].{Name:name}" | Out-String)`n" + $LocationNames = az account list-locations --output table --query "[].{Name:name}" + Write-Host "$($LocationNames[2..$LocationNames.Length] | Sort-Object | Out-String)`n" $LocationName = Read-Host 'Enter Location From Above List for Resource Provisioning' #trimming the input for empty spaces, if any $LocationName = $LocationName.Trim() @@ -337,6 +338,12 @@ process { } Write-Host 'Resource Group Created Successfully' + + + # if this is being run in AD mode then update the placeholder for REACT_APP_EDNA_AUTH_CLIENT_ID to the ADD_CLIENT_ID + if($b2cOrAD -eq "ad"){ + $REACT_APP_EDNA_AUTH_CLIENT_ID = $appinfo.appId # if 'ad' then set to AAD_CLIENT_ID's vaue + } #endregion #region Provision Resources inside Resource Group on Azure using ARM template @@ -422,7 +429,7 @@ process { . .\Install-Client.ps1 Write-Title "STEP #11.A - Updating client's .env.production file" - + $ClientUpdateConfigParams = @{ ConfigPath="../client/.env.production"; AppId=$appinfo.appId; From 083c736dc1cb333b9e29526d3b6c0a45f50c7889 Mon Sep 17 00:00:00 2001 From: Tianchen Zhang Date: Mon, 15 Aug 2022 15:53:42 +0100 Subject: [PATCH 219/285] doc: add unit test descriptions --- backend/Tests/Edna.Tests.Utils/ValidationTest.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/backend/Tests/Edna.Tests.Utils/ValidationTest.cs b/backend/Tests/Edna.Tests.Utils/ValidationTest.cs index 05647810..c60a2c8d 100644 --- a/backend/Tests/Edna.Tests.Utils/ValidationTest.cs +++ b/backend/Tests/Edna.Tests.Utils/ValidationTest.cs @@ -38,6 +38,7 @@ public void Setup() _adManager = new MockConfigurationManager(_adConfig); } + // Test the token validation process by creating, signing and validating a token [Test] public async Task TestTokenValidation() { @@ -51,6 +52,7 @@ public async Task TestTokenValidation() Assert.IsTrue(await headers.ValidateToken(_b2CManager, _adManager, _audience)); } + // Test TryGetUserEmails method when passing a B2C token. Emails should be retrieved from the token. [Test] public void TestB2CValidatePermission() { @@ -66,6 +68,7 @@ public void TestB2CValidatePermission() Assert.GreaterOrEqual(userEmails.Count, 1); } + // Test TryGetUserEmails method when passing an AD token from user function calls. Emails should be retrieved from the token. [Test] public void TestAdUserValidatePermission() { @@ -81,6 +84,7 @@ public void TestAdUserValidatePermission() Assert.GreaterOrEqual(userEmails.Count, 1); } + // Test TryGetUserEmails method when passing an AD token from system function calls. No email should be retrieved from the token. [Test] public void TestAdSystemValidatePermission() { From 5b9b68968074f78a078de18a32cf8293b4d47d4c Mon Sep 17 00:00:00 2001 From: Tianchen Zhang Date: Mon, 15 Aug 2022 16:26:05 +0100 Subject: [PATCH 220/285] fix: null metadata address error in ad mode --- .../Edna.AssignmentLearnContent/Startup.cs | 5 +++-- .../Edna.AssignmentLinks/Startup.cs | 5 +++-- .../Edna.Assignments/Edna.Assignments/Startup.cs | 5 +++-- .../Edna.Platforms/Edna.Platforms/Startup.cs | 5 +++-- backend/Functions/Edna.Users/Edna.Users/Startup.cs | 5 +++-- .../Edna.Utils.Http/HttpHeadersExtensions.cs | 13 ++++++++----- 6 files changed, 23 insertions(+), 15 deletions(-) diff --git a/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/Startup.cs b/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/Startup.cs index 0da5964c..2d7903c2 100644 --- a/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/Startup.cs +++ b/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/Startup.cs @@ -34,8 +34,9 @@ public void Configure(IWebJobsBuilder builder) builder.Services.AddSingleton((s) => new ConfigurationManager( Environment.GetEnvironmentVariable("ADConfigurationUrl"), new OpenIdConnectConfigurationRetriever())); - builder.Services.AddSingleton((s) => new ConfigurationManager( - Environment.GetEnvironmentVariable("B2CConfigurationUrl"), new OpenIdConnectConfigurationRetriever())); + if (Environment.GetEnvironmentVariable("B2CConfigurationUrl") != null) + builder.Services.AddSingleton((s) => new ConfigurationManager( + Environment.GetEnvironmentVariable("B2CConfigurationUrl"), new OpenIdConnectConfigurationRetriever())); } } } \ No newline at end of file diff --git a/backend/Functions/Edna.AssignmentLinks/Edna.AssignmentLinks/Startup.cs b/backend/Functions/Edna.AssignmentLinks/Edna.AssignmentLinks/Startup.cs index 5e6eeb18..dae79cc6 100644 --- a/backend/Functions/Edna.AssignmentLinks/Edna.AssignmentLinks/Startup.cs +++ b/backend/Functions/Edna.AssignmentLinks/Edna.AssignmentLinks/Startup.cs @@ -31,8 +31,9 @@ public void Configure(IWebJobsBuilder builder) builder.Services.AddSingleton((s) => new ConfigurationManager( Environment.GetEnvironmentVariable("ADConfigurationUrl"), new OpenIdConnectConfigurationRetriever())); - builder.Services.AddSingleton((s) => new ConfigurationManager( - Environment.GetEnvironmentVariable("B2CConfigurationUrl"), new OpenIdConnectConfigurationRetriever())); + if (Environment.GetEnvironmentVariable("B2CConfigurationUrl") != null) + builder.Services.AddSingleton((s) => new ConfigurationManager( + Environment.GetEnvironmentVariable("B2CConfigurationUrl"), new OpenIdConnectConfigurationRetriever())); } } } \ No newline at end of file diff --git a/backend/Functions/Edna.Assignments/Edna.Assignments/Startup.cs b/backend/Functions/Edna.Assignments/Edna.Assignments/Startup.cs index bb019a53..dbd94580 100644 --- a/backend/Functions/Edna.Assignments/Edna.Assignments/Startup.cs +++ b/backend/Functions/Edna.Assignments/Edna.Assignments/Startup.cs @@ -31,8 +31,9 @@ public void Configure(IWebJobsBuilder builder) builder.Services.AddSingleton((s) => new ConfigurationManager( Environment.GetEnvironmentVariable("ADConfigurationUrl"), new OpenIdConnectConfigurationRetriever())); - builder.Services.AddSingleton((s) => new ConfigurationManager( - Environment.GetEnvironmentVariable("B2CConfigurationUrl"), new OpenIdConnectConfigurationRetriever())); + if (Environment.GetEnvironmentVariable("B2CConfigurationUrl") != null) + builder.Services.AddSingleton((s) => new ConfigurationManager( + Environment.GetEnvironmentVariable("B2CConfigurationUrl"), new OpenIdConnectConfigurationRetriever())); } } } \ No newline at end of file diff --git a/backend/Functions/Edna.Platforms/Edna.Platforms/Startup.cs b/backend/Functions/Edna.Platforms/Edna.Platforms/Startup.cs index 2813fc34..d2a28f60 100644 --- a/backend/Functions/Edna.Platforms/Edna.Platforms/Startup.cs +++ b/backend/Functions/Edna.Platforms/Edna.Platforms/Startup.cs @@ -31,8 +31,9 @@ public void Configure(IWebJobsBuilder builder) builder.Services.AddSingleton((s) => new ConfigurationManager( Environment.GetEnvironmentVariable("ADConfigurationUrl"), new OpenIdConnectConfigurationRetriever())); - builder.Services.AddSingleton((s) => new ConfigurationManager( - Environment.GetEnvironmentVariable("B2CConfigurationUrl"), new OpenIdConnectConfigurationRetriever())); + if (Environment.GetEnvironmentVariable("B2CConfigurationUrl") != null) + builder.Services.AddSingleton((s) => new ConfigurationManager( + Environment.GetEnvironmentVariable("B2CConfigurationUrl"), new OpenIdConnectConfigurationRetriever())); } } } \ No newline at end of file diff --git a/backend/Functions/Edna.Users/Edna.Users/Startup.cs b/backend/Functions/Edna.Users/Edna.Users/Startup.cs index 35fb2127..f1379d94 100644 --- a/backend/Functions/Edna.Users/Edna.Users/Startup.cs +++ b/backend/Functions/Edna.Users/Edna.Users/Startup.cs @@ -36,8 +36,9 @@ public void Configure(IWebJobsBuilder builder) builder.Services.AddSingleton((s) => new ConfigurationManager( Environment.GetEnvironmentVariable("ADConfigurationUrl"), new OpenIdConnectConfigurationRetriever())); - builder.Services.AddSingleton((s) => new ConfigurationManager( - Environment.GetEnvironmentVariable("B2CConfigurationUrl"), new OpenIdConnectConfigurationRetriever())); + if (Environment.GetEnvironmentVariable("B2CConfigurationUrl") != null) + builder.Services.AddSingleton((s) => new ConfigurationManager( + Environment.GetEnvironmentVariable("B2CConfigurationUrl"), new OpenIdConnectConfigurationRetriever())); } } } \ No newline at end of file diff --git a/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/HttpHeadersExtensions.cs b/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/HttpHeadersExtensions.cs index e5d6b094..9700d7de 100644 --- a/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/HttpHeadersExtensions.cs +++ b/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/HttpHeadersExtensions.cs @@ -37,12 +37,15 @@ public static async Task ValidateToken(this IHeaderDictionary headers, var token = authorizationContent?.Split(' ')[1]; try { - var b2CConfig = await b2CConfigurationManager.GetConfigurationAsync(default); var adConfig = await adConfigurationManager.GetConfigurationAsync(default); - var signingKeys = b2CConfig.SigningKeys; - foreach (var key in adConfig.SigningKeys) + var signingKeys = adConfig.SigningKeys; + var validIssuers = new List { adConfig.Issuer }; + if (b2CConfigurationManager != null) { - signingKeys.Add(key); + var b2CConfig = await b2CConfigurationManager.GetConfigurationAsync(default); + foreach (var key in b2CConfig.SigningKeys) + signingKeys.Add(key); + validIssuers.Add(b2CConfig.Issuer); } var validationParameters = new TokenValidationParameters { @@ -52,7 +55,7 @@ public static async Task ValidateToken(this IHeaderDictionary headers, ValidateLifetime = true, RequireSignedTokens = true, IssuerSigningKeys = signingKeys, - ValidIssuers = new List{b2CConfig.Issuer, adConfig.Issuer}, + ValidIssuers = validIssuers, ValidAudiences = validAudience.Split(',') }; var principal = JwtSecurityTokenHandler.ValidateToken(token, validationParameters, out _); From 5bed432948d0994a5cf3d08bf1c7f071f7b69902 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Mon, 15 Aug 2022 17:01:01 +0100 Subject: [PATCH 221/285] added code for adding the user_impersonation scope to the AD app --- deployment/Deploy.ps1 | 38 ++++++++++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index be630cd1..450b7932 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "AdOnly2-MSLearnLti", - [string]$AppName = "AdOnly2-MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "AdOnly3-MSLearnLti", + [string]$AppName = "AdOnly3-MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = "550c8aca-87a0-4da2-8e2e-10aca7b2e187", [string]$LocationName = "uksouth" @@ -349,7 +349,7 @@ process { #region Provision Resources inside Resource Group on Azure using ARM template Write-Title 'STEP #6 - Creating Resources in Azure' - $userObjectId = az ad signed-in-user show --query id # requires 2.37 or igher + $userObjectId = az ad signed-in-user show --query id # requires 2.37 or higher $templateFileName = "azuredeploy.json" $deploymentName = "Deployment-$ExecutionStartTime" Write-Log -Message "Deploying ARM Template to Azure inside ResourceGroup: $ResourceGroupName with DeploymentName: $deploymentName, TemplateFile: $templateFileName, AppClientId: $($appinfo.appId), IdentifiedURI: $($appinfo.identifierUris)" @@ -402,8 +402,38 @@ process { $body = '{\"spa\":{\"redirectUris\":[\"' + $AppRedirectUrl + '\"]}}' Write-Log -Message "Pointing to $graphUrl and using body $body" az rest --method PATCH --uri $graphUrl --headers 'Content-Type=application/json' --body $body - #Intentionally not catching an exception here since the app update commands behavior (output) is different from others + + if($b2cOrAD -eq "ad"){ + # adding the user_impersonation scope to the app, required for client side auth + $appApiInfo = $appinfo.api + $appScopeGUID = [guid]::NewGuid() + $UserImpersonationScope = "{ + `"adminConsentDescription`": `"Allow the application to access $AppName on behalf of the signed-in user.`", + `"adminConsentDisplayName`": `"Access $AppName`", + `"id`": `"$appScopeGUID`", + `"isEnabled`": true, + `"type`": `"User`", + `"userConsentDescription`": null, + `"userConsentDisplayName`": null, + `"value`": `"user_impersonation`" + }" | ConvertFrom-Json + $appApiInfo.oauth2PermissionScopes += $UserImpersonationScope + ConvertTo-Json -InputObject $appApiInfo | Out-File -FilePath "userImpersonationScope.json" + az ad app update --id $appinfo.appId --set api=@userImpersonationScope.json --only-show-errors + + # granting user_impersonation to the web app + # az ad app permission grant --id $WebClientID --api $appinfo.appId --scope "user_impersonation" --only-show-errors > $null + # az ad app permission add --id $WebClientID --api $appinfo.appId --api-permissions "$appScopeGUID=Scope" --only-show-errors + + Remove-Item userImpersonationScope.json + } + + + #endregion + + + Write-Host 'App Update Completed Successfully' #endregion From d4ad13f6019946dbe3e993c7995d3a707ad7ae01 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Mon, 15 Aug 2022 18:02:12 +0100 Subject: [PATCH 222/285] added the ADConfigurationUrl and ValidAudience into the ADtemplate to fix issues on AD run --- deployment/Deploy.ps1 | 57 ++++++++++++++------------- deployment/azuredeployADtemplate.json | 20 +++++++--- 2 files changed, 45 insertions(+), 32 deletions(-) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 450b7932..dbcd68f3 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "AdOnly3-MSLearnLti", - [string]$AppName = "AdOnly3-MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "AdOnly4-MSLearnLti", + [string]$AppName = "AdOnly4-MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = "550c8aca-87a0-4da2-8e2e-10aca7b2e187", [string]$LocationName = "uksouth" @@ -258,7 +258,10 @@ process { } #else its AD load the AD azuredeploy template else{ - ((Get-Content -path ".\azuredeployADTemplate.json" -Raw) -replace '', ("'"+$uniqueIdentifier+"'")) | Set-Content -path (".\azuredeploy.json") + $AD_Tenant_Name_full = az rest --method get --url https://graph.microsoft.com/v1.0/domains --query 'value[?isDefault].id' -o tsv + $OPENID_AD_CONFIG_URL_IDENTIFIER = "https://login.microsoft.com/${AD_Tenant_Name_full}/v2.0/.well-known/openid-configuration" + ((Get-Content -path ".\azuredeployADTemplate.json" -Raw) -replace '', ("'"+$uniqueIdentifier+"'")) ` + -replace '', ($OPENID_AD_CONFIG_URL_IDENTIFIER) | Set-Content -path (".\azuredeploy.json") } @@ -404,30 +407,30 @@ process { az rest --method PATCH --uri $graphUrl --headers 'Content-Type=application/json' --body $body #Intentionally not catching an exception here since the app update commands behavior (output) is different from others - if($b2cOrAD -eq "ad"){ - # adding the user_impersonation scope to the app, required for client side auth - $appApiInfo = $appinfo.api - $appScopeGUID = [guid]::NewGuid() - $UserImpersonationScope = "{ - `"adminConsentDescription`": `"Allow the application to access $AppName on behalf of the signed-in user.`", - `"adminConsentDisplayName`": `"Access $AppName`", - `"id`": `"$appScopeGUID`", - `"isEnabled`": true, - `"type`": `"User`", - `"userConsentDescription`": null, - `"userConsentDisplayName`": null, - `"value`": `"user_impersonation`" - }" | ConvertFrom-Json - $appApiInfo.oauth2PermissionScopes += $UserImpersonationScope - ConvertTo-Json -InputObject $appApiInfo | Out-File -FilePath "userImpersonationScope.json" - az ad app update --id $appinfo.appId --set api=@userImpersonationScope.json --only-show-errors - - # granting user_impersonation to the web app - # az ad app permission grant --id $WebClientID --api $appinfo.appId --scope "user_impersonation" --only-show-errors > $null - # az ad app permission add --id $WebClientID --api $appinfo.appId --api-permissions "$appScopeGUID=Scope" --only-show-errors - - Remove-Item userImpersonationScope.json - } + + # adding the user_impersonation scope to the app, required for client side auth + $appApiInfo = $appinfo.api + $appScopeGUID = [guid]::NewGuid() + $UserImpersonationScope = "{ + `"adminConsentDescription`": `"Allow the application to access $AppName on behalf of the signed-in user.`", + `"adminConsentDisplayName`": `"Access $AppName`", + `"id`": `"$appScopeGUID`", + `"isEnabled`": true, + `"type`": `"User`", + `"userConsentDescription`": null, + `"userConsentDisplayName`": null, + `"value`": `"user_impersonation`" + }" | ConvertFrom-Json + $appApiInfo.oauth2PermissionScopes += $UserImpersonationScope + ConvertTo-Json -InputObject $appApiInfo | Out-File -FilePath "userImpersonationScope.json" + az ad app update --id $appinfo.appId --set api=@userImpersonationScope.json --only-show-errors + + # granting user_impersonation to the web app + # az ad app permission grant --id $WebClientID --api $appinfo.appId --scope "user_impersonation" --only-show-errors > $null + # az ad app permission add --id $WebClientID --api $appinfo.appId --api-permissions "$appScopeGUID=Scope" --only-show-errors + + Remove-Item userImpersonationScope.json + #endregion diff --git a/deployment/azuredeployADtemplate.json b/deployment/azuredeployADtemplate.json index 0f8a1d7a..a1d4fa8d 100644 --- a/deployment/azuredeployADtemplate.json +++ b/deployment/azuredeployADtemplate.json @@ -219,7 +219,9 @@ "WEBSITE_CONTENTSHARE": "[toLower(concat('users' , variables('ProjectNameSuffix')))]", "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('users' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", - "WEBSITE_RUN_FROM_PACKAGE": "1" + "WEBSITE_RUN_FROM_PACKAGE": "1", + "ADConfigurationUrl": "", + "ValidAudience": "[toLower(parameters('appRegistrationClientId'))]" } }, { @@ -242,7 +244,9 @@ "WEBSITE_CONTENTSHARE": "[toLower(concat('assignments' , variables('ProjectNameSuffix')))]", "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('assignments' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", - "WEBSITE_RUN_FROM_PACKAGE": "1" + "WEBSITE_RUN_FROM_PACKAGE": "1", + "ADConfigurationUrl": "", + "ValidAudience": "[toLower(parameters('appRegistrationClientId'))]" } }, { @@ -265,7 +269,9 @@ "WEBSITE_CONTENTSHARE": "[toLower(concat('platforms' , variables('ProjectNameSuffix')))]", "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('platforms' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", - "WEBSITE_RUN_FROM_PACKAGE": "1" + "WEBSITE_RUN_FROM_PACKAGE": "1", + "ADConfigurationUrl": "", + "ValidAudience": "[toLower(parameters('appRegistrationClientId'))]" } }, { @@ -287,7 +293,9 @@ "WEBSITE_CONTENTSHARE": "[toLower(concat('links' , variables('ProjectNameSuffix')))]", "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('links' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", - "WEBSITE_RUN_FROM_PACKAGE": "1" + "WEBSITE_RUN_FROM_PACKAGE": "1", + "ADConfigurationUrl": "", + "ValidAudience": "[toLower(parameters('appRegistrationClientId'))]" } }, { @@ -309,7 +317,9 @@ "WEBSITE_CONTENTSHARE": "[toLower(concat('learncontent' , variables('ProjectNameSuffix')))]", "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('learncontent' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", - "WEBSITE_RUN_FROM_PACKAGE": "1" + "WEBSITE_RUN_FROM_PACKAGE": "1", + "ADConfigurationUrl": "", + "ValidAudience": "[toLower(parameters('appRegistrationClientId'))]" } }, { From ec2a041903b66c9a2ca5ae2f49939499d709d218 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Mon, 15 Aug 2022 19:59:57 +0100 Subject: [PATCH 223/285] add the other scopes we need to collect info --- client/src/Core/Auth/AppAuthConfig.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/Core/Auth/AppAuthConfig.ts b/client/src/Core/Auth/AppAuthConfig.ts index 983ce256..e61535f5 100644 --- a/client/src/Core/Auth/AppAuthConfig.ts +++ b/client/src/Core/Auth/AppAuthConfig.ts @@ -27,7 +27,7 @@ if (process.env.REACT_APP_EDNA_B2C_TENANT! != 'NA') { authority = b2cPolicies.authorities.signIn.authority; } else { request = { - scopes: [process.env.REACT_APP_EDNA_DEFAULT_SCOPE!] + scopes: [process.env.REACT_APP_EDNA_DEFAULT_SCOPE!, 'email', 'profile', 'openid', 'User.Read'] }; authority = `https://login.microsoftonline.com/${process.env.REACT_APP_EDNA_TENANT_ID}`; } From 6e7f94a5448e9f0f1a8743c8c4ad804e5ae109e4 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Tue, 16 Aug 2022 11:40:38 +0100 Subject: [PATCH 224/285] Renamed whitelist to allowlist to be better understandable from a user perspective --- deployment/B2CDeployment.ps1 | 30 +++++++++---------- .../B2C_1A_TrustFrameworkExtensions.xml | 2 +- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index edb44769..e0406062 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -337,18 +337,18 @@ try{ #endregion - #region "B2C STEP 7: restrict access via whitelisting tenants" + #region "B2C STEP 7: restrict access via allowlisting tenants" # https://docs.microsoft.com/en-us/azure/active-directory-b2c/identity-provider-azure-ad-multi-tenant?pivots=b2c-custom-policy#restrict-access - Write-Title "B2C STEP 7: Creating a whitelist for the tenants we wish to give access to" - Write-Host "Important - if no tenants are whitelisted; nobody will be able to access the AD" + Write-Title "B2C STEP 7: Creating a allowlist for the tenants we wish to give access to" + Write-Host "Important - if no tenants are allowlisted; nobody will be able to access the AD" $fileOrInputs="" while($fileOrInputs -ne "1" -and $fileOrInputs -ne "2") { - $fileOrInputs = Read-Host "Would you like to either:`n1. import a file with *all* the tenant ID's to be whitelisted`n2. input them 1 by 1 into the console? `n(1/2)" + $fileOrInputs = Read-Host "Would you like to either:`n1. import a file with *all* the tenant ID's to be allowlisted`n2. input them 1 by 1 into the console? `n(1/2)" } - $whitelist = @() + $allowlist = @() # Input via a file if ($fileOrInputs -eq "1") { @@ -361,17 +361,17 @@ try{ foreach ($wlTenantID in $tenantIDs) { try{ - # HTTP request to get the issuer claim we want to add to the whitelist + # HTTP request to get the issuer claim we want to add to the allowlist $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $response = Invoke-RestMethod "https://login.microsoftonline.com/$wlTenantID/v2.0/.well-known/openid-configuration" -Method 'GET' -Headers $headers $issuer = $response.issuer - $whitelist += $issuer #adding the issuer for this tenant to the whitelist - Write-Host "Tenant with ID $wlTenantID added to the whitelist" + $allowlist += $issuer #adding the issuer for this tenant to the allowlist + Write-Host "Tenant with ID $wlTenantID added to the allowlist" } catch{ - $Message = "$($Error[0].Exception.Message)`nTenant with ID $wlTenantID is not valid; please verify with the tenant Admin the tenants ID then manually add it to the whitelist through the portal." + $Message = "$($Error[0].Exception.Message)`nTenant with ID $wlTenantID is not valid; please verify with the tenant Admin the tenants ID then manually add it to the allowlist through the portal." Write-Error $Message Write-Log -Message $Message -ErrorRecord $Error[0] } @@ -384,19 +384,19 @@ try{ $wlTenantID = "" while ($wlTenantID -ne "n") { - $wlTenantID = Read-Host "Please enter the tenant ID you wish to add to the whitelist (or 'n' to stop)" + $wlTenantID = Read-Host "Please enter the tenant ID you wish to add to the allowlist (or 'n' to stop)" if($wlTenantID -eq "n"){break} try{ - #region "HTTP request to get the issuer claim we want to add to the whitelist" + #region "HTTP request to get the issuer claim we want to add to the allowlist" $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $response = Invoke-RestMethod "https://login.microsoftonline.com/$wlTenantID/v2.0/.well-known/openid-configuration" -Method 'GET' -Headers $headers $issuer = $response.issuer #endregion - $whitelist += $issuer #adding the issuer for this tenant to the whitelist + $allowlist += $issuer #adding the issuer for this tenant to the allowlist } catch{ Write-Host "" @@ -406,8 +406,8 @@ try{ } } - $whitelistString = $whitelist -join "," - Write-Log -Message "Added the following tenants to the whitelist for the b2c: $whitelistString" + $allowlistString = $allowlist -join "," + Write-Log -Message "Added the following tenants to the allowlist for the b2c: $allowlistString" #endregion @@ -451,7 +451,7 @@ try{ ((Get-Content -path $_.FullName -Raw) -replace '<>', $MultitenantAppID) | Set-Content -path (".\CustomPolicy\"+$_.Name) - ((Get-Content -path $_.FullName -Raw) -replace '<>', $whitelistString) | Set-Content -path (".\CustomPolicy\"+$_.Name) + ((Get-Content -path $_.FullName -Raw) -replace '<>', $allowlistString) | Set-Content -path (".\CustomPolicy\"+$_.Name) } diff --git a/deployment/CustomPolicyTemplates/B2C_1A_TrustFrameworkExtensions.xml b/deployment/CustomPolicyTemplates/B2C_1A_TrustFrameworkExtensions.xml index 6ef257e8..85c5da8e 100644 --- a/deployment/CustomPolicyTemplates/B2C_1A_TrustFrameworkExtensions.xml +++ b/deployment/CustomPolicyTemplates/B2C_1A_TrustFrameworkExtensions.xml @@ -32,7 +32,7 @@ false true - <> + <> From 98671f4dee6d1a61e6bf1576b02ce59050c801d7 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Tue, 16 Aug 2022 14:54:29 +0100 Subject: [PATCH 225/285] Added code to display the platform page azure url to the user --- deployment/Deploy.ps1 | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index dbcd68f3..b34c6b38 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -175,10 +175,12 @@ process { Write-Log -Message "User Entered Subscription Name/ID: $SubscriptionNameOrId" } + $subscriptionId = "" #defensive programming so script doesn't halt and require a cleanup if subscription is mistyped while(1){ try{ $ActiveSubscription = Set-LtiActiveSubscription -NameOrId $SubscriptionNameOrId -List $SubscriptionList + $subscriptionId = $ActiveSubscription.id break } catch [InvalidAzureSubscriptionException]{ @@ -506,6 +508,22 @@ process { Write-Title "TOOL REGISTRATION URL (Please Copy, Required for Next Steps) -> $($deploymentOutput.properties.outputs.webClientURL.value)platform" + #region "Creating URL so users can more easily investigate their logs for the platform page if issues arise" + $ConfigPath = "../client/.env.production" + $text = Get-Content $ConfigPath + $configValues = $text | ConvertFrom-StringData + + $platformUniqueValue = $configValues.REACT_APP_EDNA_PLATFORM_SERVICE_URL #getting the platform service url + $platformUniqueValue = $platformUniqueValue.Substring(($platformUniqueValue.IndexOf("platforms-")),$platformUniqueValue.Length-$platformUniqueValue.IndexOf("platforms-")) # trimming to the start of the uniqueIdentifier for the platform page + $platformUniqueValue = $platformUniqueValue.Substring(0,$platformUniqueValue.IndexOf(".")) # trimming to the end of the uniqueIdentifier for the platform page + + # make sure we have the id of the subscription + + Write-Title "PLATFORM PAGE AZURE URL (Please Copy, useful for debugging logs if something goes wrong)" = "https://portal.azure.com/#@$AD_Tenant_Name_full/resource/subscriptions/$subscriptionId/resourceGroups/$ResourceGroupName/providers/Microsoft.Insights/components/$platformUniqueValue/overview" + + #endregion + + Write-Title '======== Successfully Deployed Resources to Azure ===========' Write-Log -Message "Deployment Complete" From 48ea2d266aa68437a16c833770e5c65f912ea509 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Tue, 16 Aug 2022 15:44:40 +0100 Subject: [PATCH 226/285] Modified list of users allowed to access platform page to add all alias' of a user due to current university structures using many alias' so that they can login regardless of the alias used --- deployment/Deploy.ps1 | 57 +++++++++++++++++++++++++++++++++++-------- 1 file changed, 47 insertions(+), 10 deletions(-) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 876793c5..acd13a1a 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -3,6 +3,11 @@ # Licensed under the MIT license. # -------------------------------------------------------------------------------------------- +# Needs exchange online management in order to add the aliases for the users specified email addresses +#Requires -Module ExchangeOnlineManagement + + + [CmdletBinding()] param ( [string]$ResourceGroupName = "AdOnly4-MSLearnLti", @@ -191,19 +196,54 @@ process { Write-Log -Message "User Entered Subscription Name/ID: $SubscriptionNameOrId" } } + + #region "Getting all the alias and primary emails to be added to the list of allowed users for the platform page" + + #function for getting all the alias emails for a given email address + function getAllAliasEmails(){ + param( + [string]$email + ) + $emailsData = Get-Mailbox -Identity $email | Select-Object -expand emailaddresses alias + #for each email in emails get everything after the colon and add it to the list + $emails = $emailsData | ForEach-Object { $_.Split(':')[1] } + return $emails -join ";" + } + + #getting the users email address and domain for the currently logged in suscription $UserEmailAddress = $ActiveSubscription.user.name - Write-Host "Email that will be allowed to access platforms page:" $UserEmailAddress - $choice = Read-Host "Want to add more users/email(y/n):" + $Domain = $UserEmailAddress.Substring($UserEmailAddress.IndexOf("@"),$UserEmailAddress.Length-$UserEmailAddress.IndexOf("@")) + + Write-Title "Creating list of users to be allowed to access the platforms page" + Write-Host "Please login to $UserEmailAddress via the popup window" + Connect-ExchangeOnline #logging in to exchange onine + + #creating the string of all emails separated by ; with the alias of the current email address + $UserEmailAddresses = getAllAliasEmails $UserEmailAddress + + Write-Host "Primary + Alias emails that will be allowed to access platforms page:" $UserEmailAddresses + $choice = Read-Host "Want to add more users from this same domain ($Domain)? (y/n):" $choice = $choice.Trim() + + #iteratively add more users from the same domain to the list of allowed users if($choice -eq "y"){ $extramail = Read-Host "Enter user's email or 'n' to exit:" While($extramail -ne 'n'){ - $UserEmailAddress = $UserEmailAddress + ";" + $extramail - $extramail = Read-Host "Enter user's email or 'n' to exit:" + #checking these are from the same domain as otherwise we cannot get alias' + $NewDomain = $extramail.Substring($extramail.IndexOf("@"),$extramail.Length-$extramail.IndexOf("@")) + if($NewDomain -ne $Domain){ + Write-Host "Emails must be from the same domain ($Domain)" + } + else{ + $UserEmailAddresses += ";" + (getAllAliasEmails $extramail) + } + + Write-Host "Primary + Alias emails that will be allowed to access platforms page:" $UserEmailAddresses + $extramail = Read-Host "Enter another user's email from ($Domain) that you'd like to add, or 'n' to exit:" } - Write-Host "Updated list of emails that will be allowed to access platforms page:" $UserEmailAddress + Write-Host "Updated list of emails that will be allowed to access platforms page:" $UserEmailAddresses } - + #endregion #endregion @@ -256,9 +296,6 @@ process { $OPENID_B2C_CONFIG_URL_IDENTIFIER = "https://${REACT_APP_EDNA_B2C_TENANT}.b2clogin.com/${b2c_tenant_name_full}/${policy_name}/v2.0/.well-known/openid-configuration" $OPENID_AD_CONFIG_URL_IDENTIFIER = "https://login.microsoft.com/${AD_Tenant_Name_full}/v2.0/.well-known/openid-configuration" - ((Get-Content -path ".\azuredeploy.json" -Raw) -replace '""', $b2c_secret) | Set-Content -path (".\azuredeploy.json") - - (Get-Content -path ".\azuredeployB2CTemplate.json" -Raw) ` -replace '', ($REACT_APP_EDNA_B2C_CLIENT_ID) ` -replace '', ("'"+$uniqueIdentifier+"'") ` @@ -372,7 +409,7 @@ process { $templateFileName = "azuredeploy.json" $deploymentName = "Deployment-$ExecutionStartTime" Write-Log -Message "Deploying ARM Template to Azure inside ResourceGroup: $ResourceGroupName with DeploymentName: $deploymentName, TemplateFile: $templateFileName, AppClientId: $($appinfo.appId), IdentifiedURI: $($appinfo.identifierUris)" - $deploymentOutput = (az deployment group create --resource-group $ResourceGroupName --name $deploymentName --template-file $templateFileName --parameters appRegistrationClientId=$($appinfo.appId) appRegistrationApiURI=$($identifierURI) userEmailAddress=$($UserEmailAddress) userObjectId=$($userObjectId)) | ConvertFrom-Json; + $deploymentOutput = (az deployment group create --resource-group $ResourceGroupName --name $deploymentName --template-file $templateFileName --parameters appRegistrationClientId=$($appinfo.appId) appRegistrationApiURI=$($identifierURI) userEmailAddress=$($UserEmailAddresses) userObjectId=$($userObjectId)) | ConvertFrom-Json; if(!$deploymentOutput) { throw "Encountered an Error while deploying to Azure" } From 263c9773bc2d40f11370bc5c4ed1ecc4dea9292c Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Tue, 16 Aug 2022 16:44:11 +0100 Subject: [PATCH 227/285] Replaced Get-Mailbox with Get-Recipient so you can get alias' for other users --- deployment/Deploy.ps1 | 111 +++++++++++++++++++++--------------------- 1 file changed, 56 insertions(+), 55 deletions(-) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index acd13a1a..c89b7df7 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -10,8 +10,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "AdOnly4-MSLearnLti", - [string]$AppName = "AdOnly4-MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "AdOnly6-MSLearnLti", + [string]$AppName = "AdOnly6-MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = "550c8aca-87a0-4da2-8e2e-10aca7b2e187", [string]$LocationName = "uksouth" @@ -197,55 +197,6 @@ process { } } - #region "Getting all the alias and primary emails to be added to the list of allowed users for the platform page" - - #function for getting all the alias emails for a given email address - function getAllAliasEmails(){ - param( - [string]$email - ) - $emailsData = Get-Mailbox -Identity $email | Select-Object -expand emailaddresses alias - #for each email in emails get everything after the colon and add it to the list - $emails = $emailsData | ForEach-Object { $_.Split(':')[1] } - return $emails -join ";" - } - - #getting the users email address and domain for the currently logged in suscription - $UserEmailAddress = $ActiveSubscription.user.name - $Domain = $UserEmailAddress.Substring($UserEmailAddress.IndexOf("@"),$UserEmailAddress.Length-$UserEmailAddress.IndexOf("@")) - - Write-Title "Creating list of users to be allowed to access the platforms page" - Write-Host "Please login to $UserEmailAddress via the popup window" - Connect-ExchangeOnline #logging in to exchange onine - - #creating the string of all emails separated by ; with the alias of the current email address - $UserEmailAddresses = getAllAliasEmails $UserEmailAddress - - Write-Host "Primary + Alias emails that will be allowed to access platforms page:" $UserEmailAddresses - $choice = Read-Host "Want to add more users from this same domain ($Domain)? (y/n):" - $choice = $choice.Trim() - - #iteratively add more users from the same domain to the list of allowed users - if($choice -eq "y"){ - $extramail = Read-Host "Enter user's email or 'n' to exit:" - While($extramail -ne 'n'){ - #checking these are from the same domain as otherwise we cannot get alias' - $NewDomain = $extramail.Substring($extramail.IndexOf("@"),$extramail.Length-$extramail.IndexOf("@")) - if($NewDomain -ne $Domain){ - Write-Host "Emails must be from the same domain ($Domain)" - } - else{ - $UserEmailAddresses += ";" + (getAllAliasEmails $extramail) - } - - Write-Host "Primary + Alias emails that will be allowed to access platforms page:" $UserEmailAddresses - $extramail = Read-Host "Enter another user's email from ($Domain) that you'd like to add, or 'n' to exit:" - } - Write-Host "Updated list of emails that will be allowed to access platforms page:" $UserEmailAddresses - } - #endregion - - #endregion @@ -404,6 +355,59 @@ process { #region Provision Resources inside Resource Group on Azure using ARM template Write-Title 'STEP #6 - Creating Resources in Azure' + + #region "Getting all the alias and primary emails to be added to the list of allowed users for the platform page" + + #function for getting all the alias emails for a given email address + function getAllAliasEmails(){ + param( + [string]$email + ) + $emailsData = Get-Recipient -Identity $email | Select-Object -expand EmailAddresses alias + #for each email in emails get everything after the colon and add it to the list + $emails = $emailsData | ForEach-Object { $_.Split(':')[1] } + return $emails -join ";" + } + + #getting the users email address and domain for the currently logged in suscription + $CurrentUseremailaddress = $ActiveSubscription.user.name + $Domain = $CurrentUseremailaddress.Substring($CurrentUseremailaddress.IndexOf("@"),$CurrentUseremailaddress.Length-$CurrentUseremailaddress.IndexOf("@")) + + $UserDisplayEmails = $CurrentUseremailaddress #variable to print only the inputted emails not all alias for ease of understanding for the user + + Write-Host "Creating list of users to be allowed to access the platforms page" + Write-Host "Please login to $CurrentUseremailaddress via the popup window" + Connect-ExchangeOnline -ShowBanner:$false #logging in to exchange onine + + #creating the string of all emails separated by ; with the alias of the current email address + $UserEmailAddresses = getAllAliasEmails $CurrentUseremailaddress + + Write-Host "Users that will be allowed to access platforms page:" $UserDisplayEmails + $choice = Read-Host "Want to add more users from this same domain ($Domain)? (y/n)" + $choice = $choice.Trim() + + #iteratively add more users from the same domain to the list of allowed users + if($choice -eq "y"){ + $extramail = Read-Host "Enter user's email or 'n' to exit:" + While($extramail -ne 'n'){ + #checking these are from the same domain as otherwise we cannot get alias' + $NewDomain = $extramail.Substring($extramail.IndexOf("@"),$extramail.Length-$extramail.IndexOf("@")) + if($NewDomain -ne $Domain){ + Write-Host "Emails must be from the same domain ($Domain)" + } + else{ + Write-Log -Message "Adding $extramail and its Alias' to the list of allowed users for the platform page" + $UserEmailAddresses += ";" + (getAllAliasEmails $extramail) + $UserDisplayEmails += ", $extramail" + } + + Write-Host "Primary + Alias emails that will be allowed to access platforms page:" $UserDisplayEmails + $extramail = Read-Host "Enter another user's email from ($Domain) that you'd like to add, or 'n' to exit:" + } + + Write-Log -Message "List of primary emails + all their alias's that will be allowed to access platforms page: $UserEmailAddresses" + } + #endregion $userObjectId = az ad signed-in-user show --query id # requires 2.37 or higher $templateFileName = "azuredeploy.json" @@ -568,10 +572,7 @@ process { $platformUniqueValue = $platformUniqueValue.Substring(($platformUniqueValue.IndexOf("platforms-")),$platformUniqueValue.Length-$platformUniqueValue.IndexOf("platforms-")) # trimming to the start of the uniqueIdentifier for the platform page $platformUniqueValue = $platformUniqueValue.Substring(0,$platformUniqueValue.IndexOf(".")) # trimming to the end of the uniqueIdentifier for the platform page - # make sure we have the id of the subscription - - Write-Title "PLATFORM PAGE AZURE URL (Please Copy, useful for debugging logs if something goes wrong)" = "https://portal.azure.com/#@$AD_Tenant_Name_full/resource/subscriptions/$subscriptionId/resourceGroups/$ResourceGroupName/providers/Microsoft.Insights/components/$platformUniqueValue/overview" - + Write-Title "PLATFORM PAGE AZURE URL (Please Copy, useful for debugging logs if something goes wrong) -> https://portal.azure.com/#@$AD_Tenant_Name_full/resource/subscriptions/$subscriptionId/resourceGroups/$ResourceGroupName/providers/Microsoft.Insights/components/$platformUniqueValue/overview" #endregion From a5336c69edadbfd977c7c7d13ee1e18f14a6d6b5 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Tue, 16 Aug 2022 17:24:39 +0100 Subject: [PATCH 228/285] adding a prompt for AD tenant --- deployment/Deploy.ps1 | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index dbcd68f3..f626adae 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "AdOnly4-MSLearnLti", - [string]$AppName = "AdOnly4-MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "v-MSLearnLti", + [string]$AppName = "RB_testb2cfail-MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = "550c8aca-87a0-4da2-8e2e-10aca7b2e187", [string]$LocationName = "uksouth" @@ -91,7 +91,7 @@ process { #formatting a unique identifier to ensure we create a new keyvault for each run $uniqueIdentifier = [Int64]((Get-Date).ToString('yyyyMMddhhmmss')) #get the current second as being the unique identifier - + $activeDirectoryTenant = "" #region Login to Azure CLI @@ -190,6 +190,8 @@ process { } } $UserEmailAddress = $ActiveSubscription.user.name + $activeDirectoryTenant = Read-Host 'Enter the tenant id of your primary active directory tenant. This tenant should contain the LMS resource groups and will contain your LTI resource groups' + #endregion @@ -205,7 +207,7 @@ process { # passing in the ExecutionStartTime to continue the log file # passing in the tenantId of the AD tenant as the b2c setup must be linked with the AD tenant for the chosen subscription - $results = (& ".\B2CDeployment.ps1" $ExecutionStartTime $ActiveSubscription.tenantId) + $results = (& ".\B2CDeployment.ps1" $ExecutionStartTime $activeDirectoryTenant) if($results[-1] -eq -1){ throw "B2CDeployment.ps1 failed" } From d7fd9d2d5e87e7fa0f1fd7d8be10d3295a9c252f Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Tue, 16 Aug 2022 19:28:46 +0100 Subject: [PATCH 229/285] changing brackets on deploy --- deployment/Deploy.ps1 | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 19ad20f4..6e809e19 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -10,8 +10,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "v-MSLearnLti", - [string]$AppName = "RB_testb2cfail-MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "MSLearnLti", + [string]$AppName = "MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = "550c8aca-87a0-4da2-8e2e-10aca7b2e187", [string]$LocationName = "uksouth" @@ -243,9 +243,11 @@ process { $extramail = Read-Host "Enter another user's email from ($Domain) that you'd like to add, or 'n' to exit:" } Write-Host "Updated list of emails that will be allowed to access platforms page:" $UserEmailAddresses + } + Write-Host "`r`n" - $activeDirectoryTenant = Read-Host 'Enter the tenant id of your primary active directory tenant. This tenant should contain the LMS resource groups and will contain your LTI resource groups' + $activeDirectoryTenant = Read-Host 'Enter the tenant id of your primary Active Directory tenant. This tenant should contain the LMS resource groups and will contain your LTI resource groups' #endregion From 5db01c172fc41ea61e1ae920efe0c97b10d0072c Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Tue, 16 Aug 2022 20:07:46 +0100 Subject: [PATCH 230/285] change to not treat warnings as errors --- .github/workflows/client.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/client.yml b/.github/workflows/client.yml index 9051f5e0..d276798b 100644 --- a/.github/workflows/client.yml +++ b/.github/workflows/client.yml @@ -26,4 +26,6 @@ jobs: node-version: ${{ matrix.node-version }} - run: npm ci - run: npm run build --if-present + env: + CI: false - run: npm test From a6c49954635f32c75094824d152d9cefd4cc6e35 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Tue, 16 Aug 2022 20:15:14 +0100 Subject: [PATCH 231/285] switching back to null so we don't auto-deploy --- deployment/Deploy.ps1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index aede5494..ffd5e6b2 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -13,8 +13,8 @@ param ( [string]$ResourceGroupName = "AdOnly4-MSLearnLti", [string]$AppName = "AdOnly4-MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, - [string]$SubscriptionNameOrId = "550c8aca-87a0-4da2-8e2e-10aca7b2e187", - [string]$LocationName = "uksouth" + [string]$SubscriptionNameOrId = $null, + [string]$LocationName = $null ) process { From 9ffce79840618618225cfa187e8ae686fa9b1482 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Tue, 16 Aug 2022 20:16:08 +0100 Subject: [PATCH 232/285] swapping to standard rg name and app name --- deployment/Deploy.ps1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index ffd5e6b2..39e4ad42 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -10,8 +10,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "AdOnly4-MSLearnLti", - [string]$AppName = "AdOnly4-MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "MSLearnLti", + [string]$AppName = "MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null From 41f6d4d3e86a3484248241809eef6f02908ede5f Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Tue, 16 Aug 2022 21:06:39 +0100 Subject: [PATCH 233/285] slight updates to email alias code --- deployment/Deploy.ps1 | 64 ++++++++++++------------------------------- 1 file changed, 18 insertions(+), 46 deletions(-) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 39e4ad42..192f6c6b 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -218,11 +218,21 @@ process { Write-Host "Please login to $UserEmailAddress via the popup window" Connect-ExchangeOnline #logging in to exchange onine + #getting the users email address and domain for the currently logged in suscription + $CurrentUseremailaddress = $ActiveSubscription.user.name + $Domain = $CurrentUseremailaddress.Substring($CurrentUseremailaddress.IndexOf("@"),$CurrentUseremailaddress.Length-$CurrentUseremailaddress.IndexOf("@")) + + $UserDisplayEmails = $CurrentUseremailaddress #variable to print only the inputted emails not all alias for ease of understanding for the user + + Write-Host "Creating list of users to be allowed to access the platforms page" + Write-Host "Please login to $CurrentUseremailaddress via the popup window" + Connect-ExchangeOnline -ShowBanner:$false #logging in to exchange onine + #creating the string of all emails separated by ; with the alias of the current email address - $UserEmailAddresses = getAllAliasEmails $UserEmailAddress + $UserEmailAddresses = getAllAliasEmails $CurrentUseremailaddress - Write-Host "Primary + Alias emails that will be allowed to access platforms page:" $UserEmailAddresses - $choice = Read-Host "Want to add more users from this same domain ($Domain)? (y/n):" + Write-Host "Users that will be allowed to access platforms page:" $UserDisplayEmails + $choice = Read-Host "Want to add more users from this same domain ($Domain)? (y/n)" $choice = $choice.Trim() #iteratively add more users from the same domain to the list of allowed users @@ -235,15 +245,17 @@ process { Write-Host "Emails must be from the same domain ($Domain)" } else{ + Write-Log -Message "Adding $extramail and its Alias' to the list of allowed users for the platform page" $UserEmailAddresses += ";" + (getAllAliasEmails $extramail) + $UserDisplayEmails += ", $extramail" } - Write-Host "Primary + Alias emails that will be allowed to access platforms page:" $UserEmailAddresses + Write-Host "Primary + Alias emails that will be allowed to access platforms page:" $UserDisplayEmails $extramail = Read-Host "Enter another user's email from ($Domain) that you'd like to add, or 'n' to exit:" } - Write-Host "Updated list of emails that will be allowed to access platforms page:" $UserEmailAddresses + + Write-Log -Message "List of primary emails + all their alias's that will be allowed to access platforms page: $UserEmailAddresses" } - Write-Host "`r`n" $activeDirectoryTenant = Read-Host 'Enter the tenant id of your primary Active Directory tenant. This tenant should contain the LMS resource groups and will contain your LTI resource groups' @@ -423,46 +435,6 @@ process { return $emails -join ";" } - #getting the users email address and domain for the currently logged in suscription - $CurrentUseremailaddress = $ActiveSubscription.user.name - $Domain = $CurrentUseremailaddress.Substring($CurrentUseremailaddress.IndexOf("@"),$CurrentUseremailaddress.Length-$CurrentUseremailaddress.IndexOf("@")) - - $UserDisplayEmails = $CurrentUseremailaddress #variable to print only the inputted emails not all alias for ease of understanding for the user - - Write-Host "Creating list of users to be allowed to access the platforms page" - Write-Host "Please login to $CurrentUseremailaddress via the popup window" - Connect-ExchangeOnline -ShowBanner:$false #logging in to exchange onine - - #creating the string of all emails separated by ; with the alias of the current email address - $UserEmailAddresses = getAllAliasEmails $CurrentUseremailaddress - - Write-Host "Users that will be allowed to access platforms page:" $UserDisplayEmails - $choice = Read-Host "Want to add more users from this same domain ($Domain)? (y/n)" - $choice = $choice.Trim() - - #iteratively add more users from the same domain to the list of allowed users - if($choice -eq "y"){ - $extramail = Read-Host "Enter user's email or 'n' to exit:" - While($extramail -ne 'n'){ - #checking these are from the same domain as otherwise we cannot get alias' - $NewDomain = $extramail.Substring($extramail.IndexOf("@"),$extramail.Length-$extramail.IndexOf("@")) - if($NewDomain -ne $Domain){ - Write-Host "Emails must be from the same domain ($Domain)" - } - else{ - Write-Log -Message "Adding $extramail and its Alias' to the list of allowed users for the platform page" - $UserEmailAddresses += ";" + (getAllAliasEmails $extramail) - $UserDisplayEmails += ", $extramail" - } - - Write-Host "Primary + Alias emails that will be allowed to access platforms page:" $UserDisplayEmails - $extramail = Read-Host "Enter another user's email from ($Domain) that you'd like to add, or 'n' to exit:" - } - - Write-Log -Message "List of primary emails + all their alias's that will be allowed to access platforms page: $UserEmailAddresses" - } - #endregion - $userObjectId = az ad signed-in-user show --query id # requires 2.37 or higher $templateFileName = "azuredeploy.json" $deploymentName = "Deployment-$ExecutionStartTime" From 2e4d005703601d5ffeeda195df13d5807daec6af Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Wed, 17 Aug 2022 11:35:41 +0100 Subject: [PATCH 234/285] Fixed merging errors in alias email code --- deployment/Deploy.ps1 | 27 +++------------------------ 1 file changed, 3 insertions(+), 24 deletions(-) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 192f6c6b..d1374598 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -204,20 +204,12 @@ process { param( [string]$email ) - $emailsData = Get-Mailbox -Identity $email | Select-Object -expand emailaddresses alias + $emailsData = Get-Recipient -Identity $email | Select-Object -expand EmailAddresses alias #for each email in emails get everything after the colon and add it to the list $emails = $emailsData | ForEach-Object { $_.Split(':')[1] } return $emails -join ";" } - #getting the users email address and domain for the currently logged in suscription - $UserEmailAddress = $ActiveSubscription.user.name - $Domain = $UserEmailAddress.Substring($UserEmailAddress.IndexOf("@"),$UserEmailAddress.Length-$UserEmailAddress.IndexOf("@")) - - Write-Title "Creating list of users to be allowed to access the platforms page" - Write-Host "Please login to $UserEmailAddress via the popup window" - Connect-ExchangeOnline #logging in to exchange onine - #getting the users email address and domain for the currently logged in suscription $CurrentUseremailaddress = $ActiveSubscription.user.name $Domain = $CurrentUseremailaddress.Substring($CurrentUseremailaddress.IndexOf("@"),$CurrentUseremailaddress.Length-$CurrentUseremailaddress.IndexOf("@")) @@ -237,7 +229,7 @@ process { #iteratively add more users from the same domain to the list of allowed users if($choice -eq "y"){ - $extramail = Read-Host "Enter user's email or 'n' to exit:" + $extramail = Read-Host "Enter user's email or 'n' to exit" While($extramail -ne 'n'){ #checking these are from the same domain as otherwise we cannot get alias' $NewDomain = $extramail.Substring($extramail.IndexOf("@"),$extramail.Length-$extramail.IndexOf("@")) @@ -251,7 +243,7 @@ process { } Write-Host "Primary + Alias emails that will be allowed to access platforms page:" $UserDisplayEmails - $extramail = Read-Host "Enter another user's email from ($Domain) that you'd like to add, or 'n' to exit:" + $extramail = Read-Host "Enter another user's email from ($Domain) that you'd like to add, or 'n' to exit" } Write-Log -Message "List of primary emails + all their alias's that will be allowed to access platforms page: $UserEmailAddresses" @@ -422,19 +414,6 @@ process { #region Provision Resources inside Resource Group on Azure using ARM template Write-Title 'STEP #6 - Creating Resources in Azure' - #region "Getting all the alias and primary emails to be added to the list of allowed users for the platform page" - - #function for getting all the alias emails for a given email address - function getAllAliasEmails(){ - param( - [string]$email - ) - $emailsData = Get-Recipient -Identity $email | Select-Object -expand EmailAddresses alias - #for each email in emails get everything after the colon and add it to the list - $emails = $emailsData | ForEach-Object { $_.Split(':')[1] } - return $emails -join ";" - } - $userObjectId = az ad signed-in-user show --query id # requires 2.37 or higher $templateFileName = "azuredeploy.json" $deploymentName = "Deployment-$ExecutionStartTime" From 4e435177a4903655d56d5eea29b6aacad4c30327 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Wed, 17 Aug 2022 12:47:34 +0100 Subject: [PATCH 235/285] Added accessToken optional claims + granted permission to fix issue on AD only deployment --- deployment/Deploy.ps1 | 53 +++++++++++++++++++++++++++++++++++++++---- 1 file changed, 49 insertions(+), 4 deletions(-) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index d1374598..bd75ed7f 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -10,8 +10,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "MSLearnLti", - [string]$AppName = "MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "AdOnly9-MSLearnLti", + [string]$AppName = "AdOnly9-MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null @@ -385,7 +385,52 @@ process { $GraphAPIPermissionId = 'e1fe6dd8-ba31-4d61-89e7-88639da4683d=Scope' $appPermissionAddOp = az ad app permission add --id $appinfo.appId --api $GraphAPIId --api-permissions $GraphAPIPermissionId #Intentionally not catching an exception here - + + + # if this is an AD deploy then add and grant optional claims to the tokens for the AD app (not required for b2c as its done on the multitenant app in that script) + if($b2cOrAd -eq "ad"){ + + # add optional claims for email/family_name/given_name to the access_token + $ADAppManifest = "{ + `"idToken`": [], + `"accessToken`": [ + { + `"name`": `"email`", + `"essential`": false + }, + { + `"name`": `"family_name`", + `"essential`": false + }, + { + `"name`": `"given_name`", + `"essential`": false + } + ], + `"saml2Token`": [] + }" + Out-File -FilePath "manifest.json" -InputObject $ADAppManifest + az ad app update --id $appinfo.appId --optional-claims "@manifest.json" --only-show-errors + Write-Log -Message "As this is AD mode, added optional claims to AD app ($AppName) with id $($appinfo.appId) in $AD_Tenant_Name_full" + Remove-Item manifest.json + + # granting permissions to the service principal for the optional claims + Write-Host "Granting permissions to the AD app ($AppName)" + $profilePermission = "14dad69e-099b-42c9-810b-d002981feec1=Scope" + $emailPermission = "64a6cdd6-aab1-4aaf-94b8-3cc8405e90d0=Scope" + + Write-Host "Creating service principal for $AppName" + Write-Log -Message "Creating service principal for $AppName" + + $AppServicePrincipal = az ad sp create --id $appinfo.appId --only-show-errors + Write-Log -Message "AppServicePrincipal value:`n$AppServicePrincipal" + + Write-Host "Granting permissions to the service principal for $AppName" + Write-Log -Message "Granting permissions to the service principal for $AppName" + az ad app permission grant --id $appinfo.appId --api 00000003-0000-0000-c000-000000000000 --scope "email profile" --only-show-errors + az ad app permission add --id $appinfo.appId --api 00000003-0000-0000-c000-000000000000 --api-permissions $emailPermission $profilePermission --only-show-errors + } + Write-Host 'App Created Successfully' #endregion #region Create New Resource Group in above Region @@ -577,7 +622,7 @@ process { $platformUniqueValue = $platformUniqueValue.Substring(($platformUniqueValue.IndexOf("platforms-")),$platformUniqueValue.Length-$platformUniqueValue.IndexOf("platforms-")) # trimming to the start of the uniqueIdentifier for the platform page $platformUniqueValue = $platformUniqueValue.Substring(0,$platformUniqueValue.IndexOf(".")) # trimming to the end of the uniqueIdentifier for the platform page - Write-Title "PLATFORM PAGE AZURE URL (Please Copy, useful for debugging logs if something goes wrong) -> https://portal.azure.com/#@$AD_Tenant_Name_full/resource/subscriptions/$subscriptionId/resourceGroups/$ResourceGroupName/providers/Microsoft.Insights/components/$platformUniqueValue/overview" + Write-Title "PLATFORM PAGE AZURE RESOURCE URL (Please Copy, useful for debugging logs if something goes wrong) -> https://portal.azure.com/#@$AD_Tenant_Name_full/resource/subscriptions/$subscriptionId/resourceGroups/$ResourceGroupName/providers/Microsoft.Insights/components/$platformUniqueValue/overview" #endregion From f4ee2d72527dbfcaf6b11f35b4ba4db9af8f450f Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Wed, 17 Aug 2022 12:53:14 +0100 Subject: [PATCH 236/285] Minor wording + formatting changes to improve UX --- deployment/Deploy.ps1 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index bd75ed7f..b02faaa7 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -216,7 +216,7 @@ process { $UserDisplayEmails = $CurrentUseremailaddress #variable to print only the inputted emails not all alias for ease of understanding for the user - Write-Host "Creating list of users to be allowed to access the platforms page" + Write-Title "Creating list of users to be allowed to access the platforms page" Write-Host "Please login to $CurrentUseremailaddress via the popup window" Connect-ExchangeOnline -ShowBanner:$false #logging in to exchange onine @@ -229,7 +229,7 @@ process { #iteratively add more users from the same domain to the list of allowed users if($choice -eq "y"){ - $extramail = Read-Host "Enter user's email or 'n' to exit" + $extramail = Read-Host "Enter user's email or 'n' if you have no more users you would like to grant access" While($extramail -ne 'n'){ #checking these are from the same domain as otherwise we cannot get alias' $NewDomain = $extramail.Substring($extramail.IndexOf("@"),$extramail.Length-$extramail.IndexOf("@")) @@ -243,7 +243,7 @@ process { } Write-Host "Primary + Alias emails that will be allowed to access platforms page:" $UserDisplayEmails - $extramail = Read-Host "Enter another user's email from ($Domain) that you'd like to add, or 'n' to exit" + $extramail = Read-Host "Enter another user's email from ($Domain) that you'd like to add, or 'n' if you have no more users you would like to grant access" } Write-Log -Message "List of primary emails + all their alias's that will be allowed to access platforms page: $UserEmailAddresses" From 3291a3d4616db683d518ec274c5dcb47e1bc84d8 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Thu, 18 Aug 2022 12:12:57 +0100 Subject: [PATCH 237/285] Added output of the values required for the b2c Moodle configuration; prevent user confusion and mistakes --- deployment/B2CDeployment.ps1 | 2 +- deployment/Deploy.ps1 | 45 +++++++++++++++++++++++++++--------- 2 files changed, 35 insertions(+), 12 deletions(-) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index e0406062..d9436ac1 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -805,7 +805,7 @@ try{ #returning values required by the Deploy.ps1 script - return $ADTenantNameFull, $B2cTenantNameFull, $WebClientID, $WebClientSecret, $B2cTenantName, $ObjectId + return $ADTenantNameFull, $B2cTenantNameFull, $WebClientID, $WebClientSecret, $B2cTenantName, $ObjectId, $IEFClientID } catch{ if($PermissionClientSecret){ diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index b02faaa7..e81f031b 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -265,6 +265,7 @@ process { $REACT_APP_EDNA_B2C_TENANT = 'NA' $B2C_ObjectID = 'NA' $b2c_tenant_name_full = 'NA' + $IEFClientID = 'NA' if($b2cOrAD -eq "b2c"){ Write-Title "B2C Step #0: Running the B2C Setup Script" @@ -277,13 +278,14 @@ process { Write-Log -Message "Returned from the B2C setup script, continuing with LTI deployment" # TODO - indexing from -1 etc. because it seems to return meaningless values before the final 3 which we actually want; need to work out why and perhaps fix if it is deemed an issue - $AD_Tenant_Name_full = $results[-6] # tenant name of the AD server - $b2c_tenant_name_full = $results[-5] #b2c tenant name - $REACT_APP_EDNA_B2C_CLIENT_ID = $results[-4] #webclient ID - $REACT_APP_EDNA_AUTH_CLIENT_ID = $results[-4] #webclient ID - $b2c_secret = $results[-3] #webclient secret - $REACT_APP_EDNA_B2C_TENANT = $results[-2] #b2c tenant name - $B2C_ObjectID = $results[-1] # b2c webapp id that needs the SPA uri + $AD_Tenant_Name_full = $results[-7] # tenant name of the AD server + $b2c_tenant_name_full = $results[-6] #b2c tenant name + $REACT_APP_EDNA_B2C_CLIENT_ID = $results[-5] #webclient ID + $REACT_APP_EDNA_AUTH_CLIENT_ID = $results[-5] #webclient ID + $b2c_secret = $results[-4] #webclient secret + $REACT_APP_EDNA_B2C_TENANT = $results[-3] #b2c tenant name + $B2C_ObjectID = $results[-2] # b2c webapp id that needs the SPA uri + $IEFClientID = $results[-1] #ID of the IEF app Write-Log -Message "Returned the follow values from the b2c setup script- `nAD_Tenant_Name_full: $AD_Tenant_Name_full @@ -613,17 +615,38 @@ process { Write-Title "TOOL REGISTRATION URL (Please Copy, Required for Next Steps) -> $($deploymentOutput.properties.outputs.webClientURL.value)platform" - #region "Creating URL so users can more easily investigate their logs for the platform page if issues arise" + # Creating URL so users can more easily investigate their logs for the platform page if issues arise $ConfigPath = "../client/.env.production" $text = Get-Content $ConfigPath $configValues = $text | ConvertFrom-StringData - $platformUniqueValue = $configValues.REACT_APP_EDNA_PLATFORM_SERVICE_URL #getting the platform service url $platformUniqueValue = $platformUniqueValue.Substring(($platformUniqueValue.IndexOf("platforms-")),$platformUniqueValue.Length-$platformUniqueValue.IndexOf("platforms-")) # trimming to the start of the uniqueIdentifier for the platform page $platformUniqueValue = $platformUniqueValue.Substring(0,$platformUniqueValue.IndexOf(".")) # trimming to the end of the uniqueIdentifier for the platform page - Write-Title "PLATFORM PAGE AZURE RESOURCE URL (Please Copy, useful for debugging logs if something goes wrong) -> https://portal.azure.com/#@$AD_Tenant_Name_full/resource/subscriptions/$subscriptionId/resourceGroups/$ResourceGroupName/providers/Microsoft.Insights/components/$platformUniqueValue/overview" - #endregion + + #if this is a b2c deploy then also display the URL's + if($b2cOrAd -eq "b2c"){ + $b2c_tenant_name = $b2c_tenant_name_full.SubString(0,$b2c_tenant_name_full.IndexOf('.')) + + $AzureB2CScope = "openid https://$b2c_tenant_name_full/$IEFClientID/user_impersonation" + $AuthorizationEndpoint = "https://$b2c_tenant_name.b2clogin.com/$b2c_tenant_name_full/oauth2/v2.0/authorize?p=b2c_1a_signin" + $ForgotPasswordEndpoint = "https://$b2c_tenant_name.b2clogin.com/$b2c_tenant_name_full/oauth2/v2.0/authorize?p=b2c_1a_passwordreset" + $EditProfileEndpoint = "https://$b2c_tenant_name.b2clogin.com/$b2c_tenant_name_full/oauth2/v2.0/authorize?p=b2c_1a_profileedit" + $TokenEndpoint = "https://$b2c_tenant_name.b2clogin.com/$b2c_tenant_name_full/oauth2/v2.0/token?p=b2c_1a_signin" + + + Write-Title "These are the values required for configurating the Moodle to work with b2c; please use the values in conjunction with the docs for configuring the moodle`nhttps://github.com/UCL-MSc-Learn-LTI/Learn-LTI/blob/main/docs/DEVTESTENV.md#setting-up-your-test-lms-environment-with-azure-ad-b2c-multitenant-sign-in" + + Write-Color "green" "Azure B2C scope: $AzureB2CScope" + Write-Color "green" "Provider name: choose a sensible name, for example, 'Azure AD B2C Connect'" + Write-Color "green" "Client ID: '$REACT_APP_EDNA_B2C_CLIENT_ID' (The client ID of the B2C Web app)" + Write-Color "green" "Client Secret: '$b2c_secret' (The client secret of the B2C Web app)" + Write-Color "green" "Authorization endpoint: $AuthorizationEndpoint" + Write-Color "green" "Forgot password endpoint: $ForgotPasswordEndpoint" + Write-Color "green" "Edit profile endpoint: $EditProfileEndpoint" + Write-Color "green" "Token endpoint: $TokenEndpoint" + Write-Color "green" "Resource: https://graph.windows.net" + } Write-Title '======== Successfully Deployed Resources to Azure ===========' From 7c9bc15c6400c6f833b6cad3c9aa71bdddcbcf84 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Thu, 18 Aug 2022 12:18:07 +0100 Subject: [PATCH 238/285] Minor code cleanup of deploy.ps1 --- deployment/Deploy.ps1 | 5 ----- 1 file changed, 5 deletions(-) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index e81f031b..815ea695 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -540,13 +540,8 @@ process { Remove-Item userImpersonationScope.json - - #endregion - - - Write-Host 'App Update Completed Successfully' #endregion From abcdcd1175bcd2276ea82eb266ae107e944ab1e8 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Thu, 18 Aug 2022 12:19:45 +0100 Subject: [PATCH 239/285] Minor code cleanup of deploy.ps1 --- deployment/Deploy.ps1 | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 815ea695..9061119b 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -632,15 +632,15 @@ process { Write-Title "These are the values required for configurating the Moodle to work with b2c; please use the values in conjunction with the docs for configuring the moodle`nhttps://github.com/UCL-MSc-Learn-LTI/Learn-LTI/blob/main/docs/DEVTESTENV.md#setting-up-your-test-lms-environment-with-azure-ad-b2c-multitenant-sign-in" - Write-Color "green" "Azure B2C scope: $AzureB2CScope" + Write-Color "green" "Azure B2C scope: '$AzureB2CScope'" Write-Color "green" "Provider name: choose a sensible name, for example, 'Azure AD B2C Connect'" Write-Color "green" "Client ID: '$REACT_APP_EDNA_B2C_CLIENT_ID' (The client ID of the B2C Web app)" Write-Color "green" "Client Secret: '$b2c_secret' (The client secret of the B2C Web app)" - Write-Color "green" "Authorization endpoint: $AuthorizationEndpoint" - Write-Color "green" "Forgot password endpoint: $ForgotPasswordEndpoint" - Write-Color "green" "Edit profile endpoint: $EditProfileEndpoint" - Write-Color "green" "Token endpoint: $TokenEndpoint" - Write-Color "green" "Resource: https://graph.windows.net" + Write-Color "green" "Authorization endpoint: '$AuthorizationEndpoint'" + Write-Color "green" "Forgot password endpoint: '$ForgotPasswordEndpoint'" + Write-Color "green" "Edit profile endpoint: '$EditProfileEndpoint'" + Write-Color "green" "Token endpoint: '$TokenEndpoint'" + Write-Color "green" "Resource: 'https://graph.windows.net'" } From 3768915a1c586c856140e8c733d4c292f361cde0 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Fri, 19 Aug 2022 13:02:18 +0100 Subject: [PATCH 240/285] Updated docs to be correct to the merged version --- deployment/Deploy.ps1 | 11 ++- docs/B2C_Deployment.md | 7 +- docs/DEPLOYMENT_GUIDE.md | 68 ++++++++++++++---- images/B2C_Deployment/02a_exchangeLogin.png | Bin 0 -> 54854 bytes images/B2C_Deployment/02b_tenantID.png | Bin 0 -> 33752 bytes .../B2C_Deployment/b2cConfigurationValues.png | Bin 0 -> 35498 bytes images/PlatformPageAzureResourceURL.png | Bin 0 -> 10574 bytes 7 files changed, 67 insertions(+), 19 deletions(-) create mode 100644 images/B2C_Deployment/02a_exchangeLogin.png create mode 100644 images/B2C_Deployment/02b_tenantID.png create mode 100644 images/B2C_Deployment/b2cConfigurationValues.png create mode 100644 images/PlatformPageAzureResourceURL.png diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 9061119b..10cd2dbb 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -224,9 +224,13 @@ process { $UserEmailAddresses = getAllAliasEmails $CurrentUseremailaddress Write-Host "Users that will be allowed to access platforms page:" $UserDisplayEmails - $choice = Read-Host "Want to add more users from this same domain ($Domain)? (y/n)" - $choice = $choice.Trim() + $choice = "" + while($choice -ne "y" -and $choice -ne "n") { + $choice = Read-Host "Want to add more users from this same domain ($Domain)? (y/n)" + $choice = $choice.Trim() + } + #iteratively add more users from the same domain to the list of allowed users if($choice -eq "y"){ $extramail = Read-Host "Enter user's email or 'n' if you have no more users you would like to grant access" @@ -250,7 +254,8 @@ process { } Write-Host "`r`n" - $activeDirectoryTenant = Read-Host 'Enter the tenant id of your primary Active Directory tenant. This tenant should contain the LMS resource groups and will contain your LTI resource groups' + Write-Title "Enter the tenant ID of your primary Active Directory Tenant" + $activeDirectoryTenant = Read-Host 'Enter the tenant id of your primary Active Directory tenant. This tenant should: own the subscription you just input, contain the LMS resource groups, and will contain your LTI resource groups' #endregion #endregion diff --git a/docs/B2C_Deployment.md b/docs/B2C_Deployment.md index 6854c8f6..76d61150 100644 --- a/docs/B2C_Deployment.md +++ b/docs/B2C_Deployment.md @@ -71,7 +71,7 @@ This document will explain the steps that contain user interaction and what is r ### Choice 1: Inputting via text file (recommended for larger whitelists) -* After inputting '1' as your choice, you will now be prompted to input the path to the .txt file you created which contains the tenants you wish to add to your whitelist. The script will now automatically add these tenants to the whitelist. +* After inputting '1' as your choice, you will now be prompted to input the path to the .txt file you created which contains the tenants you wish to add to your whitelist (for the structure of the file click [here](#prerequisites)). The script will now automatically add these tenants to the whitelist. * ![successful run of importing whitelist via txt file](../images/B2C_Deployment/07_1_successful.png) ### Choice 2: Inputting 1 by 1 to terminal (recommended for smaller whitelists) @@ -106,7 +106,8 @@ This document will explain the steps that contain user interaction and what is r ### Input key duration * You will first be prompted to input how long you wish the created keys to be valid for before they expire * ![key duration](../images/B2C_Deployment/11_time.png) -* If your console returns a 403 bad request error, please click [here](#403-forbidden-error) +* If your console returns a 403 bad request error (such as the one shown below), please click [here](#403-forbidden-error) + * ![error admin-consent race](../images/B2C_Deployment/11_error.png) ## Step 12 automatic setup (uploading the custom policies) @@ -114,7 +115,7 @@ This document will explain the steps that contain user interaction and what is r * The custom policies will now be uploaded automatically without requiring further input -## Step 13: IMPORTANT - Store Secret Values +## ⚠️ Step 13: IMPORTANT - Store Secret Values ![Secret Values](../images/B2C_Deployment/13_secrets.png) * After the script finishes running it will output some important values in green and then pause the script (ID and secret values for the created AD app, Permission Management App, and Web App). diff --git a/docs/DEPLOYMENT_GUIDE.md b/docs/DEPLOYMENT_GUIDE.md index 5f452d6a..bb03e708 100644 --- a/docs/DEPLOYMENT_GUIDE.md +++ b/docs/DEPLOYMENT_GUIDE.md @@ -44,9 +44,25 @@ You have now cloned the repo # Deploy to Azure Subscription using the script -**NOTE:** if B2C mode is chosen, the B2C setup must be completed before reaching this step. +## Choosing the AD or B2C mode + +The script will ask you to choose 'Active Directory',i.e. AD mode or 'Business to Consumer',i.e. B2C mode for authentication between your LTI and LMS. + +B2C Mode is recommended due to it being possible to set it up for either single-tenant and multi-tenant access; whilst AD mode is less extensible and only supports single-tenant access. + +### AD Mode setup + +Type in 'ad' for AD mode of authentication (which only allows single-tenant). +![admode.png](/images/admode.png) + +### B2C Mode setup (recommended due to extensibility) + +Type in 'b2c' for B2C mode of authentication (which allows single-tenant or multi-tenant and can be changed after deployment). +![b2cmode.png](/images/b2cmode.png) + ## Login to Azure +**NOTE:** if B2C mode is chosen, the B2C setup must be completed before reaching this step. The script will ask you to login to Azure by navigating to the Azure Login Page on your browser. @@ -55,25 +71,30 @@ The script will ask you to login to Azure by navigating to the Azure Login Page Type in the name of the Azure subscription that you hold (this is a prerequisite necessary for deployment). -If you're unsure about whether your account has a subscription, check [here.](https://ms.portal.azure.com/#blade/Microsoft_Azure_Billing/SubscriptionsBlade??WT.mc_id=learnlti-github-cxa) +If you're unsure about whether your account has a subscription, check [here.](https://ms.portal.azure.com/#blade/Microsoft_Azure_Billing/SubscriptionsBlade??WT.mc_id=learnlti-github-cxa) -## Choosing the AD or B2C mode +## Create list of users allowed to access the platform page -The script will ask you to choose 'Active Directory',i.e. AD mode or 'Business to Consumer',i.e. B2C mode for authentication between your LTI and LMS. +* Firstly, log in via the popup window to the same account you logged into Azure with + * ![login for platform page allow list](../images/B2C_Deployment/02a_exchangeLogin.png) +* You will then, by default, be put on the allow list to access the platform page used to configure Learn-LTI with your LMS. +* If you would like to add more users from your organisation who you would like to give access to this page; please input 'y', if not input 'n' to skip this step +* If you input 'y' please input one by one the emails of the other users you would like to give access to, then 'n' when you have finished. -B2C Mode is recommended due to it being possible to set it up for either single-tenant and multi-tenant access; whilst AD mode is less extensible and only supports single-tenant access. +## Enter the tenant ID of your primary Active Directory Tenant -### AD Mode setup +* You must now enter the Tenant ID of the primary **Active Directory** Tenant that owns the subscription you just input, contain the LMS resource groups, and will contain your LTI resource groups +* The Tenant ID can be found on this page (after logging into Azure with the same account you logged into the Powershell with): + * https://portal.azure.com/#settings/directory + * ![Tenant ID Portal](../images/B2C_Deployment/02b_tenantID.png) -Type in 'ad' for AD mode of authentication (which only allows single-tenant). -![admode.png](/images/admode.png) -### B2C Mode setup (recommended due to extensibility) +## OPTIONAL B2C SETUP + +* **IMPORTANT: If you chose B2C at the start of the script, go to the [B2C setup documentation guide](https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/blob/main/docs/B2C_Deployment.md) for instructions on how to complete B2C deployment before looking at the next step.** +* If you chose AD at the start of the script, skip to the next step -Type in 'b2c' for B2C mode of authentication (which allows single-tenant or multi-tenant and can be changed after deployment). -![b2cmode.png](/images/b2cmode.png) -**IMPORTANT: If you choose B2C, go to the [B2C setup documentation guide](https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/blob/main/docs/B2C_Deployment.md) for instructions on how to complete B2C deployment.** ## Choose Location @@ -114,7 +135,11 @@ For information regarding your region, check [here.](https://azure.microsoft.com The **Deploy.ps1** script will automatically provision and configure the required resources for you. -## ⚠️ Tool Registration URL +## ⚠️ Important Values after completing + +The Script will display the following important values after completion, please make a note of all. + +### ⚠️ Tool Registration URL The Script will display the Tool Registration URL after completion. Please **copy the URL and keep it handy** since it will be required while configuring the tool in the LMS. @@ -133,6 +158,23 @@ Open the tool registration page from your browser and take note of the following **Congratulations!** Your instance of the tool should now be deployed on Azure! + + +### ⚠️ Platform Page Azure Resource URL + +The Script will display the Platform Page Azure Resource URL after completion. Please **copy the URL** since, if something goes wrong, it contains useful information for helping you debug, create a github issue, and/or contact for help. + +![platform page azure resource URL](../images/PlatformPageAzureResourceURL.png) + +### ⚠️ B2C ONLY: Configuration Values + +If you ran a b2c setup, the Script will display the Configuration values required for setting up Moodle to work with b2c after completion. Please **copy these values** since, they are needed in setting up the B2C Configuration as seen [here](https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/blob/main/docs/DEVTESTENV.md#setting-up-your-test-lms-environment-with-azure-ad-b2c-multitenant-sign-in). + +![B2C Configuration Values](../images/B2C_Deployment/b2cConfigurationValues.png) + +# Troubleshooting + + If your **deployment failed**, click [here](./TROUBLESHOOTING.md) for help. Once the tool has been successfully deployed, the next step is to [configure the tool](./CONFIGURATION_GUIDE.md) on your institution's LMS. diff --git a/images/B2C_Deployment/02a_exchangeLogin.png b/images/B2C_Deployment/02a_exchangeLogin.png new file mode 100644 index 0000000000000000000000000000000000000000..4e032baba1ecc1cbe75187bce16768c0da852483 GIT binary patch literal 54854 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

K`bkG!T7%9rUob7o>s}P^LqQ- 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�IYb2k9- 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 literal 0 HcmV?d00001 diff --git a/images/PlatformPageAzureResourceURL.png b/images/PlatformPageAzureResourceURL.png new file mode 100644 index 0000000000000000000000000000000000000000..73d32a9c5991ba1d3cf423474b6f702f518f5be2 GIT binary patch literal 10574 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 literal 0 HcmV?d00001 From 1f1e866aa020c370785535c03fa27263c1c1e9ed Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Fri, 19 Aug 2022 13:46:45 +0100 Subject: [PATCH 241/285] Converted Deploy.ps1 params back to default values used in main --- deployment/Deploy.ps1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 10cd2dbb..c13154d9 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -10,8 +10,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "AdOnly9-MSLearnLti", - [string]$AppName = "AdOnly9-MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "MSLearnLti", + [string]$AppName = "MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null From 5a61b1c9ccbd35ebdb1062b796d3199c12c508b6 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Mon, 22 Aug 2022 10:29:11 +0100 Subject: [PATCH 242/285] changes to solve future refreshes --- client/src/Core/Auth/AppAuthConfig.ts | 2 +- client/src/Core/Auth/AxiosBasicAuthInitializer.tsx | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/client/src/Core/Auth/AppAuthConfig.ts b/client/src/Core/Auth/AppAuthConfig.ts index e61535f5..8a999050 100644 --- a/client/src/Core/Auth/AppAuthConfig.ts +++ b/client/src/Core/Auth/AppAuthConfig.ts @@ -50,7 +50,7 @@ const config: Configuration = { }, cache: { cacheLocation: 'localStorage', - storeAuthStateInCookie: true + storeAuthStateInCookie: false }, system: { loggerOptions: { diff --git a/client/src/Core/Auth/AxiosBasicAuthInitializer.tsx b/client/src/Core/Auth/AxiosBasicAuthInitializer.tsx index cc3fd640..f3b7e206 100644 --- a/client/src/Core/Auth/AxiosBasicAuthInitializer.tsx +++ b/client/src/Core/Auth/AxiosBasicAuthInitializer.tsx @@ -6,7 +6,7 @@ import React, { PropsWithChildren, useState, useEffect } from 'react'; import axios from 'axios'; import { useMsal } from '@azure/msal-react'; -import { InteractionRequiredAuthError, InteractionStatus } from '@azure/msal-browser'; +import { InteractionRequiredAuthError, BrowserAuthError, InteractionStatus } from '@azure/msal-browser'; import { request } from './AppAuthConfig'; export const AxiosBasicAuthInitializer = ({ children }: PropsWithChildren<{}>): JSX.Element => { @@ -16,11 +16,14 @@ export const AxiosBasicAuthInitializer = ({ children }: PropsWithChildren<{}>): // Called everytime time the LTI app is accessed to authenticate the user before allowing access. request.account = accounts[0]; + request.loginHint = request.account.username; + // request.loginHint = request.account. useEffect(() => { if (!isTokenLoaded && inProgress === InteractionStatus.None) { instance .acquireTokenSilent(request) .then(tokenObj => { + accounts[0].username = tokenObj.idTokenClaims['email']; axios.defaults.headers.common = { Authorization: `bearer ${tokenObj.accessToken}` }; setAccessToken(tokenObj.accessToken); setIsTokenLoaded(true); @@ -29,7 +32,7 @@ export const AxiosBasicAuthInitializer = ({ children }: PropsWithChildren<{}>): console.log('silent failed'); console.log(error); // acquireTokenSilent can fail for a number of reasons, fallback to interaction - if (error instanceof InteractionRequiredAuthError) { + if (error instanceof InteractionRequiredAuthError || error instanceof BrowserAuthError) { instance.acquireTokenRedirect(request); } }); From 3f5be9004ddf2aa2cbbeac8c5bb03803123a52b6 Mon Sep 17 00:00:00 2001 From: Tianchen Zhang Date: Mon, 22 Aug 2022 12:16:23 +0100 Subject: [PATCH 243/285] change ci configuration into main; fix npm issue by ignoring conflicts --- .github/workflows/server.yml | 2 ++ .github/workflows/unit-test.yml | 28 ---------------------------- deployment/Install-Client.ps1 | 3 ++- 3 files changed, 4 insertions(+), 29 deletions(-) delete mode 100644 .github/workflows/unit-test.yml diff --git a/.github/workflows/server.yml b/.github/workflows/server.yml index 5aeb9949..8ab536e7 100644 --- a/.github/workflows/server.yml +++ b/.github/workflows/server.yml @@ -24,3 +24,5 @@ jobs: run: dotnet restore ${{ env.SOURCE_DIR }} - name: Build run: dotnet build ${{ env.SOURCE_DIR }} --configuration Release --no-restore + - name: Test + run: dotnet test ${{ env.SOURCE_DIR }} --no-restore --verbosity normal \ No newline at end of file diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml deleted file mode 100644 index 31f4e82c..00000000 --- a/.github/workflows/unit-test.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: unit test - -on: - push: - branches: [ all_test-2 ] - pull_request: - branches: [ all_test-2 ] - -jobs: - build: - runs-on: windows-latest - - env: - SOURCE_DIR: ${{ github.workspace }}\backend - DOTNET_VERSION: "3.1.101" - - steps: - - uses: actions/checkout@v2 - - name: Setup .NET Core - uses: actions/setup-dotnet@v1 - with: - dotnet-version: ${{ env.DOTNET_VERSION }} - - name: Install dependencies - run: dotnet restore ${{ env.SOURCE_DIR }} - - name: Build - run: dotnet build ${{ env.SOURCE_DIR }} --configuration Release --no-restore - - name: Test - run: dotnet test ${{ env.SOURCE_DIR }} --no-restore --verbosity normal \ No newline at end of file diff --git a/deployment/Install-Client.ps1 b/deployment/Install-Client.ps1 index fb9bda4e..b82fca39 100644 --- a/deployment/Install-Client.ps1 +++ b/deployment/Install-Client.ps1 @@ -196,7 +196,8 @@ function Install-Client { } Write-ClientDebugLog -Message 'Running npm ci' - $SetupLogs = npm ci + # add --legacy-peer-deps to resolve dependency conflicts + $SetupLogs = npm ci --legacy-peer-deps if($LASTEXITCODE -ne 0) { if ($SetupLogs) { Write-ClientDebugLog -Message ($SetupLogs -join "`n") From e5a917a9010c4cc603882874da861369dd612139 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Mon, 22 Aug 2022 14:37:58 +0100 Subject: [PATCH 244/285] Minor docs changes --- docs/B2C_Deployment.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/B2C_Deployment.md b/docs/B2C_Deployment.md index 6854c8f6..23b164fd 100644 --- a/docs/B2C_Deployment.md +++ b/docs/B2C_Deployment.md @@ -29,7 +29,7 @@ This document will explain the steps that contain user interaction and what is r ## Step 0: Enter tenant names -* You will immediately be prompted to input the name of the B2C and AD tenants you have created:
1. First, input the name of the B2C Tenant you have created (INCLUDING its extension e.g. the default .onmicrosoft.com) +* You will immediately be prompted to input the name of the B2C Tenant you have created (INCLUDING its extension e.g. the default .onmicrosoft.com) * ![input tenant names](../images/B2C_Deployment/00b_tenantNames.png) From cbf46742986c055d7a1384e000bd9cce7d7f1382 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Mon, 22 Aug 2022 14:41:09 +0100 Subject: [PATCH 245/285] More minor docs changes --- docs/DEPLOYMENT_GUIDE.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/DEPLOYMENT_GUIDE.md b/docs/DEPLOYMENT_GUIDE.md index bb03e708..761841a9 100644 --- a/docs/DEPLOYMENT_GUIDE.md +++ b/docs/DEPLOYMENT_GUIDE.md @@ -137,10 +137,13 @@ The **Deploy.ps1** script will automatically provision and configure the require ## ⚠️ Important Values after completing -The Script will display the following important values after completion, please make a note of all. +**Congratulations!** Your instance of the tool should now be deployed on Azure! + +The Script will now display the following important values after completion ([Tool Registration URL](#️-tool-registration-url), [Platform Page Azure Resource URL](#️-platform-page-azure-resource-url) & [B2C Configuration Values](#⚠️-b2c-only-configuration-values)), please make a note of all. ### ⚠️ Tool Registration URL + The Script will display the Tool Registration URL after completion. Please **copy the URL and keep it handy** since it will be required while configuring the tool in the LMS. ![Deployment.4](/images/Deployment.4.PNG) @@ -156,7 +159,7 @@ Open the tool registration page from your browser and take note of the following ![Deployment.5](/images/Deployment.5.png) -**Congratulations!** Your instance of the tool should now be deployed on Azure! + From 558486116d08500da117226144d851c05bae0010 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Tue, 23 Aug 2022 11:57:02 +0100 Subject: [PATCH 246/285] Minor docs changes (flexible links + consistency fixes) --- docs/DEPLOYMENT_GUIDE.md | 11 ++++++++--- docs/DEVTESTENV.md | 27 ++++++++++++++------------- docs/TROUBLESHOOTING.md | 19 ++++++++++++------- 3 files changed, 34 insertions(+), 23 deletions(-) diff --git a/docs/DEPLOYMENT_GUIDE.md b/docs/DEPLOYMENT_GUIDE.md index 761841a9..9ad8f3b0 100644 --- a/docs/DEPLOYMENT_GUIDE.md +++ b/docs/DEPLOYMENT_GUIDE.md @@ -21,7 +21,7 @@ Follow these steps to deploy the Microsoft Learn LTI tool: # Clone the repo 1. Go to the [repo](http://github.com/microsoft/learn-lti) Click code button on the [repo](http://github.com/microsoft/learn-lti) -![Clone Repo](https://github.com/microsoft/Learn-LTI/blob/main/images/clone.png) +![Clone Repo](../images/clone.png) 3. Simply click the code button and select Open with GitHub Desktop or Download Zip to clone contents of the repo. If you are using Git @@ -92,7 +92,7 @@ If you're unsure about whether your account has a subscription, check [here.](ht ## OPTIONAL B2C SETUP -* **IMPORTANT: If you chose B2C at the start of the script, go to the [B2C setup documentation guide](https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/blob/main/docs/B2C_Deployment.md) for instructions on how to complete B2C deployment before looking at the next step.** +* **IMPORTANT: If you chose B2C at the start of the script, go to the [B2C setup documentation guide](./B2C_Deployment.md) for instructions on how to complete B2C deployment before looking at the next step.** * If you chose AD at the start of the script, skip to the next step @@ -171,7 +171,7 @@ The Script will display the Platform Page Azure Resource URL after completion. P ### ⚠️ B2C ONLY: Configuration Values -If you ran a b2c setup, the Script will display the Configuration values required for setting up Moodle to work with b2c after completion. Please **copy these values** since, they are needed in setting up the B2C Configuration as seen [here](https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/blob/main/docs/DEVTESTENV.md#setting-up-your-test-lms-environment-with-azure-ad-b2c-multitenant-sign-in). +If you ran a b2c setup, the Script will display the Configuration values required for setting up Moodle to work with b2c after completion. Please **copy these values** since, they are needed in setting up the B2C Configuration as seen [here](./DEVTESTENV.md#setting-up-your-test-lms-environment-with-azure-ad-b2c-multitenant-sign-in). ![B2C Configuration Values](../images/B2C_Deployment/b2cConfigurationValues.png) @@ -180,4 +180,9 @@ If you ran a b2c setup, the Script will display the Configuration values require If your **deployment failed**, click [here](./TROUBLESHOOTING.md) for help. + +# Next steps + Once the tool has been successfully deployed, the next step is to [configure the tool](./CONFIGURATION_GUIDE.md) on your institution's LMS. + +And, if you chose B2C, set up the B2C Tool on your LMS as explained in [here](./DEVTESTENV.md#setting-up-your-test-lms-environment-with-azure-ad-b2c-multitenant-sign-in). \ No newline at end of file diff --git a/docs/DEVTESTENV.md b/docs/DEVTESTENV.md index 06365ceb..7714fac2 100644 --- a/docs/DEVTESTENV.md +++ b/docs/DEVTESTENV.md @@ -91,19 +91,20 @@ The DevTest Environment of Moodle can support both [AAD Single Sign in](#Setting ![enable-b2c-plugin](../images/enableB2CPlugin.png) - Click on the Settings blade of the Azure AD B2C Connect plugin - Configure the Azure AD B2C Connect plugin: - - **Azure B2C scope**: openid - - To get the user_impersonation_url, switch to the B2C tenant in Azure Portal, go to Azure AD B2C - App registrations and find the B2C Web app. - The user_impersonation_url can be found at API Permissions - user_impersonation. - ![user-impersonation](../images/user_impersonation.png) - - **Provider name**: Choose a good name, e.g., Azure AD B2C Connect - - **Client ID**: The client ID of the B2C Web app - - **Client secret**: The client secret of the B2C Web app - - **Authorization endpoint**: https://.b2clogin.com/.onmicrosoft.com/oauth2/v2.0/authorize?p=b2c_1a_signin - - The b2c_tenant_name is the name of the B2C tenant that is used to setup the login process. For example, if the domain of the B2C tenant is testb2c.onmicrosoft.com, then b2c_tenant_name should be **testb2c** - - **Forgot Password endpoint**: https://.b2clogin.com/.onmicrosoft.com/oauth2/v2.0/authorize?p=b2c_1a_passwordreset - - **Edit Profile endpoint**: https://.b2clogin.com/.onmicrosoft.com/oauth2/v2.0/authorize?p=b2c_1a_profileedit - - **Token endpoint**: https://.b2clogin.com/.onmicrosoft.com/oauth2/v2.0/token?p=b2c_1a_signin - - **Resource**: graph.windows.net + - The following values should be returned by the deployment script, as explained [here](./DEPLOYMENT_GUIDE.md#️-b2c-only-configuration-values); so you can simply copy/paste those values. If you have lost these values you can manually reconstruct those values using the explanations below: + - **Azure B2C scope**: openid + - To get the user_impersonation_url, switch to the B2C tenant in Azure Portal, go to Azure AD B2C - App registrations and find the B2C Web app. + The user_impersonation_url can be found at API Permissions - user_impersonation. + ![user-impersonation](../images/user_impersonation.png) + - **Provider name**: Choose a good name, e.g., Azure AD B2C Connect + - **Client ID**: The client ID of the B2C Web app + - **Client secret**: The client secret of the B2C Web app + - **Authorization endpoint**: https://.b2clogin.com/.onmicrosoft.com/oauth2/v2.0/authorize?p=b2c_1a_signin + - The b2c_tenant_name is the name of the B2C tenant that is used to setup the login process. For example, if the domain of the B2C tenant is testb2c.onmicrosoft.com, then b2c_tenant_name should be **testb2c** + - **Forgot Password endpoint**: https://.b2clogin.com/.onmicrosoft.com/oauth2/v2.0/authorize?p=b2c_1a_passwordreset + - **Edit Profile endpoint**: https://.b2clogin.com/.onmicrosoft.com/oauth2/v2.0/authorize?p=b2c_1a_profileedit + - **Token endpoint**: https://.b2clogin.com/.onmicrosoft.com/oauth2/v2.0/token?p=b2c_1a_signin + - **Resource**: graph.windows.net - **Redirect URI**: Record this value since it will be used in the next step - Click "Save Changes" - Register the Redirect URI to the B2C web app diff --git a/docs/TROUBLESHOOTING.md b/docs/TROUBLESHOOTING.md index 6e70f6c7..3564b5e4 100644 --- a/docs/TROUBLESHOOTING.md +++ b/docs/TROUBLESHOOTING.md @@ -2,6 +2,10 @@ For any and all issues, please raise a [GitHub issue](https://github.com/microsoft/Learn-LTI/issues/new?WT.mc_id=learnlti-github-cxa) so we can help you. +## B2C Deployment Based Issues + +If you have any B2C based issues please check [here](./B2C_Deployment.md#troubleshooting) + ## General Deployment Issues If your **deployment fails and the resource group has been created**; an IT admin needs to delete the resource group in their subscription and re-run the script again. @@ -33,15 +37,8 @@ To begin, you will need: To remove the services simply run the [cleanup.bat](https://github.com/microsoft/Learn-LTI/blob/main/deployment/cleanup.bat) script located in the Deployment folder. This will run the [Cleanup.ps1](https://github.com/microsoft/Learn-LTI/blob/main/deployment/Cleanup.ps1) script which will remove all the deployed resources for the Learn LTI Application from your Azure Subscription. -### (Optional) Cleaning up B2C setup: -When running [cleanup.bat](https://github.com/microsoft/Learn-LTI/blob/main/deployment/cleanup.bat), you will be prompted to answer whether or not you have a b2c tenant to cleanup. -![b2cclean.png](/images/b2cclean.png) -* If you chose 'b2c' mode during the deployment, then; when prompted if you have a b2c tenant to cleanup, select 'y' - * After selecting 'y' the script will now run the b2c cleanup, please follow this [guide](https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/blob/main/docs/B2C_Cleanup.md) for more information on how to cleanup the B2C tenant. -* If you chose 'ad' mode during the deployment, then; when prompted if you have a b2c tenant to cleanup, select 'n' to skip this step - ### Important Cleanup Notes @@ -54,6 +51,14 @@ If you have changed the name of the Resource Group or AppName simply replace the Ensure you [purge your keyvault]( https://github.com/microsoft/Learn-LTI/blob/main/docs/TROUBLESHOOTING.md#purging-key-vaults) before running the setup script again +#### (B2C Only) Cleaning up B2C setup: + + +When running [cleanup.bat](https://github.com/microsoft/Learn-LTI/blob/main/deployment/cleanup.bat), you will be prompted to answer whether or not you have a b2c tenant to cleanup. +![b2cclean.png](/images/b2cclean.png) +* If you chose 'b2c' mode during the deployment, then; when prompted if you have a b2c tenant to cleanup, select 'y' + * After selecting 'y' the script will now run the b2c cleanup, please follow this [guide](https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/blob/main/docs/B2C_Cleanup.md) for more information on how to cleanup the B2C tenant. +* If you chose 'ad' mode during the deployment, then; when prompted if you have a b2c tenant to cleanup, select 'n' to skip this step ## Check the Failed Deployment status and output From 637ceb20009e1579102495c89fdb39cbf5669364 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Tue, 23 Aug 2022 12:03:08 +0100 Subject: [PATCH 247/285] Minor docs changes --- docs/DEPLOYMENT_GUIDE.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/DEPLOYMENT_GUIDE.md b/docs/DEPLOYMENT_GUIDE.md index 9ad8f3b0..1389279b 100644 --- a/docs/DEPLOYMENT_GUIDE.md +++ b/docs/DEPLOYMENT_GUIDE.md @@ -62,7 +62,6 @@ Type in 'b2c' for B2C mode of authentication (which allows single-tenant or mult ## Login to Azure -**NOTE:** if B2C mode is chosen, the B2C setup must be completed before reaching this step. The script will ask you to login to Azure by navigating to the Azure Login Page on your browser. @@ -95,10 +94,14 @@ If you're unsure about whether your account has a subscription, check [here.](ht * **IMPORTANT: If you chose B2C at the start of the script, go to the [B2C setup documentation guide](./B2C_Deployment.md) for instructions on how to complete B2C deployment before looking at the next step.** * If you chose AD at the start of the script, skip to the next step +After the scripts termination you will now be prompted to log back into the AD tenant. + ## Choose Location +**NOTE:** if B2C mode is chosen, the B2C setup must be completed before reaching this step. + The following regions are supported: * eastasia From 64e22e16dccd137ef7b47f3bc9c9e144ba851ba4 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Tue, 23 Aug 2022 12:05:04 +0100 Subject: [PATCH 248/285] More minor docs changes --- docs/DEPLOYMENT_GUIDE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/DEPLOYMENT_GUIDE.md b/docs/DEPLOYMENT_GUIDE.md index 1389279b..31cb69d0 100644 --- a/docs/DEPLOYMENT_GUIDE.md +++ b/docs/DEPLOYMENT_GUIDE.md @@ -174,7 +174,7 @@ The Script will display the Platform Page Azure Resource URL after completion. P ### ⚠️ B2C ONLY: Configuration Values -If you ran a b2c setup, the Script will display the Configuration values required for setting up Moodle to work with b2c after completion. Please **copy these values** since, they are needed in setting up the B2C Configuration as seen [here](./DEVTESTENV.md#setting-up-your-test-lms-environment-with-azure-ad-b2c-multitenant-sign-in). +If you ran a b2c setup, the Script will display the Configuration values required for setting up Moodle to work with b2c after completion. Please **copy these values** since, they are needed in setting up the B2C Configuration as seen in step 2 of [here](./DEVTESTENV.md#setting-up-your-test-lms-environment-with-azure-ad-b2c-multitenant-sign-in). ![B2C Configuration Values](../images/B2C_Deployment/b2cConfigurationValues.png) From 5198cf5703f145beee41896bf070ad6d78b45054 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Tue, 23 Aug 2022 12:07:03 +0100 Subject: [PATCH 249/285] Minor doc changes --- docs/TROUBLESHOOTING.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/docs/TROUBLESHOOTING.md b/docs/TROUBLESHOOTING.md index 3564b5e4..7d154b7b 100644 --- a/docs/TROUBLESHOOTING.md +++ b/docs/TROUBLESHOOTING.md @@ -37,8 +37,15 @@ To begin, you will need: To remove the services simply run the [cleanup.bat](https://github.com/microsoft/Learn-LTI/blob/main/deployment/cleanup.bat) script located in the Deployment folder. This will run the [Cleanup.ps1](https://github.com/microsoft/Learn-LTI/blob/main/deployment/Cleanup.ps1) script which will remove all the deployed resources for the Learn LTI Application from your Azure Subscription. +### Cleaning up B2C vs AD: +When running [cleanup.bat](https://github.com/microsoft/Learn-LTI/blob/main/deployment/cleanup.bat), you will be prompted to answer whether or not you have a b2c tenant to cleanup. +![b2cclean.png](/images/b2cclean.png) +* If you chose 'b2c' mode during the deployment, then; when prompted if you have a b2c tenant to cleanup, select 'y' + * After selecting 'y' the script will now run the b2c cleanup, please follow this [guide](https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/blob/main/docs/B2C_Cleanup.md) for more information on how to cleanup the B2C tenant. +* If you chose 'ad' mode during the deployment, then; when prompted if you have a b2c tenant to cleanup, select 'n' to skip this step + ### Important Cleanup Notes @@ -51,14 +58,6 @@ If you have changed the name of the Resource Group or AppName simply replace the Ensure you [purge your keyvault]( https://github.com/microsoft/Learn-LTI/blob/main/docs/TROUBLESHOOTING.md#purging-key-vaults) before running the setup script again -#### (B2C Only) Cleaning up B2C setup: - - -When running [cleanup.bat](https://github.com/microsoft/Learn-LTI/blob/main/deployment/cleanup.bat), you will be prompted to answer whether or not you have a b2c tenant to cleanup. -![b2cclean.png](/images/b2cclean.png) -* If you chose 'b2c' mode during the deployment, then; when prompted if you have a b2c tenant to cleanup, select 'y' - * After selecting 'y' the script will now run the b2c cleanup, please follow this [guide](https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/blob/main/docs/B2C_Cleanup.md) for more information on how to cleanup the B2C tenant. -* If you chose 'ad' mode during the deployment, then; when prompted if you have a b2c tenant to cleanup, select 'n' to skip this step ## Check the Failed Deployment status and output From 34b07f444de087c71d92c8c72d678c63bc333669 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Tue, 23 Aug 2022 12:08:35 +0100 Subject: [PATCH 250/285] Minor docs changes --- docs/TROUBLESHOOTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/TROUBLESHOOTING.md b/docs/TROUBLESHOOTING.md index 7d154b7b..bde877c6 100644 --- a/docs/TROUBLESHOOTING.md +++ b/docs/TROUBLESHOOTING.md @@ -43,7 +43,7 @@ To remove the services simply run the [cleanup.bat](https://github.com/microsoft When running [cleanup.bat](https://github.com/microsoft/Learn-LTI/blob/main/deployment/cleanup.bat), you will be prompted to answer whether or not you have a b2c tenant to cleanup. ![b2cclean.png](/images/b2cclean.png) * If you chose 'b2c' mode during the deployment, then; when prompted if you have a b2c tenant to cleanup, select 'y' - * After selecting 'y' the script will now run the b2c cleanup, please follow this [guide](https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/blob/main/docs/B2C_Cleanup.md) for more information on how to cleanup the B2C tenant. + * After selecting 'y' the script will now run the b2c cleanup, please follow this [guide](./B2C_Cleanup.md) for more information on how to cleanup the B2C tenant. * If you chose 'ad' mode during the deployment, then; when prompted if you have a b2c tenant to cleanup, select 'n' to skip this step From 2346f264cc530b7ceea0e8d4c616d091abca83d6 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Tue, 23 Aug 2022 12:15:41 +0100 Subject: [PATCH 251/285] Added flexible links into Troubleshooting.md --- docs/TROUBLESHOOTING.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/TROUBLESHOOTING.md b/docs/TROUBLESHOOTING.md index bde877c6..219f26c9 100644 --- a/docs/TROUBLESHOOTING.md +++ b/docs/TROUBLESHOOTING.md @@ -19,7 +19,7 @@ If your looking at deploying the service for a DevTest Environment please follow “Errors while building Function App [ AssignmentLearnContent ]" -see https://github.com/microsoft/Learn-LTI/blob/main/docs/DEPLOYMENT_GUIDE.md +see [here](./DEPLOYMENT_GUIDE.md) To begin, you will need to install the Prerequisites and reboot your machine @@ -34,13 +34,13 @@ To begin, you will need: ## Failed deployment or removing the services -To remove the services simply run the [cleanup.bat](https://github.com/microsoft/Learn-LTI/blob/main/deployment/cleanup.bat) script located in the Deployment folder. This will run the [Cleanup.ps1](https://github.com/microsoft/Learn-LTI/blob/main/deployment/Cleanup.ps1) script which will remove all the deployed resources for the Learn LTI Application from your Azure Subscription. +To remove the services simply run the [cleanup.bat](../deployment/cleanup.bat) script located in the Deployment folder. This will run the [Cleanup.ps1](../deployment/Cleanup.ps1) script which will remove all the deployed resources for the Learn LTI Application from your Azure Subscription. ### Cleaning up B2C vs AD: -When running [cleanup.bat](https://github.com/microsoft/Learn-LTI/blob/main/deployment/cleanup.bat), you will be prompted to answer whether or not you have a b2c tenant to cleanup. +When running [cleanup.bat](../deployment/cleanup.bat), you will be prompted to answer whether or not you have a b2c tenant to cleanup. ![b2cclean.png](/images/b2cclean.png) * If you chose 'b2c' mode during the deployment, then; when prompted if you have a b2c tenant to cleanup, select 'y' * After selecting 'y' the script will now run the b2c cleanup, please follow this [guide](./B2C_Cleanup.md) for more information on how to cleanup the B2C tenant. @@ -56,7 +56,7 @@ To Manually remove resources simply remove the Microsoft Learn LTI resource grou If you have changed the name of the Resource Group or AppName simply replace the actual names with the placeholder in the script. -Ensure you [purge your keyvault]( https://github.com/microsoft/Learn-LTI/blob/main/docs/TROUBLESHOOTING.md#purging-key-vaults) before running the setup script again +Ensure you [purge your keyvault](./TROUBLESHOOTING.md#purging-key-vaults) before running the setup script again ## Check the Failed Deployment status and output @@ -85,7 +85,7 @@ The personas/responsibilities for setup are: Exception.Message [ The term "az" is not recognized as a command applet name, function, script file, or executable program. Check the spelling of the name, or if a path exists, check that the path is correct and try again. ] -To run the install you need the Azure Command Line Extension tool installed see Instructions at: https://docs.microsoft.com/cli/azure/install-azure-cli-windows?tabs=azure-cli for instructions. Please ensure you have all the prerequisites installed https://github.com/microsoft/Learn-LTI/blob/main/docs/DEPLOYMENT_GUIDE.md#prerequisites +To run the install you need the Azure Command Line Extension tool installed see Instructions at: https://docs.microsoft.com/cli/azure/install-azure-cli-windows?tabs=azure-cli for instructions. Please ensure you have all the prerequisites installed [check here](./DEPLOYMENT_GUIDE.md#prerequisites) ## Wrong version of Azure CLI @@ -216,8 +216,8 @@ We have seen this is an intermittent issue, it usually happens if the user is tr This issue is typically related to one of the following: - Check if you have a valid 3rd Party Signed SSL. This services requires a valid 3rd party SSL certificate, self signed SSL certificates are not valid. Please ensure your service is using https:// with a valid SSL certification. -- Check the Launch URL, please make sure that all the fields are correctly filled while registering the tool and filling tool's platform registration page. See https://github.com/microsoft/Learn-LTI/blob/main/docs/CONFIGURATION_GUIDE.md -- Check the Azure Function/Azure Logs see https://github.com/microsoft/Learn-LTI/blob/main/docs/TROUBLESHOOTING.md#azure-functions-tracing +- Check the Launch URL, please make sure that all the fields are correctly filled while registering the tool and filling tool's platform registration page. See [here](./CONFIGURATION_GUIDE.md) +- Check the Azure Function/Azure Logs see [here](./TROUBLESHOOTING.md#azure-functions-tracing) ## LTI Application does not load error: No sufficient permissions to view this page @@ -273,7 +273,7 @@ When you go back to the course participants they will show as active and users w ## Canvas: LMS Issuer -If your using on premise, hosted or cloud implementations of Canvas. Ensure you register the parameters back in the Learn LTI application's registration page. Please ensure you always state the Issuer as https://canvas.instructure.com see the final steps in the Canvas instructions https://github.com/microsoft/Learn-LTI/blob/main/docs/CONFIGURATION_GUIDE.md +If your using on premise, hosted or cloud implementations of Canvas. Ensure you register the parameters back in the Learn LTI application's registration page. Please ensure you always state the Issuer as https://canvas.instructure.com see the final steps in the Canvas instructions [here](./CONFIGURATION_GUIDE.md) ## Canvas: Error - {Message}:{"Could not validate request."}? @@ -398,7 +398,7 @@ This results in you being unable to open the Assignments page in Learn-LTI. User Please see browser logs if indicate that the membership call being sent to the LMS (Moodle) is returning a 401 Unauthorized and the Learn LTI tool in unable to get the course members from the LMS and hence the it is giving a 500 response. Please make sure that while configuring the tool in Moodle, Under Services, IMS LTI Names and Role Provisioning: `Use this service to retrieve members’ information as per privacy settings.` is selected as mentioned in the [Configuration Guide Learn](CONFIGURATION_GUIDE.md) -![UseServicetoretrievemembers](https://github.com/microsoft/Learn-LTI/blob/main/images/Config.8.png) +![UseServicetoretrievemembers](../images/Config.8.png) # Troubleshooting Errors From 26476e89d53789f28503231be86bc96624ce03a5 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Thu, 25 Aug 2022 15:55:13 +0100 Subject: [PATCH 252/285] critical changes from Duy's selenium branch --- .github/workflows/UITest.yml | 30 ++ .../Selenium_Nunit_UI_Test.csproj | 22 + .../Selenium_Nunit_UI_Test.sln | 25 ++ Selenium_Nunit_UI_Test/UITest.cs | 417 ++++++++++++++++++ 4 files changed, 494 insertions(+) create mode 100644 .github/workflows/UITest.yml create mode 100644 Selenium_Nunit_UI_Test/Selenium_Nunit_UI_Test.csproj create mode 100644 Selenium_Nunit_UI_Test/Selenium_Nunit_UI_Test.sln create mode 100644 Selenium_Nunit_UI_Test/UITest.cs diff --git a/.github/workflows/UITest.yml b/.github/workflows/UITest.yml new file mode 100644 index 00000000..a3c4d22d --- /dev/null +++ b/.github/workflows/UITest.yml @@ -0,0 +1,30 @@ +# This action runs the Selenium automated tests + +name: UI Automated Testing +on: + workflow_dispatch: + +jobs: + build: + runs-on: windows-latest + + env: + SOURCE_DIR: ${{ github.workspace }}\Selenium_Nunit_UI_Test + + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v3 + + - name: Setup .NET + uses: actions/setup-dotnet@v1 + with: + dotnet-version: 3.1 + + - name: Install dependencies + run: dotnet restore ${{ env.SOURCE_DIR }} + + - name: Build + run: dotnet build ${{ env.SOURCE_DIR }} --configuration Release --no-restore + + - name: Test + run: dotnet test ${{ env.SOURCE_DIR }} --no-restore --verbosity normal \ No newline at end of file diff --git a/Selenium_Nunit_UI_Test/Selenium_Nunit_UI_Test.csproj b/Selenium_Nunit_UI_Test/Selenium_Nunit_UI_Test.csproj new file mode 100644 index 00000000..bfbed85d --- /dev/null +++ b/Selenium_Nunit_UI_Test/Selenium_Nunit_UI_Test.csproj @@ -0,0 +1,22 @@ + + + + netcoreapp3.1 + enable + + false + + + + + + + + + + + + + + + diff --git a/Selenium_Nunit_UI_Test/Selenium_Nunit_UI_Test.sln b/Selenium_Nunit_UI_Test/Selenium_Nunit_UI_Test.sln new file mode 100644 index 00000000..fcd0d287 --- /dev/null +++ b/Selenium_Nunit_UI_Test/Selenium_Nunit_UI_Test.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.32126.317 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Selenium_Nunit_UI_Test", "Selenium_Nunit_UI_Test.csproj", "{B5866E19-E893-490A-8025-A3797DA46095}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {B5866E19-E893-490A-8025-A3797DA46095}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B5866E19-E893-490A-8025-A3797DA46095}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B5866E19-E893-490A-8025-A3797DA46095}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B5866E19-E893-490A-8025-A3797DA46095}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {E61D811E-3D20-4176-B37F-F8AB14595615} + EndGlobalSection +EndGlobal diff --git a/Selenium_Nunit_UI_Test/UITest.cs b/Selenium_Nunit_UI_Test/UITest.cs new file mode 100644 index 00000000..27386500 --- /dev/null +++ b/Selenium_Nunit_UI_Test/UITest.cs @@ -0,0 +1,417 @@ +using System; +using System.Text; +using NUnit.Framework; +using OpenQA.Selenium; +using OpenQA.Selenium.Firefox; +using OpenQA.Selenium.Chrome; +using OpenQA.Selenium.IE; +using System.Threading; +using OpenQA.Selenium.Support.UI; +using System.Collections.Generic; + +namespace Selenium_Nunit_UI_Test +{ + public class UI_test + { + private IWebDriver driver; + + // Link to the moodle site that is used for testing + + private string moodleURL = "https://bitnami-moodle-b65b-ip.uksouth.cloudapp.azure.com/my/"; + + // Browser to be used for testing + + private string browser = "Chrome"; + + // List of user types to be used for testing + + private string[] user_types = { "student", "teacher", "external_student", "external_teacher" }; + + // Name of course that is used for testing + + private string test_course_name = "Selenium_Test_Course"; + + // Name of the assignment to be created and used for testing + + private string test_assignment_name = "Test_assignment_"; + + // Name of a deployed LTI tool + + private string LTI_tool_name = "RB_luke-1.3"; + + + // Login wrapper method + + public void Login(string user_type) + { + // Access the moodle login page + + driver.Navigate().GoToUrl(moodleURL); + var ADD_B2C_btn = driver.FindElements(By.ClassName("login-identityprovider-btn")); + + // Choose ADD B2C sign in + + ADD_B2C_btn[1].Click(); + Thread.Sleep(3000); + + // Sign in using a valid tenant account * Mock account required * + + driver.FindElement(By.Id("AD_Signin")).Click(); + Thread.Sleep(3000); + + // Enter mock account email address + + string username = ""; + string password = ""; + + switch (user_type) + { + case "teacher": + username = "test_teacher@uclmsclearnlti.onmicrosoft.com"; + password = "qwerty1234/.,/.,"; + break; + case "student": + username = "test_student@uclmsclearnlti.onmicrosoft.com"; + password = "qwerty1234/.,/.,"; + break; + case "external_teacher": + username = "external_test_teacher@w3jnk.onmicrosoft.com"; + password = "qwerty1234/.,/.,"; + break; + case "external_student": + username = "external_test_student@w3jnk.onmicrosoft.com"; + password = "qwerty1234/.,/.,"; + break; + default: + username = "test_student@uclmsclearnlti.onmicrosoft.com"; + password = "qwerty1234/.,/.,"; + break; + } + + // Input Username + + driver.FindElement(By.TagName("input")).SendKeys(username); + Thread.Sleep(3000); + driver.FindElement(By.Id("idSIButton9")).Click(); + Thread.Sleep(3000); + + // Input Password + + driver.FindElement(By.Id("i0118")).SendKeys(password); + Thread.Sleep(3000); + driver.FindElement(By.Id("idSIButton9")).Click(); + Thread.Sleep(6000); + + // Click "Yes" on "Stay sign in ?" + + if (user_type.Contains("external_")) + { + // More info required dialog box + + driver.FindElement(By.Id("idSubmit_ProofUp_Redirect")).Click(); + Thread.Sleep(15000); + + // Find skip button + + var skip_button = driver.FindElements(By.TagName("a")); + foreach (var link in skip_button) + { + if (link.Text.Contains("Skip setup")) + { + link.Click(); + Thread.Sleep(15000); + driver.FindElement(By.Id("idSIButton9")).Click(); + Thread.Sleep(15000); + break; + } + } + } + else + { + driver.FindElement(By.Id("idSIButton9")).Click(); + Thread.Sleep(5000); + } + + } + + + // Student/Teacher Authentication test + + [Test, Order(1)] + [TestCase("student")] + [TestCase("teacher")] + [TestCase("external_student")] + [TestCase("external_teacher")] + public void LogintAuthenticationTest(string user_type) + { + // Login as student + + Login(user_type); + bool successful_signin = false; + var titles = driver.FindElements(By.TagName("h2")); + Thread.Sleep(3000); + foreach (var title in titles) + { + if (title.Text.Contains("Welcome back,")) + { + successful_signin = true; + break; + } + } + Thread.Sleep(3000); + Assert.IsTrue(successful_signin); + } + + + // Create assingment test + + [Test, Order(2)] + [TestCase("teacher")] + [TestCase("external_teacher")] + public void CreateAssignmentTest(string usertype) + { + // Login as teacher + + Login(usertype); + Thread.Sleep(3000); + + // Choose My Course tab + + var Tabs = driver.FindElements(By.CssSelector("a[role='menuitem']")); + Thread.Sleep(3000); + + Tabs[2].Click(); + Thread.Sleep(3000); + + // Click on course + + var Courses = driver.FindElements(By.CssSelector("span[class='multiline']")); + + foreach(var course in Courses) + { + if(course.Text == test_course_name) + { + course.Click(); + break; + } + } + Thread.Sleep(3000); + + // Toggle Edit mode + + driver.FindElement(By.CssSelector("input[name='setmode']")).Click(); + Thread.Sleep(3000); + + // Add new assignment + + driver.FindElements(By.CssSelector("span[class='activity-add-text']"))[0].Click(); + Thread.Sleep(3000); + driver.FindElement(By.CssSelector("a[title='Add a new External tool']")).Click(); + Thread.Sleep(3000); + + // Fill in tools + + driver.FindElement(By.Id("id_name")).SendKeys(test_assignment_name + DateTime.Now.ToString("yyyyMMddHHmmss")); + var selectElement = new SelectElement(driver.FindElement(By.Id("id_typeid"))); + selectElement.SelectByText(LTI_tool_name); + + Thread.Sleep(3000); + driver.FindElement(By.Id("id_submitbutton2")).Click(); + + // Check if assingment is created + + Thread.Sleep(3000); + var All_Assignment = driver.FindElements(By.CssSelector("span[class='instancename']")); + bool assignment_created = false; + foreach (var assignment in All_Assignment) + { + if (assignment.Text.Contains(test_assignment_name)) + { + assignment_created = true; + break; + } + } + + Assert.IsTrue(assignment_created); + } + + // Access assingment test + + [Test, Order(3)] + [TestCase("student")] + [TestCase("external_student")] + public void AccessAssignmentTest(string usertype) + { + // Login as teacher + + Login(usertype); + Thread.Sleep(10000); + + // Choose My Course tab + + var Tabs = driver.FindElements(By.CssSelector("a[role='menuitem']")); + Thread.Sleep(2000); + + Tabs[2].Click(); + Thread.Sleep(2000); + + // Click on course + + var Courses = driver.FindElements(By.CssSelector("span[class='multiline']")); + + foreach (var course in Courses) + { + if (course.Text == test_course_name) + { + course.Click(); + break; + } + } + Thread.Sleep(2000); + + // Click on an assignment + + var Assignments = driver.FindElements(By.CssSelector("span[class='instancename']")); + + foreach (var assignment in Assignments) + { + if (assignment.Text.Contains(test_assignment_name)) + { + assignment.FindElement(By.XPath("..")).Click(); + break; + } + } + Thread.Sleep(25000); + + // Switch to LTI login window + + driver.SwitchTo().Window(driver.WindowHandles[1]); + + if (usertype.Contains("external_")) + { + // More info required dialog box + + driver.FindElement(By.Id("idSubmit_ProofUp_Redirect")).Click(); + Thread.Sleep(7000); + + // Find skip button + + var skip_button = driver.FindElements(By.TagName("a")); + foreach (var link in skip_button) + { + if (link.Text.Contains("Skip setup")) + { + link.Click(); + Thread.Sleep(3000); + break; + } + } + } + Thread.Sleep(7000); + } + + [Test, Order(4)] + [TestCase("teacher")] + public void DeletionTest(string usertype) + { + // Login as teacher + + Login(usertype); + Thread.Sleep(10000); + + // Choose My Course tab + + var Tabs = driver.FindElements(By.CssSelector("a[role='menuitem']")); + Thread.Sleep(3000); + + Tabs[2].Click(); + Thread.Sleep(3000); + + // Click on course + + var Courses = driver.FindElements(By.CssSelector("span[class='multiline']")); + + foreach (var course in Courses) + { + if (course.Text == "Selenium_Test_Course") + { + course.Click(); + break; + } + } + Thread.Sleep(3000); + + // Toggle Edit mode + + driver.FindElement(By.CssSelector("input[name='setmode']")).Click(); + Thread.Sleep(3000); + + // Find assignment to delete + + driver.SwitchTo().Window(driver.WindowHandles[0]); + var test_assignment_to_delete = driver.FindElements(By.CssSelector("div[class='activity-item ']")); + var assignment_positions = new List(); ; + var assignment_id_offset = 2; + for (int i = 0; i < test_assignment_to_delete.Count; i++) + { + if (test_assignment_to_delete[i].GetAttribute("data-activityname").Contains(test_assignment_name)) + { + assignment_positions.Add(i + assignment_id_offset); + } + } + Thread.Sleep(2000); + + // Delete all test assignments + + foreach (var position in assignment_positions) + { + driver.FindElement(By.Id($"action-menu-toggle-{position}")).Click(); + var options = driver.FindElement(By.Id($"action-menu-{position}")).FindElements(By.TagName("a")); + options[options.Count - 1].Click(); + driver.SwitchTo().ActiveElement(); + Thread.Sleep(1500); + driver.FindElement(By.XPath("//button[contains(text(),'Yes')]")).Click(); + Thread.Sleep(1500); + } + + } + + + // Test setup + + [SetUp] + public void SetupTest() + { + // Choose browser + + switch (browser) + { + case "Chrome": + driver = new ChromeDriver(); + break; + case "Firefox": + driver = new FirefoxDriver(); + break; + case "IE": + driver = new InternetExplorerDriver(); + break; + default: + driver = new ChromeDriver(); + break; + } + + } + + + // Test cleanup + + [TearDown] + public void MyTestCleanup() + { + // Quit test + + driver.Quit(); + } + + } +} From 7efde9d18327109d2bb368c1a45548def2986f40 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Fri, 26 Aug 2022 13:41:24 +0100 Subject: [PATCH 253/285] changed refresh timespan for caching --- .../Edna.Utils.Http/HttpHeadersExtensions.cs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/HttpHeadersExtensions.cs b/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/HttpHeadersExtensions.cs index 52c6a838..d52f08a9 100644 --- a/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/HttpHeadersExtensions.cs +++ b/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/HttpHeadersExtensions.cs @@ -22,8 +22,8 @@ public static class HttpHeadersExtensions private static readonly JwtSecurityTokenHandler JwtSecurityTokenHandler = new JwtSecurityTokenHandler(); public static async Task ValidateToken(this IHeaderDictionary headers, - IConfigurationManager adConfigurationManager, - IConfigurationManager b2CConfigurationManager, + ConfigurationManager adConfigurationManager, + ConfigurationManager b2CConfigurationManager, string validAudience, Action logAction = null) { if (!headers.ContainsKey("Authorization")) @@ -36,11 +36,13 @@ public static async Task ValidateToken(this IHeaderDictionary headers, var token = authorizationContent?.Split(' ')[1]; try { + adConfigurationManager.AutomaticRefreshInterval = TimeSpan.MaxValue; var adConfig = await adConfigurationManager.GetConfigurationAsync(default); var signingKeys = adConfig.SigningKeys; var validIssuers = new List { adConfig.Issuer }; if (b2CConfigurationManager != null) { + b2CConfigurationManager.AutomaticRefreshInterval = TimeSpan.MaxValue; var b2CConfig = await b2CConfigurationManager.GetConfigurationAsync(default); foreach (var key in b2CConfig.SigningKeys) signingKeys.Add(key); @@ -62,7 +64,7 @@ public static async Task ValidateToken(this IHeaderDictionary headers, } catch (Exception e) { - logAction?.Invoke(token + e + "Error when validating the user token."); + logAction?.Invoke(e + " Error when validating the user token."); } return false; } From eb9ecf9fddb85c6d4499b17c2bd63aec8dafdceb Mon Sep 17 00:00:00 2001 From: Tianchen Zhang Date: Sat, 27 Aug 2022 10:17:16 +0100 Subject: [PATCH 254/285] feat: set the refresh interval of configuration managers to be max value at the time of creation --- .../Edna.AssignmentLearnContent/Startup.cs | 10 ++++++++-- .../Edna.AssignmentLinks/Startup.cs | 10 ++++++++-- .../Edna.Assignments/Edna.Assignments/Startup.cs | 10 ++++++++-- .../Functions/Edna.Platforms/Edna.Platforms/Startup.cs | 10 ++++++++-- backend/Functions/Edna.Users/Edna.Users/Startup.cs | 10 ++++++++-- .../Edna.Utils.Http/HttpHeadersExtensions.cs | 6 ++---- 6 files changed, 42 insertions(+), 14 deletions(-) diff --git a/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/Startup.cs b/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/Startup.cs index 2d7903c2..928dcb0e 100644 --- a/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/Startup.cs +++ b/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/Startup.cs @@ -32,11 +32,17 @@ public void Configure(IWebJobsBuilder builder) builder.Services.AddAutoMapper(GetType().Assembly); builder.Services.AddSingleton((s) => new ConfigurationManager( - Environment.GetEnvironmentVariable("ADConfigurationUrl"), new OpenIdConnectConfigurationRetriever())); + Environment.GetEnvironmentVariable("ADConfigurationUrl"), new OpenIdConnectConfigurationRetriever()) + { + AutomaticRefreshInterval = TimeSpan.MaxValue + }); if (Environment.GetEnvironmentVariable("B2CConfigurationUrl") != null) builder.Services.AddSingleton((s) => new ConfigurationManager( - Environment.GetEnvironmentVariable("B2CConfigurationUrl"), new OpenIdConnectConfigurationRetriever())); + Environment.GetEnvironmentVariable("B2CConfigurationUrl"), new OpenIdConnectConfigurationRetriever()) + { + AutomaticRefreshInterval = TimeSpan.MaxValue + }); } } } \ No newline at end of file diff --git a/backend/Functions/Edna.AssignmentLinks/Edna.AssignmentLinks/Startup.cs b/backend/Functions/Edna.AssignmentLinks/Edna.AssignmentLinks/Startup.cs index dae79cc6..5f89e0a9 100644 --- a/backend/Functions/Edna.AssignmentLinks/Edna.AssignmentLinks/Startup.cs +++ b/backend/Functions/Edna.AssignmentLinks/Edna.AssignmentLinks/Startup.cs @@ -29,11 +29,17 @@ public void Configure(IWebJobsBuilder builder) builder.Services.AddAutoMapper(GetType().Assembly); builder.Services.AddSingleton((s) => new ConfigurationManager( - Environment.GetEnvironmentVariable("ADConfigurationUrl"), new OpenIdConnectConfigurationRetriever())); + Environment.GetEnvironmentVariable("ADConfigurationUrl"), new OpenIdConnectConfigurationRetriever()) + { + AutomaticRefreshInterval = TimeSpan.MaxValue + }); if (Environment.GetEnvironmentVariable("B2CConfigurationUrl") != null) builder.Services.AddSingleton((s) => new ConfigurationManager( - Environment.GetEnvironmentVariable("B2CConfigurationUrl"), new OpenIdConnectConfigurationRetriever())); + Environment.GetEnvironmentVariable("B2CConfigurationUrl"), new OpenIdConnectConfigurationRetriever()) + { + AutomaticRefreshInterval = TimeSpan.MaxValue + }); } } } \ No newline at end of file diff --git a/backend/Functions/Edna.Assignments/Edna.Assignments/Startup.cs b/backend/Functions/Edna.Assignments/Edna.Assignments/Startup.cs index dbd94580..875fb5c9 100644 --- a/backend/Functions/Edna.Assignments/Edna.Assignments/Startup.cs +++ b/backend/Functions/Edna.Assignments/Edna.Assignments/Startup.cs @@ -29,11 +29,17 @@ public void Configure(IWebJobsBuilder builder) builder.Services.AddAutoMapper(GetType().Assembly); builder.Services.AddSingleton((s) => new ConfigurationManager( - Environment.GetEnvironmentVariable("ADConfigurationUrl"), new OpenIdConnectConfigurationRetriever())); + Environment.GetEnvironmentVariable("ADConfigurationUrl"), new OpenIdConnectConfigurationRetriever()) + { + AutomaticRefreshInterval = TimeSpan.MaxValue + }); if (Environment.GetEnvironmentVariable("B2CConfigurationUrl") != null) builder.Services.AddSingleton((s) => new ConfigurationManager( - Environment.GetEnvironmentVariable("B2CConfigurationUrl"), new OpenIdConnectConfigurationRetriever())); + Environment.GetEnvironmentVariable("B2CConfigurationUrl"), new OpenIdConnectConfigurationRetriever()) + { + AutomaticRefreshInterval = TimeSpan.MaxValue + }); } } } \ No newline at end of file diff --git a/backend/Functions/Edna.Platforms/Edna.Platforms/Startup.cs b/backend/Functions/Edna.Platforms/Edna.Platforms/Startup.cs index d2a28f60..8f11d3f7 100644 --- a/backend/Functions/Edna.Platforms/Edna.Platforms/Startup.cs +++ b/backend/Functions/Edna.Platforms/Edna.Platforms/Startup.cs @@ -29,11 +29,17 @@ public void Configure(IWebJobsBuilder builder) builder.AddLtiAdvantageBindings(); builder.Services.AddSingleton((s) => new ConfigurationManager( - Environment.GetEnvironmentVariable("ADConfigurationUrl"), new OpenIdConnectConfigurationRetriever())); + Environment.GetEnvironmentVariable("ADConfigurationUrl"), new OpenIdConnectConfigurationRetriever()) + { + AutomaticRefreshInterval = TimeSpan.MaxValue + }); if (Environment.GetEnvironmentVariable("B2CConfigurationUrl") != null) builder.Services.AddSingleton((s) => new ConfigurationManager( - Environment.GetEnvironmentVariable("B2CConfigurationUrl"), new OpenIdConnectConfigurationRetriever())); + Environment.GetEnvironmentVariable("B2CConfigurationUrl"), new OpenIdConnectConfigurationRetriever()) + { + AutomaticRefreshInterval = TimeSpan.MaxValue + }); } } } \ No newline at end of file diff --git a/backend/Functions/Edna.Users/Edna.Users/Startup.cs b/backend/Functions/Edna.Users/Edna.Users/Startup.cs index f1379d94..43195573 100644 --- a/backend/Functions/Edna.Users/Edna.Users/Startup.cs +++ b/backend/Functions/Edna.Users/Edna.Users/Startup.cs @@ -34,11 +34,17 @@ public void Configure(IWebJobsBuilder builder) builder.Services.AddAutoMapper(GetType().Assembly); builder.Services.AddSingleton((s) => new ConfigurationManager( - Environment.GetEnvironmentVariable("ADConfigurationUrl"), new OpenIdConnectConfigurationRetriever())); + Environment.GetEnvironmentVariable("ADConfigurationUrl"), new OpenIdConnectConfigurationRetriever()) + { + AutomaticRefreshInterval = TimeSpan.MaxValue + }); if (Environment.GetEnvironmentVariable("B2CConfigurationUrl") != null) builder.Services.AddSingleton((s) => new ConfigurationManager( - Environment.GetEnvironmentVariable("B2CConfigurationUrl"), new OpenIdConnectConfigurationRetriever())); + Environment.GetEnvironmentVariable("B2CConfigurationUrl"), new OpenIdConnectConfigurationRetriever()) + { + AutomaticRefreshInterval = TimeSpan.MaxValue + }); } } } \ No newline at end of file diff --git a/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/HttpHeadersExtensions.cs b/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/HttpHeadersExtensions.cs index d52f08a9..702178f3 100644 --- a/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/HttpHeadersExtensions.cs +++ b/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/HttpHeadersExtensions.cs @@ -22,8 +22,8 @@ public static class HttpHeadersExtensions private static readonly JwtSecurityTokenHandler JwtSecurityTokenHandler = new JwtSecurityTokenHandler(); public static async Task ValidateToken(this IHeaderDictionary headers, - ConfigurationManager adConfigurationManager, - ConfigurationManager b2CConfigurationManager, + IConfigurationManager adConfigurationManager, + IConfigurationManager b2CConfigurationManager, string validAudience, Action logAction = null) { if (!headers.ContainsKey("Authorization")) @@ -36,13 +36,11 @@ public static async Task ValidateToken(this IHeaderDictionary headers, var token = authorizationContent?.Split(' ')[1]; try { - adConfigurationManager.AutomaticRefreshInterval = TimeSpan.MaxValue; var adConfig = await adConfigurationManager.GetConfigurationAsync(default); var signingKeys = adConfig.SigningKeys; var validIssuers = new List { adConfig.Issuer }; if (b2CConfigurationManager != null) { - b2CConfigurationManager.AutomaticRefreshInterval = TimeSpan.MaxValue; var b2CConfig = await b2CConfigurationManager.GetConfigurationAsync(default); foreach (var key in b2CConfig.SigningKeys) signingKeys.Add(key); From 5341d87cc9d0c81f2cec6d8b93813020c5b8e9f9 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Mon, 29 Aug 2022 10:35:34 +0100 Subject: [PATCH 255/285] Added code for addional dependency on MacOS --- docs/DEPLOYMENT_GUIDE.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/DEPLOYMENT_GUIDE.md b/docs/DEPLOYMENT_GUIDE.md index 31cb69d0..4e05a875 100644 --- a/docs/DEPLOYMENT_GUIDE.md +++ b/docs/DEPLOYMENT_GUIDE.md @@ -14,6 +14,7 @@ To begin, you will need: - [Powershell](https://docs.microsoft.com/powershell/scripting/install/installing-powershell?view=powershell-7?WT.mc_id=learnlti-github-cxa) - [Git](https://git-scm.com/downloads) - An Azure subscription +- If you are running this on MacOS you also require an additional dependency of [WSMan]([)](https://www.oasys.net/fragments/powershell-on-macos-wsman/) **Note:** Please ensure you **reboot your machine** after the installation of the Prerequisities From 8f6644c07232f0db6341ae4946dde99533b895c6 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Mon, 29 Aug 2022 10:39:20 +0100 Subject: [PATCH 256/285] Created doc file for developers --- docs/DOCS_FOR_DEVELOPERS.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 docs/DOCS_FOR_DEVELOPERS.md diff --git a/docs/DOCS_FOR_DEVELOPERS.md b/docs/DOCS_FOR_DEVELOPERS.md new file mode 100644 index 00000000..bdf67a4a --- /dev/null +++ b/docs/DOCS_FOR_DEVELOPERS.md @@ -0,0 +1,5 @@ +# Docs for Developers + +The purpose of this documentation is to help inform prospective contributors and developers on how the current solution works so that they can more easily contribute to the repository. + +If you only intended to use the program and not edit its internal code, you are probably looking for [The Deployment Guide](DEPLOYMENT_GUIDE.md) \ No newline at end of file From b14a3f988c76cb7be3b95b28a8408fe059af8e01 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Mon, 29 Aug 2022 12:21:57 +0100 Subject: [PATCH 257/285] Doc update --- docs/DOCS_FOR_DEVELOPERS.md | 50 +++++++++++++++++++++++++- images/Developer/AD_Architecture.png | Bin 0 -> 47356 bytes images/Developer/B2C_Architecture.png | Bin 0 -> 269609 bytes 3 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 images/Developer/AD_Architecture.png create mode 100644 images/Developer/B2C_Architecture.png diff --git a/docs/DOCS_FOR_DEVELOPERS.md b/docs/DOCS_FOR_DEVELOPERS.md index bdf67a4a..97a9d8f6 100644 --- a/docs/DOCS_FOR_DEVELOPERS.md +++ b/docs/DOCS_FOR_DEVELOPERS.md @@ -2,4 +2,52 @@ The purpose of this documentation is to help inform prospective contributors and developers on how the current solution works so that they can more easily contribute to the repository. -If you only intended to use the program and not edit its internal code, you are probably looking for [The Deployment Guide](DEPLOYMENT_GUIDE.md) \ No newline at end of file +If you only intended to use the program and not edit its internal code, you are probably looking for [The Deployment Guide](DEPLOYMENT_GUIDE.md) + +## Architecture of the Authentication solution + +### Legacy AD Architecture + + +| AD Architecture | B2C Architecture | +| - | - | +| ![AD Architecture](../images/Developer/AD_Architecture.png) +| ![B2C Architecture](../images/Developer/B2C_Architecture.png) | + + + +### B2C Architecture + + + +### B2C Usage For Multi-Tenant Auth + +* The B2C Tenant serves as the central resource for authenticating users. This is configured with a whitelist of allowed tenants during setup and only users from a permitted tenant are allowed to authenticate. + + +### Token Validation + +* Bearer tokens are used to authenticate users. These tokens are issued by the Azure AD B2C Tenant which retrieves users' information from different identity providers (e.g., the AD tenant of a University). These tokens are signed by the B2C tenant but are unencrypted, therefore their integrity is checked to ensure they have not been forged nor tampered with; and their audience, lifetime, issuer and nonce claims are checked and validated. +* To validate the token signature and claims the LTI backend users the Configuration Manager C# libraries to retrieve information about the AD and B2C tenants at runtime. + + + +### React Framework + +* React framework is used to dynamically render and update the pages in the LTI web applications. +* When an assignment link is clicked the LTI tool will authenticate the user against B2C AAD befroe allowing access to the assignment. the authentication process will acquire an access token for the user with their credentials and use that to allow access to the assignment. + +### Deploy scripts' + +* The Deploy script creates and configures all the resources required for an organisation to user Learn-LTI on the Universities existing AD and B2C tenants. + + + + +## Authentication Code + + +## Overall architecture of the LTI application + + + diff --git a/images/Developer/AD_Architecture.png b/images/Developer/AD_Architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..db52ea5069081d6884d81d624909b5de383c30e5 GIT binary patch literal 47356 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 literal 0 HcmV?d00001 diff --git a/images/Developer/B2C_Architecture.png b/images/Developer/B2C_Architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..a1bab71e86a66fc5c83045f764b06851ed923064 GIT binary patch literal 269609 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⋙1-NfO3h+XZ1q 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

KE_%Zd>Gj~vmDn}$H^5y1*yYtPMpIPb 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

jb+-SPE__#e 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 z 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 Date: Mon, 29 Aug 2022 12:25:56 +0100 Subject: [PATCH 258/285] doc test --- docs/DOCS_FOR_DEVELOPERS.md | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/docs/DOCS_FOR_DEVELOPERS.md b/docs/DOCS_FOR_DEVELOPERS.md index 97a9d8f6..ddd439b1 100644 --- a/docs/DOCS_FOR_DEVELOPERS.md +++ b/docs/DOCS_FOR_DEVELOPERS.md @@ -8,11 +8,16 @@ If you only intended to use the program and not edit its internal code, you are ### Legacy AD Architecture - | AD Architecture | B2C Architecture | -| - | - | -| ![AD Architecture](../images/Developer/AD_Architecture.png) -| ![B2C Architecture](../images/Developer/B2C_Architecture.png) | + +![AD Architecture](../images/Developer/AD_Architecture.png =250x250) + + + + + + +![B2C Architecture](../images/Developer/B2C_Architecture.png | width=10) From 48859eb5183320ef7184c76cbc94eaf3c4300369 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Mon, 29 Aug 2022 12:27:26 +0100 Subject: [PATCH 259/285] docs test --- docs/DOCS_FOR_DEVELOPERS.md | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/docs/DOCS_FOR_DEVELOPERS.md b/docs/DOCS_FOR_DEVELOPERS.md index ddd439b1..ef8cf4ce 100644 --- a/docs/DOCS_FOR_DEVELOPERS.md +++ b/docs/DOCS_FOR_DEVELOPERS.md @@ -9,15 +9,8 @@ If you only intended to use the program and not edit its internal code, you are ### Legacy AD Architecture | AD Architecture | B2C Architecture | - -![AD Architecture](../images/Developer/AD_Architecture.png =250x250) - - - - - - -![B2C Architecture](../images/Developer/B2C_Architecture.png | width=10) +| - | - | +| | | From 52840f29b640ad94cd0f2e99dccf5dd76db63461 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Mon, 29 Aug 2022 12:34:09 +0100 Subject: [PATCH 260/285] finished deploy section version 1 --- docs/DOCS_FOR_DEVELOPERS.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/docs/DOCS_FOR_DEVELOPERS.md b/docs/DOCS_FOR_DEVELOPERS.md index ef8cf4ce..b6a93ae4 100644 --- a/docs/DOCS_FOR_DEVELOPERS.md +++ b/docs/DOCS_FOR_DEVELOPERS.md @@ -8,7 +8,7 @@ If you only intended to use the program and not edit its internal code, you are ### Legacy AD Architecture -| AD Architecture | B2C Architecture | +| AD Architecture (Legacy) | B2C Architecture (Recommended)| | - | - | | | | @@ -37,7 +37,15 @@ If you only intended to use the program and not edit its internal code, you are ### Deploy scripts' -* The Deploy script creates and configures all the resources required for an organisation to user Learn-LTI on the Universities existing AD and B2C tenants. +* The Deploy script creates and configures all the resources required for an organisation to use Learn-LTI on the Universities existing AD and B2C tenants. + +#### Main Deploy Script +* At the start of the script there is a READ-HOST asking the user to select 'ad' or 'b2c' mode; this value is stored and used to house AD and B2C specific code inside conditional if blocks. +* Azure CLI is used for this purpose, prompting the user to first login with an account with sufficient permissions then using the Azure CLI to create and configure those resources on the Moodle. + +#### B2C SubDeploy Script +* The B2C Deploy script works similarly using the Azure CLI to pprompt the user to login when switching Tenants (from AD or B2C) then sets up the additional components required solely for B2C deploy +* The B2C Deploy script, however, uses HTTP requests predominantly for the creation and configuration of the apps due to the ease of making these work for multiple OS' From 1880aca460b93823b3689ed8572845bc9662216f Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Mon, 29 Aug 2022 13:54:11 +0100 Subject: [PATCH 261/285] Remove our TODOs --- .../Edna.Bindings.LtiAdvantage/Services/AccessTokenService.cs | 2 -- .../Services/KeyVaultJwkProvider.cs | 2 -- .../Edna.Bindings.LtiAdvantage/Services/NrpsClient.cs | 2 -- .../Edna.Bindings.LtiAdvantage/Services/OidcClient.cs | 2 -- .../Utils/LtiAdvantageExtensions.cs | 2 -- .../Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs | 4 +--- .../Edna.Assignments/Edna.Assignments/AssignmentsApi.cs | 2 +- deployment/B2CDeployment.ps1 | 1 - deployment/Deploy.ps1 | 4 ---- 9 files changed, 2 insertions(+), 19 deletions(-) diff --git a/backend/Bindings/Edna.Bindings.LtiAdvantage/Services/AccessTokenService.cs b/backend/Bindings/Edna.Bindings.LtiAdvantage/Services/AccessTokenService.cs index 1ad5c897..4afa1ebc 100644 --- a/backend/Bindings/Edna.Bindings.LtiAdvantage/Services/AccessTokenService.cs +++ b/backend/Bindings/Edna.Bindings.LtiAdvantage/Services/AccessTokenService.cs @@ -3,8 +3,6 @@ // Licensed under the MIT license. // -------------------------------------------------------------------------------------------- -// TODO - File appears to contain the important functions for receiving and validating tokens and credentials - using System; using System.IdentityModel.Tokens.Jwt; using System.Linq; diff --git a/backend/Bindings/Edna.Bindings.LtiAdvantage/Services/KeyVaultJwkProvider.cs b/backend/Bindings/Edna.Bindings.LtiAdvantage/Services/KeyVaultJwkProvider.cs index 4d49c999..d42d60c3 100644 --- a/backend/Bindings/Edna.Bindings.LtiAdvantage/Services/KeyVaultJwkProvider.cs +++ b/backend/Bindings/Edna.Bindings.LtiAdvantage/Services/KeyVaultJwkProvider.cs @@ -3,8 +3,6 @@ // Licensed under the MIT license. // -------------------------------------------------------------------------------------------- -// TODO - file appears to get the Azure Key Vault JWK Key from the Key Vault. - using System.Threading.Tasks; using Edna.Utils.Http; using IdentityModel.Jwk; diff --git a/backend/Bindings/Edna.Bindings.LtiAdvantage/Services/NrpsClient.cs b/backend/Bindings/Edna.Bindings.LtiAdvantage/Services/NrpsClient.cs index 0c0441af..fa25dbf3 100644 --- a/backend/Bindings/Edna.Bindings.LtiAdvantage/Services/NrpsClient.cs +++ b/backend/Bindings/Edna.Bindings.LtiAdvantage/Services/NrpsClient.cs @@ -3,8 +3,6 @@ // Licensed under the MIT license. // -------------------------------------------------------------------------------------------- -// TODO - file handled names and roles provisioning services client; maybe needs updating for b2c?? - using System; using System.Collections.Generic; using System.Linq; diff --git a/backend/Bindings/Edna.Bindings.LtiAdvantage/Services/OidcClient.cs b/backend/Bindings/Edna.Bindings.LtiAdvantage/Services/OidcClient.cs index 12ccd39a..e9abafd9 100644 --- a/backend/Bindings/Edna.Bindings.LtiAdvantage/Services/OidcClient.cs +++ b/backend/Bindings/Edna.Bindings.LtiAdvantage/Services/OidcClient.cs @@ -3,8 +3,6 @@ // Licensed under the MIT license. // -------------------------------------------------------------------------------------------- -// TODO - File seems to define the open id client interface (this may need to be updated?) - using System.Collections.Specialized; using System.Web; using Edna.Bindings.LtiAdvantage.Models; diff --git a/backend/Bindings/Edna.Bindings.LtiAdvantage/Utils/LtiAdvantageExtensions.cs b/backend/Bindings/Edna.Bindings.LtiAdvantage/Utils/LtiAdvantageExtensions.cs index c9c9ef1d..eaca58dd 100644 --- a/backend/Bindings/Edna.Bindings.LtiAdvantage/Utils/LtiAdvantageExtensions.cs +++ b/backend/Bindings/Edna.Bindings.LtiAdvantage/Utils/LtiAdvantageExtensions.cs @@ -3,8 +3,6 @@ // Licensed under the MIT license. // -------------------------------------------------------------------------------------------- -// TODO - very important fiel seems to be responsible for the actual valid of the JWK Token - using System; using System.Collections.Generic; using System.IdentityModel.Tokens.Jwt; diff --git a/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs b/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs index d07345a8..bb16a864 100644 --- a/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs +++ b/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs @@ -75,7 +75,7 @@ public async Task GetAllAssignmentLearnContent( [Table(AssignmentLearnContentTableName)] CloudTable assignmentLearnContentTable, string assignmentId) { - _logger.LogError($"Fetching all selected learn content for assignment {assignmentId}."); // TODO return to loginfo + _logger.LogInformation($"Fetching all selected learn content for assignment {assignmentId}."); List assignmentSelectedLearnContent = await GetAllAssignmentLearnContentEntities(assignmentLearnContentTable, assignmentId); @@ -83,8 +83,6 @@ public async Task GetAllAssignmentLearnContent( .OrderBy(entity => entity.Timestamp.Ticks) .Select(_mapper.Map); - // TODO remove - _logger.LogError("My dtos are " + assignmentSelectedLearnContentDtos.Count().ToString()); if (assignmentSelectedLearnContentDtos.Count() > 0) { _logger.LogError(assignmentSelectedLearnContentDtos.FirstOrDefault().ContentUid); diff --git a/backend/Functions/Edna.Assignments/Edna.Assignments/AssignmentsApi.cs b/backend/Functions/Edna.Assignments/Edna.Assignments/AssignmentsApi.cs index c05c5bfa..d904e3eb 100644 --- a/backend/Functions/Edna.Assignments/Edna.Assignments/AssignmentsApi.cs +++ b/backend/Functions/Edna.Assignments/Edna.Assignments/AssignmentsApi.cs @@ -107,7 +107,7 @@ public async Task CreateOrUpdateAssignment( return new InternalServerErrorResult(); } - _logger.LogError($"Saved assignment {assignmentEntity.ToAssignmentId()}."); // TODO: switch back to loginfo + _logger.LogInformation($"Saved assignment {assignmentEntity.ToAssignmentId()}."); string assignmentUrl = $"{req.Scheme}://{req.Host}/api/{AssignmentsRoutePath}/{assignmentEntity.ToAssignmentId()}"; AssignmentDto savedAssignmentDto = _mapper.Map(assignmentEntity); diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index d9436ac1..e12b5345 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -681,7 +681,6 @@ try{ #endregion #region "B2C STEP 11.D: Create the Facebook keyset" - #TODO - eventually only run this B2C STEP if we are using Facebook (and then use different contract templates for linking facebook vs without) Write-Title "B2C STEP 11.D: Creating the Facebook Key" if($keysets -contains "B2C_1A_FacebookSecret"){ diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index c13154d9..a4f943bc 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -282,7 +282,6 @@ process { } Write-Log -Message "Returned from the B2C setup script, continuing with LTI deployment" - # TODO - indexing from -1 etc. because it seems to return meaningless values before the final 3 which we actually want; need to work out why and perhaps fix if it is deemed an issue $AD_Tenant_Name_full = $results[-7] # tenant name of the AD server $b2c_tenant_name_full = $results[-6] #b2c tenant name $REACT_APP_EDNA_B2C_CLIENT_ID = $results[-5] #webclient ID @@ -306,9 +305,6 @@ process { $policy_name = "b2c_1a_signin" #Updating function apps's settings - - #$B2C_APP_CLIENT_ID_IDENTIFIER = "0cd1d1d6-a7aa-41e2-b569-1ca211147973" # TODO remove hardcode - #$AD_APP_CLIENT_ID_IDENTIFIER = "cb508fc8-6a5f-49b1-b688-dac065ba59e4" # TODO remove hardcode $OPENID_B2C_CONFIG_URL_IDENTIFIER = "https://${REACT_APP_EDNA_B2C_TENANT}.b2clogin.com/${b2c_tenant_name_full}/${policy_name}/v2.0/.well-known/openid-configuration" $OPENID_AD_CONFIG_URL_IDENTIFIER = "https://login.microsoft.com/${AD_Tenant_Name_full}/v2.0/.well-known/openid-configuration" From 183b4c518109b1da41854911182b147ff447068b Mon Sep 17 00:00:00 2001 From: DuyNguyen19993010 Date: Mon, 29 Aug 2022 15:14:59 +0100 Subject: [PATCH 262/285] Selenium documentation --- README.md | 3 ++ docs/INTEGRATION_TESTING.md | 58 +++++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 docs/INTEGRATION_TESTING.md diff --git a/README.md b/README.md index a1cf7e6a..46659576 100644 --- a/README.md +++ b/README.md @@ -71,6 +71,9 @@ To deploy the Microsoft Learn LTI application, the Central IT / IT Admin will ne - [VPAT Guide](./docs/VPAT.MD) - [Using ZTest Tooling](./docs/ZTEST.md) +## Testing +- [Integration Testing](./docs/INTEGRATION_TESTING.md) + # Contributing This project welcomes contributions and suggestions. Most contributions require you to agree to a diff --git a/docs/INTEGRATION_TESTING.md b/docs/INTEGRATION_TESTING.md new file mode 100644 index 00000000..daf4cf7d --- /dev/null +++ b/docs/INTEGRATION_TESTING.md @@ -0,0 +1,58 @@ +# *INTEGRATION TESTING* +--- +## Overview +Integration testing is using **Selenium**, a framework for simulating webpage UI interaction and **NUnit**, a framework for automated testing. By combining the 2 frameworks, the test will automatically run the integration/UI test cases. + +## Pre-requisite +Integration testing requires: + +### Active directory + +1. 2 Active Directories and 1 B2C Active Directory +2. Deploy a **B2C** LTI Tool using one of the AD and the B2C a: [Deployment Guide](./docs/DEPLOYMENT_GUIDE.md) +3. For each AD tenant, create 2 members: + * In our primary AD that you used for delpoyment, create the 2 following members: + * Test Student. + * Test Teacher. + * In our secondary AD, create the 2 following members: + * External Test Student. + * External Test Teacher. + +### Learning Management System +1. A running Moodle LMS instance. Recommended tool: [Bitnami](https://bitnami.com/stack/moodle) +2. Sign in or Sign up the 4 accounts we created in the **Active Directory section** using B2C AAD +**[Insert image of the B2C AAD button here]** + +## Setup + +1. Sign in into moodle as the administrator +2. Create a course +3. Add the 4 accounts we have signed up into this course +4. Assign the following roles for the 4 accounts: + * Test Student: student + * Test Teacher: lecturer + * External Test Student: student + * External Test Teacher: lecturer +5. For each of the **2 Teacher accounts**, sign in, choose the course you have just been added to: + * Skip the tutorial popup + * Choose add a new external tool (Don't need add the tool, only need to click on the add assignment button) + * Skip all the tutorial popup if there is one +6. For each of the **2 Teacher accounts**, sign in, choose the course you have just been added to: + * Skip the tutorial popup ( **important** ) + * Turn on **Edit Mode** on the top right corner + * Add a new external tool (Don't need add the tool, only need to click on the add assignment button) + [Insert images add tool button] + * Skip all the tutorial popup if there is one( **important** ) +7. For each of the **2 Student accounts**, sign in, choose the course you created, and click on one of the assignment you have just created with the teacher accounts: + * You will be redirect to the LTI tool page and asked to sign in again + * After that you will be presented with the assignment page + +## Running the tests + +1. Go into directory "root/Selenium_Nunit_UI_Test/" +2. Open CMD or Terminal and use the 3 following commands: +```cmd +dotnet restore +dotnet build +dotnet test +``` From efe1fe952a6eb53884bea133259b77d7041c99de Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Mon, 29 Aug 2022 15:23:57 +0100 Subject: [PATCH 263/285] swapping back .env changes --- client/.env.development | 12 ++++++------ client/.env.production | 22 +++++++++++----------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/client/.env.development b/client/.env.development index 04ec3803..45050050 100644 --- a/client/.env.development +++ b/client/.env.development @@ -1,13 +1,13 @@ GENERATE_SOURCEMAP='false' -REACT_APP_EDNA_AUTH_CLIENT_ID='87627e40-a86e-4f3e-b016-37f63130bb32' -REACT_APP_EDNA_B2C_TENANT='w3jnkb2corg' -REACT_APP_EDNA_B2C_CLIENT_ID='87627e40-a86e-4f3e-b016-37f63130bb32' +REACT_APP_EDNA_AUTH_CLIENT_ID='902124e7-55c2-49bd-bcb9-8245c5d15e64' +REACT_APP_EDNA_B2C_TENANT='placeholder' +REACT_APP_EDNA_B2C_CLIENT_ID='902124e7-55c2-49bd-bcb9-8245c5d15e64' REACT_APP_EDNA_PLATFORM_SERVICE_URL='http://localhost:7075/api' REACT_APP_EDNA_USERS_SERVICE_URL='http://localhost:7075/api' REACT_APP_EDNA_LEARN_CONTENT='http://localhost:7074/api' REACT_APP_EDNA_LINKS_SERVICE_URL='http://localhost:7073/api' REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL='http://localhost:7071/api' -REACT_APP_EDNA_TENANT_ID='21510bb9-6414-46d0-9a07-1faf98f25937' -REACT_APP_EDNA_DEFAULT_SCOPE='api://f47872b6-bdeb-4b69-a3c2-25528a9a9f5b/default' +REACT_APP_EDNA_TENANT_ID='902124e7-55c2-49bd-bcb9-8245c5d15e64' +REACT_APP_EDNA_DEFAULT_SCOPE='api://902124e7-55c2-49bd-bcb9-8245c5d15e64/default' REACT_APP_EDNA_MAIN_URL='http://localhost:3000' -REACT_APP_EDNA_AAD_CLIENT_ID='f47872b6-bdeb-4b69-a3c2-25528a9a9f5b' +REACT_APP_EDNA_AAD_CLIENT_ID='902124e7-55c2-49bd-bcb9-8245c5d15e64' diff --git a/client/.env.production b/client/.env.production index ce753099..bb13b3a4 100644 --- a/client/.env.production +++ b/client/.env.production @@ -1,13 +1,13 @@ GENERATE_SOURCEMAP='false' -REACT_APP_EDNA_AUTH_CLIENT_ID='87627e40-a86e-4f3e-b016-37f63130bb32' +REACT_APP_EDNA_AUTH_CLIENT_ID='d41fd017-4c7d-4867-ac93-3cac32d3f7a9' REACT_APP_EDNA_B2C_TENANT='w3jnkb2corg' -REACT_APP_EDNA_B2C_CLIENT_ID='87627e40-a86e-4f3e-b016-37f63130bb32' -REACT_APP_EDNA_PLATFORM_SERVICE_URL='https://platforms-utepejgvf.azurewebsites.net/api' -REACT_APP_EDNA_USERS_SERVICE_URL='https://users-utepejgvf.azurewebsites.net/api' -REACT_APP_EDNA_LEARN_CONTENT='https://learncontent-utepejgvf.azurewebsites.net/api' -REACT_APP_EDNA_LINKS_SERVICE_URL='https://links-utepejgvf.azurewebsites.net/api' -REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL='https://assignments-utepejgvf.azurewebsites.net/api' -REACT_APP_EDNA_TENANT_ID='21510bb9-6414-46d0-9a07-1faf98f25937' -REACT_APP_EDNA_DEFAULT_SCOPE='api://c86e988f-062a-43b0-ae18-e759030a5c83/user_impersonation' -REACT_APP_EDNA_MAIN_URL='https://learnclientutepejgvf.z33.web.core.windows.net/' -REACT_APP_EDNA_AAD_CLIENT_ID='c86e988f-062a-43b0-ae18-e759030a5c83' +REACT_APP_EDNA_B2C_CLIENT_ID='d41fd017-4c7d-4867-ac93-3cac32d3f7a9' +REACT_APP_EDNA_PLATFORM_SERVICE_URL='https://edna-lti-ab-platfomrs.azurewebsites.net/api' +REACT_APP_EDNA_USERS_SERVICE_URL='https://edna-lti-ab-users.azurewebsites.net/api' +REACT_APP_EDNA_LEARN_CONTENT='https://edna-lti-ab-learncontent.azurewebsites.net/api' +REACT_APP_EDNA_LINKS_SERVICE_URL='https://edna-lti-ab-links.azurewebsites.net/api' +REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL='https://edna-lti-ab-assignments.azurewebsites.net/api' +REACT_APP_EDNA_TENANT_ID='d41fd017-4c7d-4867-ac93-3cac32d3f7a9' +REACT_APP_EDNA_DEFAULT_SCOPE='api://d41fd017-4c7d-4867-ac93-3cac32d3f7a9/user_impersonation' +REACT_APP_EDNA_MAIN_URL='https://ednaltiabclient.z23.web.core.windows.net/' +REACT_APP_EDNA_AAD_CLIENT_ID='d41fd017-4c7d-4867-ac93-3cac32d3f7a9' From 48a127d438fc8f4f7deb24fd66f7aac51fa977d8 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Mon, 29 Aug 2022 15:25:45 +0100 Subject: [PATCH 264/285] removing additional log errors --- .../AssignmentLearnContentApi.cs | 4 ---- .../Edna.Assignments/Edna.Assignments/AssignmentsApi.cs | 6 +----- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs b/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs index bb16a864..12676bb7 100644 --- a/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs +++ b/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs @@ -83,10 +83,6 @@ public async Task GetAllAssignmentLearnContent( .OrderBy(entity => entity.Timestamp.Ticks) .Select(_mapper.Map); - if (assignmentSelectedLearnContentDtos.Count() > 0) - { - _logger.LogError(assignmentSelectedLearnContentDtos.FirstOrDefault().ContentUid); - } return new OkObjectResult(assignmentSelectedLearnContentDtos); } diff --git a/backend/Functions/Edna.Assignments/Edna.Assignments/AssignmentsApi.cs b/backend/Functions/Edna.Assignments/Edna.Assignments/AssignmentsApi.cs index d904e3eb..9c4267db 100644 --- a/backend/Functions/Edna.Assignments/Edna.Assignments/AssignmentsApi.cs +++ b/backend/Functions/Edna.Assignments/Edna.Assignments/AssignmentsApi.cs @@ -111,7 +111,6 @@ public async Task CreateOrUpdateAssignment( string assignmentUrl = $"{req.Scheme}://{req.Host}/api/{AssignmentsRoutePath}/{assignmentEntity.ToAssignmentId()}"; AssignmentDto savedAssignmentDto = _mapper.Map(assignmentEntity); - _logger.LogError(savedAssignmentDto.CourseName + savedAssignmentDto.Id); return new CreatedResult(assignmentUrl, savedAssignmentDto); } @@ -121,9 +120,7 @@ public async Task GetAssignment( [Table(AssignmentsTableName)] CloudTable table, [Platform] PlatformsClient platformsClient, string assignmentId) - { - _logger.LogError("In Get Assignment"); - + { AssignmentEntity assignmentEntity = await FetchAssignment(table, assignmentId); if (assignmentEntity == null) return new NotFoundResult(); @@ -135,7 +132,6 @@ public async Task GetAssignment( Platform platform = await platformsClient.GetPlatform(assignmentEntity.PlatformId); assignmentDto.PlatformPersonalization = _mapper.Map(platform); } - _logger.LogError(assignmentDto.CourseName + assignmentDto.Name); return new OkObjectResult(assignmentDto); } From e78594a0af2a30d099af60da3cec99c38de07a25 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Mon, 29 Aug 2022 15:30:49 +0100 Subject: [PATCH 265/285] cleaning up authentication code --- client/src/Core/Auth/AppAuthConfig.ts | 3 --- client/src/Core/Auth/AxiosBasicAuthInitializer.tsx | 3 --- 2 files changed, 6 deletions(-) diff --git a/client/src/Core/Auth/AppAuthConfig.ts b/client/src/Core/Auth/AppAuthConfig.ts index 8a999050..ec34c716 100644 --- a/client/src/Core/Auth/AppAuthConfig.ts +++ b/client/src/Core/Auth/AppAuthConfig.ts @@ -63,13 +63,10 @@ const config: Configuration = { console.error(message); return; case LogLevel.Info: - console.info(message); return; case LogLevel.Verbose: - console.debug(message); return; case LogLevel.Warning: - console.warn(message); return; } }, diff --git a/client/src/Core/Auth/AxiosBasicAuthInitializer.tsx b/client/src/Core/Auth/AxiosBasicAuthInitializer.tsx index f3b7e206..8f56da4b 100644 --- a/client/src/Core/Auth/AxiosBasicAuthInitializer.tsx +++ b/client/src/Core/Auth/AxiosBasicAuthInitializer.tsx @@ -17,7 +17,6 @@ export const AxiosBasicAuthInitializer = ({ children }: PropsWithChildren<{}>): // Called everytime time the LTI app is accessed to authenticate the user before allowing access. request.account = accounts[0]; request.loginHint = request.account.username; - // request.loginHint = request.account. useEffect(() => { if (!isTokenLoaded && inProgress === InteractionStatus.None) { instance @@ -29,8 +28,6 @@ export const AxiosBasicAuthInitializer = ({ children }: PropsWithChildren<{}>): setIsTokenLoaded(true); }) .catch(error => { - console.log('silent failed'); - console.log(error); // acquireTokenSilent can fail for a number of reasons, fallback to interaction if (error instanceof InteractionRequiredAuthError || error instanceof BrowserAuthError) { instance.acquireTokenRedirect(request); From dd98bd77f2a4fc6f056cc1709e19fdb122d6a934 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Mon, 29 Aug 2022 15:31:02 +0100 Subject: [PATCH 266/285] moving the limited scripts to a new folder --- deployment/{ => developer_tools}/Limited-Install-Backend.ps1 | 0 deployment/{ => developer_tools}/Limited-Install-Deploy.ps1 | 0 deployment/{ => developer_tools}/Limited_Install_Client.ps1 | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename deployment/{ => developer_tools}/Limited-Install-Backend.ps1 (100%) rename deployment/{ => developer_tools}/Limited-Install-Deploy.ps1 (100%) rename deployment/{ => developer_tools}/Limited_Install_Client.ps1 (100%) diff --git a/deployment/Limited-Install-Backend.ps1 b/deployment/developer_tools/Limited-Install-Backend.ps1 similarity index 100% rename from deployment/Limited-Install-Backend.ps1 rename to deployment/developer_tools/Limited-Install-Backend.ps1 diff --git a/deployment/Limited-Install-Deploy.ps1 b/deployment/developer_tools/Limited-Install-Deploy.ps1 similarity index 100% rename from deployment/Limited-Install-Deploy.ps1 rename to deployment/developer_tools/Limited-Install-Deploy.ps1 diff --git a/deployment/Limited_Install_Client.ps1 b/deployment/developer_tools/Limited_Install_Client.ps1 similarity index 100% rename from deployment/Limited_Install_Client.ps1 rename to deployment/developer_tools/Limited_Install_Client.ps1 From 5e7005fa678d923887cf8f3dffc434da93d232b1 Mon Sep 17 00:00:00 2001 From: DuyNguyen19993010 Date: Mon, 29 Aug 2022 15:58:59 +0100 Subject: [PATCH 267/285] Added create assignment steps --- docs/INTEGRATION_TESTING.md | 13 +++++++++++++ images/Selenium_Test/Create_step_1.png | Bin 0 -> 47047 bytes images/Selenium_Test/Create_step_2.png | Bin 0 -> 53736 bytes images/Selenium_Test/Create_step_3.png | Bin 0 -> 80243 bytes images/Selenium_Test/Create_step_4.png | Bin 0 -> 60282 bytes images/Selenium_Test/Create_step_5.png | Bin 0 -> 81954 bytes images/Selenium_Test/Create_step_6.png | Bin 0 -> 50764 bytes 7 files changed, 13 insertions(+) create mode 100644 images/Selenium_Test/Create_step_1.png create mode 100644 images/Selenium_Test/Create_step_2.png create mode 100644 images/Selenium_Test/Create_step_3.png create mode 100644 images/Selenium_Test/Create_step_4.png create mode 100644 images/Selenium_Test/Create_step_5.png create mode 100644 images/Selenium_Test/Create_step_6.png diff --git a/docs/INTEGRATION_TESTING.md b/docs/INTEGRATION_TESTING.md index daf4cf7d..34771dd8 100644 --- a/docs/INTEGRATION_TESTING.md +++ b/docs/INTEGRATION_TESTING.md @@ -42,6 +42,19 @@ Integration testing requires: * Turn on **Edit Mode** on the top right corner * Add a new external tool (Don't need add the tool, only need to click on the add assignment button) [Insert images add tool button] + * Step 1: Toggle on edit mode + ![Create_Step_1](../images/Selenium_Test/Create_step_1.png) + * Step 2: Add a resource + ![Create_Step_2](../images/Selenium_Test/Create_step_2.png) + * Step 3: Choose External Tool + ![Create_Step_3](../images/Selenium_Test/Create_step_3.png) + * Step 4: Give your assignment a name + ![Create_Step_4](../images/Selenium_Test/Create_step_4.png) + * Step 5: Preconfigured tool is the LTI tool that you have deployed in the ** Active directory section ** + ![Create_Step_5](../images/Selenium_Test/Create_step_5.png) + * Step 6: Save and you will see your newly created assignment + ![Create_Step_6](../images/Selenium_Test/Create_step_6.png) + * Skip all the tutorial popup if there is one( **important** ) 7. For each of the **2 Student accounts**, sign in, choose the course you created, and click on one of the assignment you have just created with the teacher accounts: * You will be redirect to the LTI tool page and asked to sign in again diff --git a/images/Selenium_Test/Create_step_1.png b/images/Selenium_Test/Create_step_1.png new file mode 100644 index 0000000000000000000000000000000000000000..a2db0693441c23d7a7693ddfa91e67f8850f9fbc GIT binary patch literal 47047 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�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 XtkerPrE&0f0!Q>u9Lzs(_Tv8sgG5^c literal 0 HcmV?d00001 diff --git a/images/Selenium_Test/Create_step_2.png b/images/Selenium_Test/Create_step_2.png new file mode 100644 index 0000000000000000000000000000000000000000..81e842efb82c2fc0f7cb99ab0411744dcdaed9c7 GIT binary patch literal 53736 zcmcG$2UJs8+Xl*v<6vhL6%h?0O+Y}p0wIdhLKOs*s?tQ7bOG z^r#>K0g=#zBt$x)B$PmakmR0V`{w`V{_9_Nt;<>}XP>k8+56q^e#`Sd$0!pcoxQt` z?&9L&+N-B~$&`!h4=@+kwvrux0xh{`WcC98{N`(_qsdkN=@=Qf_`~Ib;RPiu)@qw7_2kR!fufJK0 z+2iRt)b~90)~mdCsZL5Vd55`w^K`W4_LDqrqPGKzo$6%s?$2OHu1zH+m}l%yFei0c zL9A2O9UZTfK>526;wPuvVIx!`uQ3bBm{h@#!(Yt{?i70Pm*x)6U(S~%H#Y__o~a;U zIlzy?Ls>9La2+E72m<(d8zVo(q?3whTUT5PalqY>Q9UTn*7cc!m$+?Pzjf#)e;eSs zcK(lN4?xiQ>8UgwmB^#u?|13 z9{|@kzK!$rN;2rw?t!fb?;brDLaA2^n{=R$G`j}QH9ru5u=3P=<}R|?OK%7=^!Dlt zTI72bCNRzn&VP`xtDlaJDG)c>xL1kpVOHaTqM^&4>i?yfMuN#4rO)5;au z7cTtjw*6Bs=4)K8y3^q!X0h(ZRn~!=8GM^fvis6p&Ey+Z*zv(~cg!cwVC7`aU|gb! zn(rm0VA-mCg23a^fWQQT6TgXR!@vkk9@vF&9}k{^l>j4sJdg$w{wBH4E)9*3bc$M+ z`}T9%Q$WVwCl6VfF|(>QJPzr5h${evuOT7`qvCDGQ};V* z=WPRgJVp(^n26ZC=9$EBj8R9Z+o!k=&?@337Z`5&7+-_hj}>&QvD%D z%<|*j5D>)#ww5o#sJ@^`(Wb7y7T}M@^zJJQY)X^$Em%3X*9}^Q+I(F%x8x3^hsAnb zos_9_2^&jscZm>iRWDjUYI)ucF|v1_US-XqS2s~L6}8z$zj58Y=CJfMWS)$w85uc5 z$tc4F@akc_Jpnn-DtLZac*z**LDl@tyt*jVwb+jFCowBS2NOT$h7B<1W&0Xe+6H~6 zI!~TV%Vn|&Y*?R*!n!b>L}Gkq(jYEgUK7UQw48-a5*&(nPT0&g_mGU8gi3O(fpdW` z!_Hf{sfl6@30A@6kB;)wDaMTxk0NvkQVba3>=V|TkO@?wJAXhE4;)xksT!d!WM7q0 zQO1)y-1Pd{fcgzIrH)5u0z1H(IYgiBS!9Npto0t208`*C4KBo@liPK>^Dh<|6;;#9 zX+gw>!|-dDYH6*iBmJlyX=2D3Z?e$9m)65ah|gMgAznCsh){=pVg}v0@i^;sbHe5yD#&tKtW3+59C98?# zCor5I>7|zyB;3fBX0RmA`F>^+_(1d;swb@d`26d~j!Vx&+de9(;OW(?HJ?&kw{_6AoBc#!uSezh)&dSMXerT5!QTNVVwYxr_y zY)R{HgJ!&kZ>?t1CM~SntvdiR+9#x!IPl^cY?@&vs%r`>MCX!<7Tg4eG1HABd(}qe z$_CD^43!hQb8!xSb?k;#RAwUSVGDIOU_Cny&eK6^pQcM*Ij?M)yfzKr_8#NK^3K5Z z@yT`K^RbXd@L=3dtEK_r%y!6zTS<4jbCVOAVmvF^K zr;RvDP)nFY(3i3yT6xwfSVLSiFNJ7WN?2G>At^GzdsRaKx|H79L^7g$USx-SfK z8CKYsE3->*{m5Yd*t5em=gEMiodhZbotBZrp5hHTF=6M+dE&bUZ=TFd z{~~&^cF!v@wR0ucT_NY>aw>^XL{JFq#Y)3~4j&SDH@M$;t#4dy!^*HEOY6MzfpX|? zY<~y&oauU>e6>8iMtJ#njR1)hc{FWEcI?fOKBSJ#sZ04w`72NKGV4*@k<~Oodamqn5wVTyx`pc0KGs~FXHbwizQ=N$mSzr|xjKm2 zmn_7~hO;BX8-gUiCiv<$`cML;Du~kR23T?BxyE(Ku%un8-;K>`Tg`FY6z<}xusg1S zO_N7Et~;ZtnxRS6FG&scp|9%LWMb_8hRfRIk=?)B9&JY6zXp4bYLWscE}aY>o|bDo zqWd_m`n;>BIK%(qmH6jjbjGvj)V1JV7K5sjA`vdI-SR$dwD<73V`_0C_M>vi*$+r6 zQpfjZo|s@wl!56T$LL*3JD?q~ za$Y&3LNkRo!Ot~O_H^Q*9k&zb#n%=c?btPXyYA7(!&FsMLG!x~OYBHwbTDJaKSn*G z1yqXaUP4GL4NXonqp{DbM(F3*s*mgt#qqi8(=KXtRu{wO;r2s(`^g7R3NK%kuFKYi zL0-sNkQ3Ogb&D#%z*HRov^GD_b2(|h?O(4Y4)`P`cEDW? z#f}xX8R9)2zW#{l{p0z3;i)?2Et^KgC^X*F)Ux<(v#OG-^2g}(oJ(jauql3E`+W^j zk)*05ri}k-u;1l)Vy=7f=W6LIb|Nou!gQvhe)LUL*}x6H27a-#vtF4v}MAX&DN*N{3JbmdL23#ReUM$rQlZ!WG5Q`3{7 zZeR974pkeqj9;KH7aetIRC<{B-mirTt9WOOm{p;{##qNAT~i zk-P8Qz({KJ*A|(NBv>)!48!cnHxBO4_d-T^ABDaqDnHb|=oa(JFb_S85v+^ZLG=Q> zeixu~ntvHz-*gnIyD6-eVB%_ck|v^MnBIG-gn6mB(*0bLy8Z0~4k;j(atJBR`8@eX zY*sk=2I}c_%4*W4-{liyrVQL^(bt>Bk`0nz)rP7OraoLYr-q$3;BedT-RHHEbw+wE z*c!G5-`z{~_!_8WYjUd_Bfg#}$0V3Zfe&7dSjAj!$X_Em0-p4YG3YfN@EE7r2r^+xFIC}%i*r$A?;vxdg$Z!$Pi?EMd9;% zbMVdl+#(EJYP#(7|GOp?Bs{|?VP$+8q9hg2zAMvRANc>K{a@xzsf0)_i zv=)jg-GGYObTf++^QF2Uh=LQ^-Ma__`Mmk6u8@&WIiL}7qM3RF(u15392b5|tt1*npI}TYq@UDin{>y>o#E-GjE`)a~c7CL!u;Z*}jCWNaTkGaC z@wvkXa{F=Wok;A49W1>F{Y6vfgC?d*Psof(g|3oLvi&1)1#;T(Y)QQsI6f{$0~B@~ zc8rUwvaPv}vc6wp|0Ck#qTE0TX~UO3R5dW9O@Xt>hr;Xav%8~t_!8tDu%z1k*A^F7 zTnKRvE`)A-s!7-SAaPf)QQJ0Q%DM`y5?7erYDSCx*>*>Pp6TD_^ zO74Er+}bQ`4r}I3o%`cb3kr(RhjM2qBE<#eM-uP~W76Tcl;eC<>zRPk7+15;&AcUZ z^LWcaHnJAh-CS)#78-2}u4tB4ALMIURR9j9PkEIarR(7OeN7L%IJzWXXr)1E)fiRS z8crHKDYT|4!f`diP)f+$!qA^|)FNgbcd^jkx`rfq@0qYAY>kxHL2WdLiD29wLVsKF zdW0CVunAS9DumO+*5e7JAPqM4(sNp?r$Qy74P#crP*dLrMBii0)}BrF%}$!=_2|8n zvd=b^0*8G-n?IwAKJF+TUnojwT?;6cd}acRoNIJ$i7rfb9nQsjZZHxGR}22O zdoo%Pu&We2F1PeW(#T`~MD}oEWczP!_i^>cqPF*Uls>toD|TEx|WGEJU3qN`^kx&&912ONVKbFUK-+gHhribP^5;w(a5x)(9RhS;G|+ zNrAcE;%wTqMu4Tf@Lh~i+Zf(QAL<_<#L?qc-#j>5NtFh){Wygf#v9gPq=N?1^;^GE z%%0NGi{(8+e5X>3of8m+DXqB^$~DF40Gl*d_H~L!7#?EeFD|X+6kE zo}pq7FJUY~TLWfof_6Z8k{^D9IZS>#w^BGTuogexw~~A~_SZ1Gfb`yWW=%qR-UJxr z$?)%-K@QagE#`CJjX+wnUghUoeEhPABrMMX&UoLTgxlkDHOq~yYj;Lps|DQ551!{) zhp$_CrZJodPxEQ#ubpk+;8R>CKyvn@%hvB7(m;sITc`*ZR1<(YE+MhJ-;o9`Cr_-*c7*R^l{#BwI<>BAwOhkz~R{Jh|E}~N2$UGoIBI9oa_ES zvS}Ke%Z+H6N&@|1!PC>Hky! zrXeJX#jpZ-kcrY7r@%XeQnn;gn>WQYxRKbL2?TfR&X9auR;qwX&ofe?eNbh zEk=a?wJDUmc!bmW{#NJxX)?A;>yAtA3R}-#C12Q4e42CTx*jx6giqFvw!W6s=FA#@ z=asHU@k#}~pq+SdWk2T$-Pcm*#Einm<8scD_Z>esxq4iEbaf6g7hXxdp7-+Sa!yzW zJYh{c07#c!;MaxAm95iaTVovNj8T~;qxvZqLNzja62Of(rqCW;{3r$VApRpqm#(jN zOR34&RDU(fnF$+Ac<^(`4jGs~7C1ElI&nE?+8^6J?6LkXqqlQ;mVrPf`_VqRS5gwj zZvpIpAwF1-h7iJH0{>!E(7gcB0G_DR|k zYd6-&10Snmj;eT`3{ewuwD1{`zvD^B~(H^TrS{M>bnPN56k(Z3?+RLj4Jc8_r z^buKN$t=n*O^H%R?t<$rUT8hNXG;>o5@4~e9DnY8f=c?46=V7ctWM6HG1>ciFVjsz zJyGOCgrs_6C{r9e?*X8!KpX@Fz{D61ZlP!?AvbGBe2A0nH zZwOb0K9>|t1|=$gz!KRh@Bfa!280w`Tz?zq4#|hlJ-DWECFLBok>N>#G&n6asSxak zGc}MO#6!HzG+SSA(C@qN#E}ue8_cX%1=Vk+^7ORLdd>Mj*x32WuxuO~S71Am@L&`e zS72*gL)6k)W;cIjP`Z&Fa~)DU>s32w8#b>=50u@6Os1QR;>My_$)KX)JEZo5AYaU8 zA%n^m3i0jrJ+tBC;SKb= z=NfG{>TnmAvM$rV+RU0+C5}2YTCY@&%>-z+y6@atZ)!5gWo!HBlLfa!%!71+4#I84 zJ)WZuW2@R?YqZ0f&K{ge?kOMdO)aE-8TdOoeYIjCKG_U74Ut=C_iugsE(aeU-2D32 z_-pD14N<#!cK+1qBQ}G$F*Kvd4%Ujr4cCsBJC7`4I+*NgD!9SZ>S077djK#3@yZ-a zcBZ-l8DXw^u#uSoD9K=Q|UYurD7jcGC*hBB6-= zoWuF?n>_kv-C(*f+t5ozXpYg8+_AON6lw4({cDf4NW*Cj02=;&bD-?>@%_p;la~SP)tqgiD|72M6 zyP^Cu>!6@1?1@_7r?90qaZl2{Cg*h%bD(bE{U7T~l?Lw<1be3PnEx^_d#dI>7(mp| z-T0SQ)|vzTUEXk*-@G5MZEG^eBwYaJ!L_GxPC`Zpk$Yx$q~w3BcCDhQ`iTZJ0S{k@ zyr!9a{FlvI1EAvdX{&P|oHnn5Ekd@0`^_E-)eVhxWGGPHjubfWzwG?edA#k2x1ARn zSUtNqqKBsc-NZqofz<$Eg{JQM)|UHTEd{qAj;pjsR{X~te5deNgi+0LbIE(%k~d+~%ug~c_{b2wRU#Lh0<2_}dNYWB$9-hf?u{weRtIZX4ET zox~vG1qNyk!3k@`H6pF6)qHtlnF08q8DR;H#2%Z(*$~~u%d3xh>|yGxW?s&#aSEqe z?5)VDHVHYetJ+(yZa(F_=2cT!M%EybkW>jsfh zaK(p+Co?`To83acdC5QDHMWdf7!hBJxm!3}lI6%%8tS zM44Ue>SPS*eR5PTs3m{Ymbex zI#pRpyOoX{pdD$(jm?{9Xy&Iuj9mh%6M}E!w{rrZw;icZCV?x*Y0KY zwH#Wd5_nG_{7wq~b$iaS042TbFY|VG%TERD4rbpzIW}SDlnSZ;3xx zGd8zaG!`2kLIe`0k{FDOniMer)91-gTJ{S!zO<>Qx6~$EHXyPQoJvaTe#ILoULKFI(Jd;?_E0E|?LX&+L#mvPt z!HT7^FN?gan?(&*nfp^fHm%8kb(#58@7Z)HnuxZ)twOFaY^>?uJEbvkX$p#V{7_o6 z)3Y1rKw2hEFOcPPz1s(z#MUjyi#QqdWYsEP{;}HzCo0VbKSB}q?g2d9wleRZQcT91=K zA0W1qQ2N61ZOPjP7E^ZJ`A~b67u?EfCj=={`n${>W1^86k5%@xb`>t1-{bX}Me{I$SypQV*}OmpJLv z))r-UnY@^d6)XUpZF0_q&#$gj-+X2L$}>U${gKB(Q}K0ZLkJ{?*Qmbc6EQb4okYnY z@)E@XWVvSNdW^YTycCZy#n*0$m=zsIe!$ut=dTPf2Gzr=d%lz91N|@=B z7{FO|h}5pNrV7GVB4jQYg$CjHjwV7jXL2(WW*4Yr_D#XIxNA!^%398+q+Ya+Jg>{x>-%%*hfvLxW12;xbAesM zPxzAtBTAqMQ8#N;5;`Q?I*~sqq(OErz?hWGpOmR+Z21l+jJ|&gb6-ql@|nM9F2QrN zA&kMt+JAhdfYute$Ft)1eEs#MOGXk=)GJGThJ6pu1Gr1IiNQyt!dT<2k5oDo4PI8u zQ6j?m081G4B1N#4t6MbkAio}KnzVUMgJ&}YPAcvZtmzTV9?^XEAbv*PL@Z!E`iQcu z@~w$o;LBNeWZ_C-m~-B3MlX9s)YbKf6a9`XH}A^NCKX8)lOO+dSaQ!!jmJkwSs*R` zx?%>qTDlXk^u0$y4q;ahk>wiF*U$&0z&@qh5;cWI8BFzQyHrfhVl0K#J0EM~UB_5` zblj7aF`Y0EM2e>ax&pwEE_S)i>O$%2iiM23FR6d*D1W%}I&#*YoM3kuC(jz&^oLIl zSIOUb)kkJ?&Zj}DG{o<>#N-o#+3VFA5Ej~AC5Zr^95d#G7ky4A3@L&50q`ir)AzUc z{o|+Xp$8vlM*b;Y+~T_LVWPqBu|OSRF*<`Ss@7=yZT?G0?82kX}UX0Y@e_WH|q^vf2Kt+S|kX>02)rojq|c8dYdzO@Oe zvfdu>!JNWMnI*3FcFoY(oMTw^d3&VH1r3&CMFu2zLBKhY0m)Fe&c%%-=`nzCyQA}b z-5H9V-K#Iv!#bPxTZuwn-qlkr53{*EG=Rd%*wVtmq4!^N?C) z29rJ!qGEYW`i@&|t%my;wR{1JV0zMalVAB-uGG<9h7Ze&1=OVtsDBCAepU9{s(Y4q zmM+9k%YFCoUMO3#9p%j6Ae}ba@rP&zVO;z=(JtnUx?ZPoPOWO$(-NG+hpIIVr_>Zs z%|LJcGabH9trC_k9|9D*h`H3T_YL)gtN!w`@EfGn7UDCf3@p0t8FswX^C4(Jch*YL ziBxpg zlAte@pNQEF>?(801aYj)IH39rS!~~YfHe?&&{0ORAE=5KatVpdHKUr;CRKD8BGd8X zDt*o;t6zQE!u<+D1^~7pENCFRr;hL-lpPx;04MMFeXm}i&of(a7gbG+t$&S&@40=` z=O&>6 z9;!v_^w3Fj^hvW5pKM>_8lG&PZtwb-8roKUeIl-xes#FZ+A(xYm@=XyK*WcL;V?a3 z<-T;6)i*T<+%mTU2t0ZH0g!Iej%=kD#dYQSh+dt3?b^&e&gGEL!S^)=k5rxji^X5r zX<|wq;RK*7%zg#XdKp!-NOyL*Coq^dd-st_rIdjm4vr$aZJsW#keL&R zV}<0nZ-TR=w1=GR9C9lKd#s1LtVP(2Zn0&H8g!rickfyCLvz06VE**gk_B(Ai}~0ep?ovN!_%)**mK=5nrL!cewAOvug8?W@Yvt8Cu{q&&WM2O zZgZa65iLukn4@K<_1q&t8*&b@x;<80AMZdk_$(fPnaK%T(?C1suoMwe#J=dmbrU=& z{{rg(HB2+)@=dakSip-wVR-%1b8U6E?Z)0%S4wZ>_$GA>UWNq$$;RqlP6WtTSGw{M zQL~$nh~%mDLgA-}`$@Co;b?y%6r!=R9Q46_am|w0_?cgdPmI72u&kZP$ZfJq0p+M; zQ&&7Y|JGN4AaVnI;eoHLeR{$?KV+_W&Qg@sh9;E~NGZU4d}YxgPjKv9bn7?}su3Tz zP*)7grV?A}WH@Rf8QDSg|9EgK*7>2KPZu8{^3C-!3_3iOx_#uL#92M5pb;afQP)R+UMx)Eij@nsyO zyDKiQh;Vg=mF)?@it$5RbUzNhx^=FB5E6*HX7Nx&6C~_CF(a9`cFp7=_I=(B^iq+I zFJi9~)tBc3qVq5)Aag?VNy4k~#%#~RVC#)58U5*J2UA2#o`0UuqD@5*rny@jjs}0N z*)}Shraq;54H>LK7v1eGPL_C6j2y- z>+rEQ2P;v1)_VTULUY*b94xeI{3-23iM>|w`{+!>w!+>mP8G)W0u5%m~BJ_x#OB_$OTo!;`{{=vi9DCXs- zG?NcnZU(9W!FeAO*WQ;5dMAS%mH)XP0Q?ZO1m$TXM=4Cs+iIb{>V}!>KYM91M%#Xg zu0g*NdK7vOh*D)Yt9g`b5`wavgA>keZ?Vb)@K|Sn27vy;nN2TeyPOOTu1{F{|d#Y3o}KBKoWS zPd0$y{m;f<(@)Im=g8l}AP!pfYXUz3tp9(SI5j0sT(q>s4JLm6 z9xDAR7EC|-eo_IdFHoQYl8%4q`Zw43|D{RB5&9ia{NF^9e$K05CDnQbIPE~h#F5O; z9Wwyx42_Tfdk>tolR+W5A+6HKV6Cy?*Ga}Zid{Gzf9{C$pUEI@!t_!EVOu-(4v%`^ z+v;4J_);xtM7!k$V~0fQHHRrH^quLrD=Z(EP{BRogpEU}YU40uN}b)={iFfm2$FZ; zibI{!%FqyPRwDQ{7V>w5{gDzW+u7c0 zpL8L_kellAR_4(-V>;}bViFWVz#R9_NY}sD7xBJCmcy#ODYm`GV6Eo2GeJKNf-JaE z;Vm-a$coymP5T z8vKmmJA84QC9IwT@?iK1IpHhYB5ood6TOCRakx1MA!ykOmd#KbxB+5#X9bj?N)?rqfv9^UtoQb(HJ4nN;^DS1#Z5 zn2Kc7LCn$XJudyV*=??h>|2=P1qskjTQ z%umnU#1POoikO*J56xGpA~~VY#8=u#TB|FDRIerb)Ph2|_I)_Kze{WLD*No%>TM)k z`JxY8Wzp?0tnAVZtA(V;niAfuwCNfsyG~A64}KZmZwArP-kHT>Rd!`;GPT&U2zK}k zwIIO}E{_R(BQde**1OhNMj}5NS9)VdrFGd&hCr**LP?#Nv{80Icm=})Jtu&w>ExDe zK}SY=c9o)P1TZUAA=I%oF)oG7@5Y3GuE*N(Bq+00V7s_Z4#HB8Ip4LtLR`b_ZLSm}g%Rd#-vb8Iz!K+~vdj4*=3^KySptf&=tE<`5falwlcf9?0oq{#Dn+S(*3_%PJ`D#?1}voMca|OUvJRl z`qFSQKx>T+GFV>k*&bm$={=j&R(u4tQz)b3R=Ac{ zQ6KNT#Z_89Em8@^cYtL7Jf@i6|0!YhZEag7p(=Ml41EpXhhB$FrCM9#&AAtA7W?!J z|EwHsyD`fGbOSTlLeI(kTqq8`M)nBE5z$5!582%|b*4IOC^M)ZqcLz_dF!apZfT9E zc{-8u2FGiH{5-By8i2}L^v&7Ghzb95hy_yoLaN&sbY0#+!a-_m^&+jYrlifpYZ&__ z>b1#LjtIPRSdC_I!G!k^uXBs8(w#jvTpeORl;OOw*G|Ksl`udVvY`m=P;$KFp$aL{ zd=F>K^l7(;ev;sP)04I*3uPTMC5{|rq=yp2$lZ}_P!FHMrNV*nmx*b5ib$8 zqw^Bm z8owZ~ZA?kB!vcfKHghW>X&IQ(IE;gHMv)4P*K(UH+ zi4Bb&)c%Lup>)C%%WYxYRnvlJx#ohXpdnTX( zAuJXfN8S(?bv?%AB5p#Cf+|Mo8Sguq6w|@Xi!v4g%K={okn#D8FoAGPCjOQ>)@o%f zAgSQ-xcJ{tXWR&ex(^k*p6M(u%W`8LRRr@QjD1| zitM82X8GaSu+9QZX}@x%JvN5K0~TYbr+iEW?G0zkv!5aDy~d`*7}V>lN(+Fhab55J zF3)XY0EXXs-K9zw`q)CgR6f)-kJ44PFRDH1EWD=jEm=Cl5Z6Tr(9cAL71+W!g^h6VxTm+4zH8WMyg34n0g5a38+2lbub3+v6vb6v0AcJ=h!#C@q6qaRzs@u#; zWunWCl0pk;3n*)6!DUq7hKtmSukfZ@t~B`4*Qvc+d;XCm-F+v+$RCq4qzDxq%P%c!28fnIqp#)ORY_-@OJ#S47Or>@P()wU>eKNFLGdG!C*#NirM$4mSmpZ!QS|4C-s%0K^a zO$IhFfLQdMm+-&ljlcM4Kl7en#1yXoEz$cXeNM*oGxz(Kri|suEU#MXi;aDp%xsHh z`7<;7wwB((qQ<3N8JfUAcf)@ek#88hOaFr$KMrN;v+;MG0J7v#&{p9uSG7`%R>(my ze)ZZ)M^pbjod>WIHFm~-r-A>HivLTKm<$+nydF39w;|;o2Oy(VsSz|47QehIBD|l- zBG@sjjU*P*8@j;Bu*L+r5SuWcx3MyU511nV1G!VEmIA-PT`VFpZBsyML|s$IKLmZ> z#+F;q8B^gv8u}FbWznf^CVMi>w&*MU+3urI9#bb^jlZ%|F-fq+W!N}x*@GYeJ~O*| zJRjsXOoEb;5iyIX-BMuPm49a07O;bD2lWwm^8Sj|v#`;%64je*?DfUdW6Lbida8#d zl0k(VoEQAZuIMEAG16sPrYvEXoF3STjsk8yhE>VlIJcs1J1>spF5aSl{)g6I7SRHY z<)Wq~qb+=p5i2$`ApmML@2UVGR&P0k#b0{lO_sZ;(V$f{hr6iL!c(kyf$!vjH)ZbR zJX!fnqtF|@LHJJNf^I;Mwr#;oKQ#-e`)T2@*mR^$H&$=G+ciZO4$CITYP6z}J z^+9{1z}0+YgqKgu$G$}I6@Z+Ta0p$$z?o(wmdg$x7|1XDbGz(ep)P%Mr@^>Vu`81VkMjp-2dY>Md&?WIe68d|J*ZyRo~;VYyStjHqQs9A@E_f1ZgO9Eiqxa9b#m` zsRTcT|F*t>k05Y}xf0;>Wie%bX|^n~^COiQY#?VrGQUtB%CXw)EwlMKgtrb|vsI&0pi?h||=YJH$>|v)HCXBYW`U21Kp~?Q!OoQ9F zVP&bnW**J0XVdfBh*`v*Qi~d;*qFw1{G`X>KfuLqvUD`}94!^VuDKsk?(FVVpJ;i3 zrO7#zhS2K)pOzO4#CAb=GP{S8-;?=UBUzOycd9;iim1k@(veS`Xh9r~G-O5B7~sGa1$Xm437 z6qdn=Twu2fq0)gte858NaSk zBq>e?Ev5IV6&yMm%T~d5d<0C_r+13BU*>Zft~I<<_UQ`~AU5t^WKIK4lI!}@d2dAc z#38yw_M4DVhN{};dkcE;A!>CKtCZK1`Ph zy?U+DGcZ(Y#8Q0?=JowB!`x%ZM=`Qx9#y+y_H|{b zF(Z5YBeVI(-iHHUM3xemT@-}ZEiY1KJE0FODJF(iADt}G+i=35aUKv}(z!!GO|3Dl zzcwPRO6I;QJy5`lAT>}oA2BLtIOa(Mtq{^wa_YQi$5G0)2@oR?99g$f#Z9bK`<>6I z;S8n9>nb@_wzg!w!A8leI3%dE)YG1Fqs3Qwb$#BSr?zfNyKBIv+2;l>7E{v=W-Nqx zMh#VkLYjEW{jGgT#up*_Ji#8=fEw>z5?tpYbD_kvV{MKQpZ8_<)}il>$@eb&D0Aia zSbHAHynxhk)69uk{YhUZ7u&dX;YKP}pM~42kxby|8k_*Ha2=p<2Gp=q{%9^<0`e{xA{A`N(COQine6cj}13F*uM`j;th~U2hYaLg!ws|fm zUt@fTSGC_^TU!n;@x^o9L)??AzdyVyBVej^QHo3zk~z^E?ugFCqt;lxv)2!v9b~$J zy{4wz(R(%hoFB9u_Y_g`Mo0752Ca2iPYmbuKWqrBQNk2e1+L$u&t0)JJzCV3UUM@8 z-)ke3Abq0T&-WsqSwnC(o)3akTQ0G_JU&`lJW#ysdsr5HG$BQ9gZk7MiEUoydB&nh z04}Y8HZ+u9^vcl~9t`~V0VH8n;M>pOOhlikzMK1PgMi%8zEgUprKXzniA!ArM^PBW z43wvwd>QmT0|1E_+=yKo0t7t&WX>3W3MtK7e7#(Q@rd*Y<^c}1~hbXfp?%%NZr z_!jfUM$qR5!e)-R0QaAkrHsSX5h`;&yh~4ftUi(;qlcekH8w++-fsFr_b<4o$i;1HGLpMHXSUu-09OLp-%gUU7A3OHvMte{IHD zWnK`7JVt*%VRJxnt?vZcyYVlRhZm}8U&cV@qK}l6Z7rJ7qKLL~ZP(BS4gT5PJmxlj zRyDY4cDFl!4*{K-465&sdrZ_Kp=8ckFLUlLy~IY=016Gn^43d)WNGVzBh1& zPtxx&h6$5Zo&e!iQ7~6R8FmfUT=crb_H{22OkK5Elktz>jb-2~fv;O9G@sv{1`x5T z;-2+$ol_@7lK90fLmhFI?=L#)?=_bU+OCh-jVGXE8Te;4HVS}pG^)Tu^k*%L$#-oOeSEUKiyw3&pM@!yM=H40j$deU$O*MeU76&REFYK zd#v-@0&3%d0#9O(yhUjnyz0s+oAd`3ny)E%2EnZ4uD*wkAw<}m=ex*3+yV^;A{yPBpeBC1nSb`oirY5yi4ZJm??0+NFtr(R*3 zK9AlN_18w{Tn&eldh{yLI#FUXEDg6qI*I!xBH{aj>jl%)EgS#3MNE?xpjGt%|MvtF z(jW>oeW}++YX!rs;=pUkkhzjtS>{y1>_n>dI552sG=;Q!olOK-8e=zS9& zAX$}(^>zDSnnQGW0AkeGKB<8&{_Kragd*I#mqJR3_=g|wo&da*kZz$L*6+05IpSPoK-S1o+g3xP)8D?7|)1fGmE^Qq%Sa)3i+DI z;&g3tLR~Alh-gkP^O&nt1y6NUhp>@vJlCxnc5%eT&vAvdYD1K97C=c-C<3h%(js^B z)U>o_`jc8iZ|{A`&Gl5IQ9XVs?~pCvn{}312K;|Xf-@)XcUhpri{9WIjBUa%>6Hz) zY6Lp>MZqa=nG(ewN~?KdQecxGiUY*vyH9~MAMKQm)1=lA~J z_x*g{&-?z<=NvQhEcbIi-~0Q$uIqc}vjNU-~AL8jcWgg zN|f~2_PnZ>EqBgkd5V2nUL;pxk;T%LSGIW8>spbgM;Fj-C1rfRwcTSBXr4;-yGZHg zF}P@0cOsje^OyT}20pJx8TCuJ)!Ch`B}Q-erPHVIfh$wQc0QFi{hRqr(8PD7e(Cwi zIzB{k$jvEI#JwLMfkyuNPI}P70(w>*X({uQV#0wWN;!9hr#4CkT=k|+i_21zlNG+8 z6ZFo(?;jt;o@`e05ite9?O54zw!MK);=lWo8N9Rn4piZIudC&*f0AEpkuNdIu6+DE zY6J>B$;QgNzkk4EheQs>jh6gM!)91>++J_;3II09sujA z{X?>JVUMI(RHg0r5H|UlWx(#1(SyICHo?`A20d$5ht=sb9z40_Z5DXViBMdgW}M)J?2`!yLPa^08u+w{Nl6KBW(E zqw2GLM%*fWBZIDmORR#&x#Fr{mm~mLUg1H8$?LBt{@Lp``T3^XOs9t%PTLC_sbgCl zPw~}6I(qTd#5k5ezD7&wKL(bj)_ffvtq*px0}4GQ0qJ|FEdUX?WbrraA^GuOn7nE; zNCxkqL;5tNx+D5Dol{rjUAgW{8V0z%h%V{#N|vBhE)uO~K0G`!gUy5FU^zN&nBosC z5X{nK@7P)AkNmWJ&RvG!S8*n|t4ewgROUjZf!E#r5RA?ZM>~|@2@4R9H*KmvTodQG zP@n^F(j?G;|C#HoG|9yEYnAIs1_Ej`Z%%i-cK5ZoKK zf2Vt>fj>5*yD+UOnM4;_Jw^viDcmEsgFCFyjH~}8T%F3Q8`*^gUVz*f_%KB;je>(-QmB@dT9A+^tKp5aN58|M>B4L`s9ZLC82&^-Mf8F z$5v~c#4Qx&HN7HvMlGdw>GzMQw1<+fZD| z+u&jzQaa#K8;m}UVfbxCpztSD97>7o!qd0W%*i5C8T~WJBNf$&%P@uxjA`_ zc~Jl5kdPX3d7PyxuJQWttt2#F%cQpbgpkMlZbc)rmrx<}S7X+x>ru%k|v)5+{FE81h z=S;TOtS)M0Mkz1943G8UohlS8m3q7z(J*v~RrXL5fvAzop`_|$sqzM6{w}z4>ch_P zP|*=QfG3+$G$Tz4MHktnZ#`Olrpq%KrHt1|VAwl+g$peVEScUbiW$zTiYCHhr5RI! zckI0;%8nGj_HTC(yd+(0LCe+@|N`c(rDOVf@igf`y%srucy7H0JAA6 zy(em#RY@Gtl}!k_A8k?2&(j|fp{v@ggiEY81m-k%-kd<=&lL5iR>^&68wmPT3&7aaAb-T5S(L&Nx07u5F3#slQ_PRuueV|8^B2~kiBqtQsf>TsTIBN+Sx zb^d~wIcx|wmR`79=1h3x(c|ohd)GIPA#zNiHDk~~waw)Mv*W~#c=ZQ7cFx_)%-c{i zSW~!@0nrio9IXCVc)mS_i3hB%)In5`{_|xMb$Zb_or@hxg?yPLX|O;%|D=to(U&ZH zOq?lQ^X7vW?k*IJz{|Q7ML1cxl+)>Jo73+&9z%W#H%^0`VecHY_KL=qTE;e#T+Dtn zuNgEb>PMoW9~Ku6B7BTmt7f~^WU~R(4SLH0m2jfT%gGxhlr8OhGM!FWD~gBi51Ld5)X+yK#m zZqP)F`nE_MMJeY{uJD(yOv#l|a&q{v%>_03xrnGF1xw(>0HT!anke;xQ2Z1MP~OnD zkaXn6b7o!)j|0D8F_fEmv2D$~HEA(l3c7y@?)9op_L#Gu(N_tr644O{o!YO%?y(te zPiL7MH6<~92u_P8og3gb2>cL>uxWbDV*ren4(MG((ibx)cvaiVUhm|UlK9aoH}?`t z$^|Z$y9{u-vn77>dG-%>!G|-mQ8g%fWSRQ5nWwYod830_ouhf=j!%q4ba(W@7V8DZ zb*yLKo0+E`@^SLRO78Um&*|w=+2vda5I0OBL;5%ej4i_J?_aXE7}@uZBJ22$F-_Nd}xGfq=Wnz;11oHDJf zufyZ>^&`UbniqGHODp^K)R@h*rFfEYmd(oBK23*PQh@eajNV}}={_|3kJGkEtku-l zqx2=s^kF0n9%%-Y%2^&#iYkmCCPl%*$xHNo$}(=ap}jtaYGF=|nGOjHc%dJCUQ7K< z|a#tjhzy^c-aNo<~apxu5~wsle!nukt=@-NV$}-x*S9u6d#wI zBQgUf(BFB;?g>kBDMwbw^at5m1!n;FtjFK2(K*D`X<888zS(tXej^m*~ zvNRg2RMa#5c86I!*X)P3n|QwC4JrDO#G31xIe1b_c~*<}`#qI?#elSmTRN}sr5Uir7SkMzio;MdlWJvGHMINM*$_1@)OtaNauO($I6s#qH zp!U+>=YE2FUQa{>V-|MN{ONvT>-$QnGqd~M3gX;*b9jH^Y#BskJ0_GB$2|^_W)uj- z(V0c_SZ<|B+1G_#g4|EdlLqZ0rBp9s_}#P{LnD~m2b+451DlmpXQu7FD!f7Wj+fep zPLv(-$CmN$8hBB+_H&Xj#S%TfH+|;g%TnN!Mkpn8 zhXvNjOPIhdikjiZH6U{iQ;*vXdcp8*gT?O6gPr2!FVU=%H!d?C8StBaf=iW5dhGs^ zt5&0bDjdO4#2xNrE|$=qeaVX9Ag~1-o8{~{H^1~mWWTOd??9#BXY>3mXBBVxF zB)yZrk@`<*9ea(c7ni^lr^yv1I|ln9MbW>#B1p$AsObLKPHz{hndo0-R@);OY{P`nknueqX-EcH`R5 zM^8@Pv=u12^?)vBA0{6xGtn^1>+^3d&*JkEb#Pai548_!F|&r^CX_!iA4uH%#@zQWkJ4@0F}LzQgVHqQcO^PT}u@V&Jq5v{v7 zKd;*+<@iqlxvl97R-+lC;t-N?dg9_r>GbbaDphN@L5aRR2;GpU*o7^@itlKd8pr|c zp8C)-unp>Se%WlA81DB%8*CduK}@|jI3d8|Sg0zZ4J!NZP~~QsF22##Fq!6u&?>@> zfCiRq6RN&ugTuy%OGx~%dr|{ssB;?}9ZEL;(}$GG=-vi3K0qlbEqV1?8$c$Yl(y=o zAPN9_`n}kvAdeeCEmT{r4bBF^8+p(WoEaW13X+UfkM0!#PwmdWT6`L-Uy>{hb$JKD zwe{LJNc6#Fz;m<)7*GQ!o3|#xk=1`@IS+?~S^Vm8Y_blRxKl3DOOS8dki67VMBjy# zHbfwnf|R>yXCkQ}1xJV;NhZAwZgjGs!hKJHYvxd;lWH zzkB1)wQpg*lh zvZx3U1l+B5k^+Ip4_XBR{e1=Q{nuX04~Jt;dA35&X-xj)xOdsabJA|=ek(eGtXlOB zC|0w22Oj_BCjn|bhyPq_xPAPpgTP8EY?ZyQ&>c9#cCuG9UV7|Pyv&5KiT?z2QK_d_ z23sds@?zjJXsL$u_J)6`+144LCD&I76CV#}WpT1j@cJ^g__a94WNRt`aJ7ykolgh zpq)*g3py_F)g)SJt+MCyVRCsACSHW+KSK_nYPttu{&wndVHp17NticsU${tLok1#j zZp0z+wg0}I^a{?y8gl0Xb&SBlF7W&s0{WghssYN{i|_(EnDTf8L&7zbGB%QJX=FU7 zu9^STNtADh4LE{48~FWEmQ@Hh^>ZXlRa5JksC|Mqfa+XgUEu1D&_5%E7E0%^`%-Fg zLJcE67u^58wh>ASX7cw^7In}Uekg;m-Gq{^?Z`ZY>s3f?(6J0;FyRBHmYN&HU9kQy zl4?89HG;BSbG@7h+1-ej{=%m*Th0N@sox(t>ZA-*zFf~X0CNFCTz$qACps{Mc~_e7 zH)djkD17~sh|k=IH_*4h8V@BR8!tx{p#Pm!aXaqD#$RanfPmxS4Nd@L)<1gwbuD|W zX=XOP>xL1+TT(d3ZkS1`WnvZsT)|nJ*u=E>(jUpy=ypPc6e)=0~EIG8vO z=OixzwXT|09LV{^Ycoy(=M4an9S+wKy1-^iUIT2QDF8B4g(-lig-CeI+<`3r0iP{ zhL7LE&kwH28L2}}1>&!Sh~l!Da(vc|;c`j_fckY{dTX(V4XSK3emcn0s9I9cDLSij z?_%Yl1PgaX^Vg>|d*W@9yT-crNMec`ckh;r7ZEx%GJ7$6Y_PiUui5ru`67|s z-$f^-g`JZ9dPV-&R62kH=ZdU+zI`pC3itDfU8PVFu$1A9fA8}62zF$$?VxaP2)8)nxn3VBIsMQt7ctJWHoL>yTQ5lglp!R4F39*Og}8KBlkdt|J1L8MQpNc4imPY=Tu_ z!0fw;Xdsn%iBkUN(0~vWdkEm@)Rb6^If2(_g3e!%Pa);+M8c5iL6o1_!I)>TQk!Il zQx`>6D`5x>&4y-qM1pke4pdE>1iOpTjQ6N!LdDS1+*hgDiZ|F3G8VGUNg}ZtmE* z=)i3jYee(8LNLA2ITOwzOYa(=f_{-`TlH4tQp(%`K9!VHp|*7h&zW&8VB+oK=ow|B zSQu%e&&;ig4?~~@J+k}pW!yfbo)=Z-T7`H2m83Zn`1>o~>%R<`KR>Q&Lpa z=pRQMR{i6Mr{n{*PaObize)^W9<(2;5N-yy;G1sgSHin8+5zJZXiVY<;+u*j$_CUGMS`lEr`@ z!{18&n>iXe8+ow;+F}M(k2<3=2_ZH03DZj>6MSVo^HN#1ygBN;mJzV~4_9L$fC6aj z9>fKte10_eMU$1(SRRZI=zZnIBg@ z#fwrNIlfP6qD5C7xwUdsq99BOJzH&i%QFsOY@7bkbvA-;=i>{j^VU8zbnkTSV%`{6 zoEp7sYFvtyN@2Q4CO=kP^L%bSeMQa=MC>UZ(!%_bD=Dsg&;08rTybc2j=uRZDrY0F zw<~Mh_`U9$Fb-%M=Vf&JlKZp(!X2B z;AVLw!Tu#z0oez_vSE%XMqsp;h#Ve1$F-uf*35bu2P~n2szJz0T|1XOl33$&^&N-P zGcLZf1Y*)3o34bMM}c#1ufQlU|0SlG;}|0E#t*iVaE#4-^2(pSL@SzUlH58iABIq` z-+O+-FGQZVjqoa7rd_1jt}=YE&aUhQMje@B=Nd=OzgVyeIzjk9V8Gj-N5WbcyTBfc zn~oWQGyN^r-WKk~w*^>u@WCvw`%JdK7NB=7c`kC`Wt|fbHo~^nsg{`XN@cu-lx{hj z(UMj)GzOZM^RTVH7aj$UmEle7tj*21C+Pne(O! z%$FYMhDc{P;c`by-i_BxJafg)D6^}}e8DIR+sre|%Z`88uLfz#l)xdxOno*Ws9c0( z(S>s_NW@N*JKbJBk<8r0T61rwBV@NLL1SRMhpnIkzrcMFT+$jM=7*2nAJlvf@O?-j z&t!pAAL|c0$kPq-(oa})xJJ594irrdg7e!EzyDF$(dU_yaJ zK@^B0QXUj8rRVt+JL|Il@&HHLYlB%AAmR8uM|d(sV4{@F6w-q1m5J|&tLz^)kS}0_ zsqTrFo{(GUzcw{8M;`mLh#2!{x~LMA(~z2bP7Ol&m5;Aj-H33GJZAOAmU+MoYh0+; zwSdgeA@byYefF3>Y3}w<>2(3#Ec=7V%&lL+UWZpg#@zdCXE7N@N9ELba*BRUy?{UY zM{{U|7ATBpT_0A?8HB}0MPk!qD)><2kIoZyQ%mG5hd2yfP8Oo7Yx?bDV#cG+ne?2m zkE`QvkLZ^JlILKMNNTP5OtJFxRF-=UTku4>Nc&)x9YWrX&?H=haMO+Y;~x#q{q~m~ z4yPH0I3CH7^z~a4H~`|sM9cmFzo8PA+4^dHgl96e=#q~`)+M;r%wkt0MBj7>irquD z&%uYi&Cr=$`+XQOA9@psv#tDo^ZIa&rCV`jz(btByC$%%z-l%; z0C{|ke?%h9HWEesnxIQ&x zorzt;5wM@Y1up=#?$-&H;Phh2(z0OXyD=pP;{y#!@$q zojh-sBNY|W9xcs6z$osd$K&VJ$K&w%OO3su`oS@MH{PisYeBmw*iw;rjq9=l$3^Zs zXz$2jG+{PWD)O9Oghe&8(VON3jG~@sUg*YJiS}~)HnIufv)5m zPUhSZurX)x?xQfTyNUJzYQa{X&4ori`h6qJVJ%jrU5(vf%OXCZ1c!I(_HK$F#H(r; zKXj%l;!lI|(ODfIC|AmK{|T>X_^RU&(^Qs}Y}QWdRQxkP=Rrg$G+3N`qA8;) zcBEL7=1aKgVy+0-%}K8+{mWdFRrd>emLeE@fmC%{U&GqG$bD?`mKm+wJ5JMtv~% z@zdTcwlJ0f4$1j5j%K9e>X7oW7qHE`aFwf9m1++h^cE@|Lrgsvu*3f zO!8A@ZcZDamXW;@2k}tqNax3)YWcUVoQ73_MW2;X3Fh6Y0-g)-{_6bt`ypH|65CNV zMTM_LcI<<~T1~w_QnOq7TEaYrui`=vMv(y#XaawL&N-`{^15122mW9uy%fq9NZ2qq2s+ zJ2~=Yp>r#nVCcm236DMmDzLj@zvYlajW-o6P*m!7;Lle{L8o}ur#fmB?>*V0r?}4H znok9Bxu~gSG(FNZYfdZTGM_}AkA}6|zJ}>@Wm&@+WY`{t#87J((-(z=khjlWu-4Ws z>{{4)gRhzxEWTIknrc_!)HHFV+TG+)irgW|j>abIFo_BbC;utAv4?uuPS$qGKLOgK zwr+&!Nbcv6Hc7q75E6A%c68)6@W1QG9{p*CMe@btJLEJt&p-v2RaN+tOYGBy7!8zW!4k z$)_9*(whe%-f3WaX8&z}j=xQbJt^8;A47BnU*55LMo@nEw(SCFizL%2oX?)Ka9mL-ez@cdBBX+8B_+H)Kvev$@Y8Nm)->n2|Q6eR!K z5J&nqdE*l)PDQ8A^KJCBh4Oci>5uZoS*OnFwp@m9?5o?U&D8h*@5u!%2O=+UKRr#rbt0o7x zU*>p-1s(n4$`IT=YYJ1duol8=EkD9gi7|h3f|h%(a$_ICZc|_%ZZC=q{g^D+qQ|2!0MJ)pDYe->gC0uLm9fp!zYh>cUJz9+Y4z`7Y{=! zbiSInA4)zt9CEvS>*%0CeHH5HY4E*cY^$pE%%4X;frmu-rr`avpRyt( zIZK`vdIdi5@|LDiE{|!Hi{ozOxB(beFrE7DaX>dhGZcXSxYigHTw?t*TWn#;mNv?h zggAvwl=Yjs0vOAeS&|I0gaZ*x!=#Qr*Gd+}!Uc`w4)%{9;2sCOCWiSK(<&+f4kj$VfLek&q>D<+Mh?~hATEk`v(SMQ#3@B4t{YB%)c z>l>ekNG2n;1s8{dy-Wa$SO&;O8F1)3d?9_RQrQuG>QbK~`pz?$Lvuk5=|RyXF6_Fe z*jLll+{eo&4ZhpN?D&kYCf2d@@h9kBz|P-|)GFdP3Ws`M#x<1wk(7=37iboP;T{`g z+6DHxc*8UMPZOKnRV<}5|2&6zMxSkV_s#B}^D}a@7hY#U&M1A}3fGN>H4I&)YW9K4 zIU2y~lh?sXnGhx|eI0V9Eq#4|j#u#}I2a)h&Z-6nl@w^9hiANPI@^T*ybK?8=B!%+ zu?l2KfK~)dBsj(erq#&_w&kV?1$c`8R#l*KvmU6b z{R(3Q zPD^>cGiZpwh=8k$@sO8!DLqFL5dW+2{}Qe&KZ$tb>D*f0RsrF~vbG5rhOW~#jsB&X zi}$E?-^GzH@XPO^a5oFqt)OS|C(XO%P=L-Fkr*LF^+W%(+SUQTWNwujN}~fVVhuY) z8AnxIbBh6Jn!J5%XRz1ijB};vkaV@Y9B9zjlK)WD#-o%gAzxxq(CdjNs+jpHCcI3d z3vs>+_SWSp>E$GK+Jcw=x7!1k7w{w6?L2b+>`JQfYjE!?OvLiZeiQ|HNa~u-0&3*% zYmK!_CLF8zTVX!tm&@-3-RAN>gMxx!;aj(8(|$=;r3krlM$h z07!tr60!!`fv%mFas5UDfwM2K;~V}CP^T-sX`li}<26a!}bZZ~T3Jg492Q$J6 zm)$`0bw^Q@Tmo)q$vM@$2fLdN2q9aFc(GP)Wkv6Tj@wNk+xBF+y$c#t52&6;e6}E! zBgJ9S7>oJ_4ofr;6%5xoUXN(Z)ed%hVOpWtHsGFw;H$I{Q*+T(P=plbu*kD#6MwBQ!;@wlm)JL{ee0 z{v``Fq;50EEbhp4f0T0esf%GG|G>wl$^hgX(vw8hwED1$t8eBL@}8U5ob8og$h-`% zb#E`USRB%NiVVGXwtjzmRAw2-%>~L0 z+wgVvIMxWjyF!7m7n!-ZkCN(9RHy$BlRC?xj`&t~dGNL2D(P1Tm`QT@Mu&Iw^eNT; zqhGmtIvkG_j3t47mhkD1V?W;e0AljKSC_FY=DJMKpq3i4^(L2pcN%z`c6+zm-r^4M znh3&vo{>gEglYOvA>nUrZLaXel;cfX?uL*ov8upM1+F2Z+8kn|V`gxvF#6fkYmw}5 zv;FfD9vU-q(~Dy>G9GM%o1&`H2ziC-X)MW_xvT{5lX<|f3v}%t0&oxroIvLcbtc;U ztwztsFI_U0LoZQN>HTWzOa1gr!1ejwI?wCV4-)!ss6AM)wXNS-koBP>YG3ozIi-iW zak}YE*%uyFAJ;mQ8!uS{&#sQ@k6@W58o$B(4KuF<+}SHIYfRu=Tl}8A4XZfszk_dc zieS?g741!c=dduEd}85w8E&aG>5_+03?I9$Z?b*FwL+vF!Q|*u770^`hN((nvc%Nr zeHKE><)5Z~pfpiYgFTv3d&;}~-z0NZ*1%bi20|)^-G)F$+;bl4^U43Bt47Zej*zX3 z);`Q98`gWKP^j7WblK$TXuA1(iBC`6$UEQu@RVPm*3N)_xrzis*Gg#wJfK@M4X~)T zCfj{$zoJ=s1_~u+E=?|N616c$_HFi3k#fN!EOtt?(%zA(v# zmgP&&y2bLLLTgzm2|CuG&Gf)d-Iw6FH@+I%;#Z$N)GC%YxTlQ0(y7B1%Z?Bn17v;4 zE1cN^p;!d$fd%dkXt*I}Xs)&+ri!|<>cJ>x)sjW(^=aboqW>s ztd`7XU@o(TN*U3l8(@I}Ror+fu>7EiG63IGI2x4wWGPFCccD#^JaolQBQ(>qFQVsD z0+~=;1_;rGTgZtDZwxCID7kit@pOIZoo)o(2T&vj?Wke$5bXrS4}d1YH&!d)4s1?z*6`a00rOdE=$pe5h)FNt4m;~ovnltDtknySO%Jse_a4L-TluI{) zSXcF|QVXWUmjZ%{ zT&|Mdt=a^i$qeL2hqy4C!O#6ll|hfI$zWvCpr_zkjxY4YeGy_{=MHZ(GIjG<3_V9( z20=9+S46{h0R80GkGEwneU~Qk-Y90?HHD}me7$tG--AqUE!K?5hI()0rWs}2DsCTv zT?%_QQCtR}DfjG5o48z)WSFp6 zuZ~JsZ8{g8k3Xx1LGW0=1O9z?f@8Rh5I4W}Q|u+~JDGpi$(tRQTU<;ja%iLT#0&(I zP0ieLP-wsEHhfo>?Kz~nY=U>3;}#_nLd*1>vRi5m7b!w!(W*3UWW8$>znm~>_&W2V zE}(WjS0+Yo{|~^fEHB6lHjOn)XrKI>ojwS#DiF17JZ6X5I}KEA)sZQGJ*o`c8RUvm zfOwZ39?oWx0P{(+HPy|f_WICE{f~O6dY9eWle&o z^h%r4CYp%E$M$Ir#im8}^YnvVu&Pt!Dh?&RVcs{n(B7L=kboOh zXJ+s=lNn3%3H~^vQ&b=zi$OM{l&4PAbMu{;+@dvJh>L=O=9_+hEHJRTwXkpzG(LP= zd2ILr6s?OEEQ?5c+h($5cj0)Dj(27zai~9wb0%FR4x_GzyO>h^bBmI>%}6ewF6;WH z>X=wxo^A4dWM%62PWY(v-ezrW++IP!d1FAsAkRHCfLc*@QkPv&$*ND3$5N44=q#lv z(HNAU=o@;~^Gl%31?1XNsP}ZTK4mpS6C6|S8BMS1ePPkCnW5|2Tpn)7+& zvdsZN?bD(iK@yYjk0j5x1`FP)22y6;X}cnQi?f0I&gcxB)4tGO*zOg7G|TofHn{$Q zh0UaB?jkUfp7&_UQN4>%tZYpmE1X?=y2WlhZ+d)8D5En>0J^uM{?w@nD#%#-?+}a* zI)ovTpoIe%bVVFA#_D@_?3S-+Tl6DI2-O4u!R^v_2-B#}uPjfD%@D>SZ_s@d+Hu%kGtg*{f(sYQ48{qG67UTVC;2 zISSfA;%Hm*u7^pWWq%!9HqJa{2iZ8IpK3?V9ZV&iMbA{@8|y+pr}6#$njCGMd;=he0wC>wOZIk3=P zykE}q6qZ1B=~>%L1O0?j;jVSbpp_3scBPTjXs~|VXcWQv`+yMcXB%`LQS%$YV%NPJ zUKQB0mPT^TV8NV1spG+(uA5HppgFHVnKe4KMu@gzZP*;Mk^`I31V%FO-V_;+Vdn)# za468zLJ`_GQgcKRk&0+qgahz;5wOJ3bO1crX}c8Sz@sLpT% zl?k4Ra1sReG7N{oSD);mHM&IfY3R8#KnxAYwi*JWA=pT*@o=by4z7)EDO=QiCSGilg@is13XOTXvmnT{s^_Ti#mIWZ^OU}OQAP^^9`Z}i83^G z7+kXb^U(S14ebCBQ|>T z!L6WcDIBB9nidXPR9vuTq7|X*<1dtM(>$GjjXa=v!K-ii*Q^7$p^r@6e($G*ULEL( zuj_iGK1ze*WS$Kpb2HGzmq55Yki1>CmzZFa1>4e8C65E4z=Zc~I^xg0(5luB?6j}n zW3w+G^Cn0(mQ3UrX{q^_cTbjbB3BX+BR{|xP)baw(c!;G%Yi!ULmVxXfV?Sd>dQ7dzg5qm^wXqutUxw98+}eczMP^`jf8&3)D#g z8FKyv7hA9+rzjl+NqfS_^^0tr$b=u+ z#Ei*jQd7B}-c#~Kat_Gtp|%j}I!blOqol1j<~N7CTyn1cOTMV|8c5scN8DxFMbF`K z5vb9O+(v+7e-u-GF?f{Lp)izUr1sclM7fKY+lLprsco!s_x8B)Y|Y6C*y4#2&wNk# z7yhEu&}K>AK8l?VErSqogtocdLNj&xXzc{x;A6_}TMJbAbL;De^%5nlR?{We)H0ezWn@`5SfOOQ$ z@yeB%x>&b^Ef^rVE;eu0+--hTX|}QEQ^`by+|}S%ptt8gWZ3qyRuLa|XW{O8Mnb2+4V`IPfLVk3U+6P^vzg1L*xt&KaOdV?;hUhWl;= zQ>7Oo%@fb=-6|++QEp?D=S=|aKPqRA3_P|`AIIjq`Me~An1T$#w6Y8Ak8f%ZZi>UZ=O9rSY1&7Pi}`0nWS8c%be5#TzOcEGiLXTD_9UP~SY!abaV1YUe6e`cDy};5 zd=}Wn`-ZE`q)XqD=p{Ij@$hgZL)Fdff3`F1zZo-#5m49u4CcyyIN$ir8EK{znjCLw z1N#h?bUh<#6%edKa$+--J8aVM3xIf*4m#URIu5!d-iVZ)&$0-esBnnwFdd{YLyTQf zFaemo}airAdA2oC4+eFQT*4wi&Gusee4ABp;gppm2+cWKY$peD-i)H%Cw z#{GJDzE;l=JLWrIK)qe@_nfKZUhA@shYZ#@r@Pwc9cSxEcSYA$!V4;w96{ z;|8i%8pUnXq((ooWCxi{J;_SdhHsA<9Z^L`Y*xjEGSKJQJ{JC~BXV1*aTD{dFa1*C zw)GPIQWjp?23)ha#m{-9FTeqt;0kz1-Ut4v)iuh8Yva!BTSSsxxyL=qL zUfqf`1-m)5+@;kM%=TrpqV#_qRo@48I*D8b#{b(!2x=yDpwyd|R6%VEQ5DUMEtLfW z56JUB*x5b?@rAkAKbyqPO(nqGBo}_(F&o2Iv}rx1!t=l4n@e8n2okLE} zr>;WWyOn(T)MUM=lUF3F#@bpuEex;*J>eB1z;yVJMA+=mrv=-R8m^^0%&ym z7&gCM_LLSgyMEb;vfeYG?n5Pobz4#LKoQ|VSMNobvs5RE;zD?_B~$ zCP17vB)XEtFs-g}i+iOWK0LWqfm;k@BdHnKX*`BPO{^ZO{3g zd-&v?>(1arFD1TJ)Vz7s7r+{eH0}gcSPRQl4AgDsqN-)_;V(03=cB?5J{8Cx)AC1U zQ||$Tc#8C%R<2e1(uB28z8xPT#-Srdq>D-2`4DVR(*eZu#G&KSD)UKc&BOEvAJA>9 zrt9w2u{+Cnu(k6X1cXMeVvCmeEZV#Q@MH^1mbLTidO8=QXV*i&tM710n2%uouJ27G zbv!%Lr_MC(&R!sGArT4NAKUd#U+^}kk!wjaNlp|0_~!megRdda#O3CHfR$hQ$K;9geqJ6! zDTuV9i0x^oy=Tot0fs201B9$V-mXxl4ZunoB1x^9sCGrvvx81FIcjQr831+(i%Z`5 zXQ?&cDzpno%M;M3QakP!K;M4Dk*gs`R{Ucr=P;=yNK<#D`ZqoLYEew}JPP@;@4l{g zExKM#2XGmi2(&`P7Z`UzE;j2+_wSJR6Y#%Tj{<Y`aeC*G(uJ^oyT`~F0G>d!fRg3!p_xun()(@YKQ?rEy806m%j$wkn z*h&8AIWBLva6)MtMct26?>`Crjs}YJlZBC%H;zyTe+k*Mh@cMDS!R0%46vLJnf`H> zawZiK&YCzjeJ^JRK^YyW(xxi^Baaf#aSZC!YlB8d>d1*5f!yW~mRBpkF>jB7g5X=| zke2CZ-$?GH0KFr-A5*{TeKuJBeunH$*oRLRv5qm)eoA z_y}_1vNGBNu2_tE#o1-^hO`R?M+bITnzq#MTAqV=iPu^8YVyP(Mgh=FZ3}Xg4Gq%v zZRt7MKh=^Yd4%emHGfcQk8Q@c+))kMl2MQlN1<0_p}T_$4(OOKfe?{KSWU^hQD1c3 zq;D*c!$0&a(~qnWk2JSj{)<0@?ty9;I*aaJ>bkX)f+|O;F?c0IdKc)kOEiY@E!E5H z@jZJ6FdLyyQv6p?jofcfDX|%&^Dm!M{Nm1RbV@a6I2{yp?rn6n3{6;PSU}Iv-!x*2%TZS7tpMNKx=f-%;w64{=&3=gE%+>i zANUkP14@;@Zgj^0T^`Af|M#Kh7M9JXDhW3FHCVr?FJQt(pMqo0wSmqwXno#z$Q&9b z%pfNLzJGhnZKe&-+?u1zT<~Ae4Qnf{WI)8x397&c8uX+|OkYu@tIzbPkzGoti+RnM zD6oX4%p5U;WxXn9(6rN-_7k(#PTmC4 zBG5fS0u<X1*Jt(KJ!;SG*^@Xdll|M6pwkfk_s zOw5SWr-ebEM&rh3P7~9EoCrp*iBr!G8c9!)2cC(mqjz*8dtKxhvwa9E^Rr=GsujJ1 zMY)H(qfF|wNBoV!o=fxfhN@$2j~~kT-`qu~*)JM3+GO77=82v9_?MzTqXgloDY=&{ z_wt0hJ(ns*RexbYLhoH;p1|c>CZQRi8*a+DMNymNlJq_J+M##%_Im`PqzR9(E`#x^ zOd}6red2@=F4g3!Mtk!U3xZ`~s8+_3XWd8A^QD__D~kqQJ=0fn((!PoqtVUU+$)}M zqfOOLX(qXoJ~uM!pNdSDe|Byy&}d+bG9}@NMX=_wA?3WQoQHY@SSq;JWNn zf%Uee%7C=Mh;2%AaSGZ8`KxS+7pG^dMqbCl zV4@9dalY!<1D4$Fx(WW12NwI9MyIA(@d+D?7%WTO^$3w-(Zzh7r zaTUt%Y&FWsRpt$qBGa=RdY&R-*se;mxkZop<~QcS3!WOXeq5>_l8fnCGrr$wj}$D( zuD!HNwpFS^NqZag#E*>IXv-w3-dZ?t-}hE-t+hc*l`(W@;cZv$nwo8owv#M3LvWbr zmM?v5N;dV1pWEVm?Yn$l7M-rgQfEk_{y>R&!E7R$2=f?io_$pw$Eg?|Iw%n7Rk;l* z>Lu@wwJ_Cc9y-Rc=%x*~ueQ@4TYQqUfNt&aGZ?E-v2h!4`QlH`9&U^&tKd>qFCos^ zWj&_ z_)h!JAcMJr<81JVqOy6k-UvAx9jBB&s~ncXZQAL#I&;JbA)hbDSrsQgl8ODSX%z-u zNPo^FsjqIwR*yVlq#OM{qbt2cuGVKJzN-&t?|AF_b+aOJ$@Aho!t!T`;jTfZ+IMZ* z(*DmE79wjjk57`C2c?(fKAYL!PgKq!!UGb7exg%)CQJuxSr5We4oMOWhP*3&_$j}` zR@c0QB{t_Q7&6NfUUa9;m;H~vu05XV{r~Iuee*pBIbGeSLh8t^8)4Ro8i`JIl29s@ z5R+RoW~U=oi5=up%2F;lg&euX%q1q|e#;nhX)a+h%x2s7{n_@RLHw!Lsrz?sU%9a)qF@5=-Amm^BZA1I5V&3-NC-&F4 zv(E)+T4!nd6sO};8^kO3IG!Epz z_<{K?jC(l^s=Ad7)M>{7d4wJ<)}SfQo~?zKo}E5&+42`fqX)0v!tYV6*2#e#1o%<4 z62GLnetJ=t^SkLy&~p-y663s=jkwN-nH^3BhR7|Ze3w)=WdzJF@t zuC>pq4gFxF=dK%}JM`AUYveqEJRECmR@W1;gsy4Rez-=yGqgS#c>B5P_0n@MEWkM* zVp5P7fOvR#r&5jpkU9uK8V++OEuJ=%G1ag#ezccW3&nM_Iidgj!g_N#t1L*LegJ>O zX!u7jUyh0Jz*xGIA%he!mN6Qc5i;C}_!Rzn-=?GXLxvYGZ*EOtS+JTD$GyRWb z^P8)}j%)h=B8tcABbP^S@(*T@ZOi0AqI_v|n^jDz?w*wp z(oe;EfgfY8om^T{MBt-Vi>~XzR&$XwU9MM0$l!7(C?B5wp)^{QIOrg!KN7$^8lPSD#!-pZ7pVA%mYNB2YC=Po*D2g~CHoq4287lpa#V#Rk|QupLTq20v`GkuT8uf3(x`v zF@Ci%0POAVK5JILqe}=BB@s||PVWRpq>l7h{RB{b6{JC)@r)xmj^+lE)v7)-_E)G1 zRKUDG?+K3ajB~GAV=_SgXy_zlmv}Mh^TV-Vk>hf36_8$`ppD-V4L&Q$z@2J;J;epR z`|<4}wrF(5mVsb&g1godEkt8Fz2TTb&<8sx`uBjQpA}fjL5UA`%_U+jMf5N$1K02e zFJ~*)fN&4s=p?jz)fv8x-XIwBtHynOuqqmq24F+-;)Z39fQJHz=D>~4(DP&gZ-HHq zl|gSHK?*)g`|?0A{}8yN-ReOCvU zdX+H%@J!zFXHckmJO%amN^FGnM?Iy&o8nrwk#>j691i{K=FLCD|)N`|k}0o%K%1nxBs zg0KQ8t`pyM0AvrQ{$~RVg$sh`3Qp~WG6fmaV_mg7r)D3uHoNFEjm-W}ah+9-4E%?C z>hPm5SGE&H&6VBzg1WcV20PlKhJJ|OdIHE7oouVyx`?Mw9+xs zP}N;l^oAGa;q+*Q*)0cI3V~0OH>zS%VH*L)pNorOh7zP;X*!52iE4ftCs4bHwtGIm zeK^dkvmIc?14&)XturUwB!E{)TAzmShhP~^2;om2$uaM zl>Zb~+6feRf>+!&k?-wHAhtKaLP_-cia5^kkfLr)Z-Rm(>{x`XwVdxhn21%dg9LE} zcEYM*6?5djg7R7I8!Cr{Jg{{&ECUNxla_}*%iaT$%H`Pr@%^2Cz!`s|qk2FfuFEv| zH$x$Ifs}k@{wR>V=a$WbDzV+mhOEsfghUvz{27!1kL8p_|9R#}HsjcVcmJTm)nFky zrNINgp!q>kl{9&>^Cp1_e>Y#3wu4sS0XYu{3IiGl+#ml8iz3f@u@{xeGF&E(nSh`2PjncN}Yx8fk11Bv-p3-{yk|#wiL5~#; z9%wiW(6t=)wz-KHC{6s2HbI=?gi7b>r4lAWZE1o@CeKX1VJuE-qPkLxblRXD1tC!Y zTl`4;2*X&(yJ495lAJp^rmRAGCBbQfEmk1KC<(5bmN);S9lPZxullzTSwMR;P=2+| zRaNC^O8qE3mmtTpVKYvY~SEa(|7Pyr-!60!n zGUWYjq$$UR(r+45I(gW}QB)xGVi)?LDiSDpVs`t$rI_SE`Utbwv9N*Ixk2y7JD#@O zM>U>-o6vti=x)*cq2)m}M*4(>E$SYR*w++JxNy_ofLU~-ic(b=0FNs@9~%$e&kCXK z2(%2H`NQc|$>`6E-c;3Fctr6?0W(dC@7{t$zmIPSJB}(HBP^%T`3PQJ&n3aa2NJzs zKzFS~>XD6?7)c1Vo9Gxk4)f5r3F6pbgcySGlbYfYu%CUyO*iZ7rl`d}S6JiDL zOP{-`0Pj5|FWrK(zn$Y)=mqsX5GC9YQi2fgyCA%?o$|zcYsxvKMzK%wiZ7qM-~W0~WKLcr!Jr=H zrl=)ahZo5|Pn;<|3-cz^;Y9LG{Tso+a7O8S?t5+xWfVd&)Z=;6g)J;d!O_kfLfPgE zg6bqX9`7uzr)IP%SwOqJxCXg2&CX+&pp($lY;hZU^{f*__A5F8k`sradP2!eh^OBICZ48aU0iSVwqaE(!)R zgp3Me5j^E9=ztuPr7*3!j^O2>oQ-2L2c(8nG2Slrg>J4!EZTt7>3uEDLy=f|OO|1{ zhu%45JK5>H@j>s8{*IMZK{ZRbjX?#!!UR2dOkvQpB|4ZINk8qeHY1t^8%ozPse0ub z%55;&0OPY}xKXO6rMGsge40Dd9o(0832VCfnm0FJe$MRBjlkD40uP_z6q`#tEtCwE zT#RU#E68o}CB9tvT$uvrRz@o>^?fJN47Cv;_6g1bkDzpOTu(Dmfzgagz21*~sz9os zWu#f z>QaQN-CKRu-72D^t}YDMq3Kw)7b%61lCb?DhlU$lVwBD;1F9NTRF2jNy77pf^hkaV9ll-<^*-;EKg+m8N*=pU)OcNl!e8E1Cwl5-mHSP@a)MMe!f=TXo74z6U#(eKtu6wsEy&{y?ud@%0 zo+;y>+%S8d^@+)pMpow13&7LrVSK#>ygV28q*(?JoB224qv1R)L!H$1CWW)$qz1YG zZMzZQ#3qToP;(9(zR>GS5IX#1Oeldz?}%RuYdLIAaOp2j`^t@&wo$<>R$}Rct)6zC zpG??CPGCoK-59m&;IN)^WgkBhWKhwHrlp03y^gT>Cj|zkoSuPOrwv}DPzD~xpGgSb z6FmN0Ry~w3=eW=~?-97>x3r4bE$=CGRwux9@g(XEVZVXa@y$4Qv{9+LljFOlOhd$hkxLaa;jmdrf)1TN z8S0VxBp{f1^J9G9EV5ieLTimVp;KJL$dl29!j(qX$eLXd7YVq652vq7XH|&ZKylj@u#k>#YIbT9{DMhKOFKp)mQ7<4BGY98;jyN`v z^h%8c9N$oUF*7UaPiLI6lr&*V4;xfpL84dal1W!VuQ$Bj_~W)F?YjJKgbjxgJY%6JL z^WdGY1;de-xY_M#B}(gHgKipfy&JsVU74IwKV|EvoPCd=e4<*h_r{(!Ma-s!$o}2F ze$L$i#kZv-4#`7F4{bC>T-{;7GCJ2Tb!;uDy8Fc2IIjTP`~O(qU}ehsHqI*7Es z{Z})=X^Sn7Av}52zscgV|PZ z?gW0{?R3$^m4$`9lKE#F&N2Bm3kxGb^TN5So)!~p@JMlMZ}L-WY>ZD$C2iKx>v4=_ zlC$gyMh|9EwF#pV69hd0XYueo#xkDIh~oV4gTZ^-bRVr){1bWh+X|0{(hNq_yt z_-bo0_wsi7`_}8W%)f}N<}l;+pMbyeWs63#Hb1bncZ3mcZmsL=8Huahcmh~gN>KCL z+Q1eOAHcq~LF!aCuS`8Y-QJW7w6%|sITy(N+V_o%$AF)6o4)PPY1pRb7ab0Uq-}1Q zQ3QreqY!L#KthtE`dnsKxljR&O!uq%jtyY6J5k`1vgr|NIf*7#NdgP(}((!qy$)6HmI#z1VT+?q!);^uO+ig_Vcxz%^!X6e{s>-jAabQ;ctgpl8 zIGb}V^W~%e!p#$z49a;J8IJXKD{s}}0@;fB{~oqK7&23xlNWg{jcYtu-xHvGLyY<3 zb*9bPyAx5{#WI5vjW194KI8#N&UdbeIGF#Z5D8%-}m9f`ODqBADh{lh($y3wo?gZTNQ@y)CdO=U8e5JVjm5&Ew_^r;} zr3d4&mrId%9FV%598|Zeq{M{)Xlqgu*esva_ewp}dP66pM^3!5e1S$TZ}WW+Ke$a# zMY_~wP820tn_7_Y8CUvO>3lL*qG0TT?5JZ*VQ((_lBD8T!stPqy)N;P&>f0bYVVLq z^gUSMx9dYqkF(bAeeZJ!deS`|k9H40`#(5xo{&8{vvz1|z-LsRcZs4iD!-y90`Yfw zi!22fodD6>NqXb00an6_Vv`KSN%vhbRZSIcy`{WP_6eqyaDo_{6HzkC3b z;Ko*PqG0y$lgVsGE>UdKA2<6D_wmMFl|-iME6B!_NR`gN(7U)Y&8UL48{iVtllDrg zSlL1rlPjAzsU#Jpz88`@yhhMQ_O2Rj4m~|aE_o;Z32Jd3M$;ZGOMjje<&q*U5U~_j zuEkg+t*ty~90x7eON^@Nfi24hV^`aZ#umb>*7T{45_SnAa($8WxP;wuNDATB#21Y6 zz@yRNSdadh;en=5=V)s_S!tm_jdJm|2F_qj;bbeZKm0=S3|vZjBTLqV0ZFQCxJAM2y!uY*XHCQ|s*H?|&Ty59 zmr}4n+J5y>C1>mvr@}|ABo!5v)?T0Mn|=7GZaQ0-0J)yOcvDOS!tY`1m2h1>Za&%6 zAuEL4(k64n)5PoDb(tDMT>Qk-Q4_s1u-2Wscs16B7Y1O7m)EWJ&^d5`r)Ag6I`gl? z6s-qdU(yeKeMS=Um@_LW`JCP$i?S7!FK%Ty?NYcfM39Rz#kDT4}A;=A1CQY z%lt{BmXci<)!3-TwKhHOE|O~OGrAkyhwx~n+-a>uCmb7%TFcC38%J7LJSO&9#gBtC zs5DhB)MH6cN*S!9cUe#Fbf(|*aFdtD6j2Lf0(c|W5jOTU{5%dtOS0+ilZ?PyB56hQ zNhlg_RFbPl>>XKbcBh}Rl+q#x-vOvW!x8^~%Sx-ttnB z(%zktQ4>dlwHeLOn8=v)h!8)%8OLVSDk@e2V_4**(z0gC7VJ4S7h&!`PtZs*Dx-wk z4AcaThF!TkF?uC_cdo=fIN+2m$wQC5g1bI9@kUi!R4E2qRr@>)% z26p-#QnV#%vjAfOA0V9E+~ac>G7xyG*{!WRa&e*~G*GIB8yYBehcEI}mpjpZv_C*n zH!0fvx>S-Joi@NVEYP%DO~YW1lfg;x{kI9{RE(wxA#4H2V&CxtR%gMoj}z+pz3NpY zW}b@P?RKkj%SOMKLs}X7qpPJK`1_I7 za9J%P7|u${5w1V+8Ggi0#=FsXY;ESEV!H}t%Svu&P@9Z>qL zZcdgplW^%V6ctNxzYA7YzQ(jnaO?e*HxZeMsaIipgTE%>Bf@_hSbQ$RwX?biv-s?T zS5}&_C0Mg2Beg!^BQ!58*%THiW>j-P?r2)E2JS`_q+omOT;K6=`jyU^P7n6jh%Nqm z>8h;F$4!Vds_h{UqLM`fdQ%R9`u_;6@WO?03qq?PM>7j(-mq;3-YC|hk;rQXFmYX) zANg_DsR0jGHD8x^fA^l>M&fYv+w-hq_aAt~wHDVUjfPfnh(CVbTXNzY;Y|%WZhLW9 z>C#(FLMejE9*h2V^hum2PNC-w2lT~N*po^~Ys!fJIG+ThDuxH|kCrO8-RC`0pI09T zt+>gPg=JMwSAx_x@$bh*SGx^1L9>vs%s`=tfS{LZI485xN~<{If)VZmhX>fr;q}_O znv$p`eDh>MmmE@5dR^6OA{Vi1i^KqVTn=a0wSyqamxJbZX$}M_n$K~+jKC;gRl4%R zLfyqAH#0)^jUMPNmCj;l)};e`pq~(Siq@X(^}Q4`Cq-*xPw{dKCHy0`?l?ipQPF`k zOIV;1&nPrD+#=fQ7Vg)@0KGlm>w#C(0H3QzsEG%n zv_?;c-6Uj@=NkWHCLbYD>Q!RX!mXqdtuNWPYj1LW0UNot8 z|AzeE@gwA0s?HaO5jTAK$G$3+kqH5$c=Dw zgOC?H!H`Z)zmVQ29{U6QT0lr@nObRR%mvEN217P!&HbRJu@d*>gGO0g7;TzANjspZ zf7zI$mFrD!?Jt{6XaO-i?|57#6W?mMPqCT7+QWaLE=vqZZ|u_o*f-?yN!*EW()e?^#G zUfe*RpMb7ue)MyCHzQlms|ST}E*j4$_R~IX?K7)gZA`1wMx8FnW2}y~wIwDgPG%a- zBj#j$aK$~RN?O*5i~L%xwn?s0{75h5&FF=?Qwzv*Ftc& z_-ck@g%5%XPv5{7R8U!u@8LR;rTgOYu)8#ww7Z{Lv^*9o;h-SH#ZO+T8$Urh#9$|9 zVY{9!!D0eueS9Omxnrr#VxG6+$9;{rRk##3$j!PWf?nIM}eH}CLMLe zM;WS{TMSdlX}M9`MTY%igP6KrZ{}Qmu$r&;O6+n=PR>B5ZKjSRYK7R$szR&C^Ilo( zOPK86QX~6AAVrg^3wBKxB8A~vW$2erB0#b{yO5Ukl*wexHhgMA7h)c@Byp`p) zp`>#M51%zx9;JdX+GW!NKB!tMiKz>_%)A%As=c@m|6pPr9qvBSZeWHkm7|bj*CwoS zQ?pVMKQKE)*nU9BMUiK4_u=5--BvM?+hb;eUJcGJkAEl#&rEd?2vxgu7!MtfbMVuC zKzYc`=xF3@aSpv>Vco-DqHD%6BXb!OBnGCm2Nns4PD>+A715H7M4lNEo24?l1;;1i zZ!^+#Z;JikLMmw=aRoVUQ?Ludsg6k?(BYPu4;a%PI+e5nXjMlu}dm9@D>^>aMs zD9n#3&}&XRyR=BluZO-!nXDlmA<34dDOyyNYts>RGxlP0GGyYzP#+KVHTD7NE12LF zZ}>_?TWBB2JBqww%e0j3*ooR0_|S{d3RVF=v@z%;Ro`{LZR)BKP*Kpz$$zR*ItaLf z=+Vg2?;a}t36g~m?zZ4>E(f;m6KCGLB%DPx{2=)uA6X;BACRlH!){5Fx7^|<6BBW{6=mYvV1TMG5={+M^24tIHz@hQp6#N?t$=P(938=YA0TOY{CSfV(WXL|94y<6^H zx2Kd3b?OEVGlO%hbB%h4#R(pOb!IT*yZCZO5_IJO(}GHmvOl-_Ij<Pc6%$ zguPGd{SF5q3;)tn#&utd`9SghjJfZO!MsB#AW3-6ex$?iA2=Q9Yc<^hJ=ZkKdey3n z;A<>YHYx|y^T8*orcTt7S4WEdHX5Wvr^dX2m?GM^H!}$t3pauD_9DX0un72m!q*es zySzaj@(gzP%1l0a3;SV&`Sb_g`d{y9hEj@K=nnh0FN$lL@;NEl5Bn&P& z8ykx)H)LuqH}ov{v{QS1v`3G8$!TU(n<$onjWb@%@F*4Q_8bVRJkA8&^D)7% z4X%70ET5xTvk@j-;p%a{(G|0I!@~zws`))q6fiu_Iw-Xf4Mb`ttE!a9Zp1$}fP({` zPtjtpg#w_&j0{3WxIkd}b>cs10kKA3ov`F5HNTYS+bP`t3^8!Xl`*68A}1oSW?49x z;c8@z&6$AT23mPrJc&Mz_2yipi$QjFK#&YXp}dCtxAaiwl9X!bbo-Z3XDvtWf)z18 z&t~pv&g;Lm|9Kk?6yHR3_ItVPWKrSHmVX9a1n+Dv+zGb1i&1}H4d0*o=ARK*JTY!i zZfP*Id3P!@S?%{|Oh|3g4oWTR|m^V>-doWU7}b=!WqNVhbGPuQVD z6sU0mMdp9pJwil2KPJy!NZ_a`P#^v|OpI3;nsbTDvYBKzsmr(yR1-(Ik}&pv;Pd%j zS-7-h+t@C-5P5!#7|{-q93~w(HGXNgjS@yYzy67ep!ZUJRFuX@6PTDa(d+r-gwYc# ztFPvhA6cPhsxU9VRnj&YrD13c3_3%!CLx~t6s}^ z)|;P#?0#PIj<*w{69nhWUUi&|%#iZ~28DT&RI9ku%bX=oAjo>`FAZxnO4wy_CixbR;JEGHtqmQxqy?6Pls}9MZpp`Q^ zk89u-_+VkL(DmIVIOXHw;d~*fEdEP1fBW1Ui{V<@A>(&v-ObBiTJm2n@ z&R6anD$bWUYbB{7R7yKOPR`NH&?QJ^4Auhd$oq*MW^+A!fPU*l>}#fd#%XPCOIAsaYG9ye+zsM4D%NJX=FZ0JV;LoIxU z7Zi@H+m16X_6YuQQNFp$*XT~^JflYRti;O?6TSzOt)-4+NgLHZU0L)B$#Lh zOOAV!kqMci&F3WvJg2KLhEOKr3iJ^bm3)!2EwrLvfaeyZNW%}zJ63eq%I}|MBbaC( z6Tdy*oY_11IU&4NuZEkIK#uLP%bftg^5<->Dl7mUB%F5z_5nyRf4vWI=bO!UOk~np zTsmgC^pKaAiBQ?v?15hpuj(`xC`tSihioiX4bYn>IRm}rKI&dgp|PFV!FxxMpI`zC4;H+_5*QD{@8VUJs0O~z09P` zo(tr8S#c5?tEo~lQJ=SlE^dlZLOj;q&~vGf3WP_A9}WR8Nx~skWSj|qwwb|tXTtaK zCNT!XWdP&lCEg)84;hucXppBOF}xc}2IFI{N0i_k*|#43eveACpX}%ZloENqNy0S$+d6f^{Q+v0?JMfwM$VdO*{h`7GhX1_0C3cq zJO{HQ=1YJ`{kTuMsZ8G~y`=tISxG2bDt1U{w(umL14jQI$qaKbLO+ z>;3de&L)KEqXVT9QN5+gJ#%^i0qAy0pO|no>@vg$8pwQZV=Xip+3vrwc5TP>!fXuc zIn-tIu{2@7KE?G71Nrk3!+ypYzA5?2M7ibO&&t#8^oPVfe>+yTQ zPx`8f9f_303k!7@x!HDle(Xf&ZM_*k%k%lm~#2ir>JyS*Dr zE4M_=18i-*^hbn*X+h#Z+v|0mF21IQtK?95-b0z<2t2@xod}dfmC_)#oB1>MDSqIg z69ONfc$xZ#t!m4FGeIggqOmO-2sHOLZY^a$ut(&O z{>iHqe)(Ymznft=5KChnBp$G4HMJeO1My@g2U)xX;r3O!2!u$PyalBh#zXxZMU%*F zV91b>x%*ySeXp*)%3eTS$A02EV5?-+!q+$SU1r`$6qeNb1rO36e z0^>cr!UaAAGDCi#yg9QWvrl5cR;GsTz0JnDiq7~HfqEb^18$2rVy^itZ& zm&^qbS9=j=iR>PA)fX&S>jNqLJXkw3XP~~+>oy=g{dLnh0L|U9i4SkYU&+Kq%GjAj zmntxIDZ`BrQir%Y2z0*FK3S=QWm}}f4wq0h`0)tWlPN9w7@qa8@l-GXG$%2jl$j4t zwG2G@%Cozb6q(PfpMbC|Cf54JUJ~UwxeIY)u>brd;f+7Kqyz{YHzLlOfw;;$h8+ey zmC(7T!iR*#?V*w!Od}8R2N=Ed_Ue>+)iv7B$ly6F}? zo2ym^SXlVYJ%<7S{_1)UUJ$XL-I{0FlAkf$RDvYthXQ6fv~{H#z%2cuTg{Mml{dvz z8H2MZ@MpZ9^3s7{wj%Ba&eDr&*eQ@TLv76}Z{o58G8Q0Dk7`mM02e>Yi9~3uW zN-90FHj^Xfr?R0|(B&OH;{!^JJb<2O!|^GD_tujJAhE-JF6fHTU1_&Q(l%jEY5Vl- ztcAezQW8*_`!Rz6sAW0a{U|gAr2_{n0_ZAFT(6RW=#Cs+PvW zy}fFhEdV3r#0wSDpOJTJw5s7Q*%gnl$oX*S`OBR;rTlnLY@z)|BR@!@r+7d~u?Jt^ ztc#Xj&nlBe<&OlLJc@&AL&n~%a0pRWKshB7?Ip_TM8}f^Mto9+o-idxlOJ^(as+dD zh5vbLu(%2&-IXB43HasBQfuUodxa}ObUg`0^BRTEdUJfW(B6yPDoUejuQ28X_4_pV zPM0_o4t@b2+N0W*-iSx*jvtcbRoZ*U=F=An|FNsOPB*1!^w%)jY(IpJ->FI+UWzoq z{1lY}sqhBT?_FWyVhZT!j6rUBNsXWfugzR;v#QlxCS;q58q|P75iKot>{VUyDUg(l2>wIdCF2q#*01_wdo|^a z2v_n*tySf%cOjX%SJTAHOV9D-T!o2uqjSvcu-`aP_g&_93 zw;it@bcMHwK$6pp51&c_izgr9iQ#*%*s$e!YA*etA*W72dNoZ8>hQdEh`WKvk6Q2E zzII0L{{paHTCwV_I^pP^fLmR&8i{U|ZuKAIV4eY;oPZT~w(sK|K7Xd7VEYf%g$#AVY%LmOvtmwt%j;06WR6(- z+*i^!L=0H*Td~ioojX-QF@<&GbXg;jbo8v7=!2>9x_^~~>x8l3v)>umA zqHJ#ZS*E;nwzcp0X4Lr=fbuQWVBQ)?FtV(7 zX!(L4tV}8?Y|vw34ixo%#?|e^MOgX}5t1vc!PDi)SJUt6zDa=BKL`MT739%v8WkFk z?~MZWq;3W+U;j~*0U&i|R8+3Q8dI@`OUmA~!E3BPa~P;7e$dEwU&spIJEh{ovEc|m zjRC!%A4O_^5aj(W-bw`==FieI2ClrJ$Nzu+OkEr@Rkjk7M~~b$+C8me?^(AW-jRS= z!_t-lti6?@my2W*`~-a7(%^@$0h!Na8E90`!b7ujW;B*V(nNlmF|}`$(dFV(G*+|X zhY4gY@FP}FiglJ){^{w2o0?CfTE5_4sCU&^ZT;%OuCdPV$oD@01XCFV4}nCaEWAEF zhOI_i@xSFedYy3p=^|>WSi32d$w_l@ zuE5Vt+6(mfm4KgE6>|6PKQg_oVnCX_!jpdbohj@FoDMn?oO%6Pj|?_F%Bn|3u?&ft zISAD)r$zKHm#ocrTR1ix9&}44rd?m}!*U+{Ss8<_!Cqr)hlgkjjy|S*A0K4C03QTJ z-Wc93A(Sci@VMTsb1_HeF7R>QyktCgAwswjo)b7eOXZ1a84%O+St`3%LI+M{cv39* z17e+31f^^c?_!rczzjOgYxccwWulW3_y|kBRZm$-IzY5$|sFhYTRn4Lc|z;qo*DrT!vhREuB`Gm`Suwh(!vzKxZptk;4M zwOtLIyEj-T*ZP@rgkm2)%@Hx{y?qHXR(3&Zmk-N<<*JV$;iMY={e(OGqd(_^$B*jcdF%r+8g%T;?UX!X_S!GiVW0#)vP z_8(phjytp8bJPnmp!(%*CkI9X#0-&kk5@L5-3~Kh;KDyu7tk4rR;4+4JhFk!BFB@a zW#o_6nb)unKrqS5mu(*h!YS> z_Am<=AEu{X&uRDGLLAj(>XVoD_5&FhT8;MsXIgf1Avv58j!Q#LyKjD7Gq$BnS5gIf zsd(x^JSFBZkDcRc6sm16m&%w|312Uwr;NsfxIXCCZwr4#UimbBA~rA#L*~nx_)OwP z?&P*qCZscg_tJ%Re{z`_r#F9&8=wg`Z)4?uA(N(ZY|=OLZlL*2=s{3Pn>r6zwn!g# z!=;|{>aI}3OP+H(xI?d8iko{Qfm8~tu!28N7s4+s!@Xa)WQRC%jaTL3iN$mEqj?jr^8#G{NJcyT|KOp>y+2;VN^_=@7vQ#PZGAt}3{W(@5MQtVAFgfSAp z*lFQ9b+><@t}YHJZSGwhl!K%bsZuuGUKYxcfzYL8UxCm?6JvIb#nrRta;A^kDD4UD zqx26~yY1!U<3Du=RPBcMYv`qmn_n|i;gW_c;r(A!Odr7nca;-}jpG)2)R2O@UTNpQ zIY^kDnEdXClj>A5YK6+UNz2Q1=@k9F^<~*A|Avdc0Hkh@6qDB57a(znI{x9U%RV!N zJmkrn0xzn#LJ=?LhwJFK-kmIAPfs$QzIZ}P(+If;_D>))3uq^lS848!H_WIyL#t%@X zNIo{ad(DfY4-@TaxdG_oTeXs0W{BWqgYImOgTl9+EK2f?n!!k#UPFh0ui%ezvAPAI zL!=)_UZI{+FqUaojUROK9`Hwp`~`hG!fhv9*bvv1oZbCcrFi5YjvO*<Qofd`8~LmjYH>yMn$(U}6HubJub6(-=^!`IsPoS0Dgg z|Jz?&d(Q|>0C-?>YcEc`hyM3F1LGnKH-eO+pL+Ehv4Mz+AvM2FuwBrk%xZ@k4zT|9 zO#)4n0G+{})|fOW7@RQ}wp!l=y)z*0=G%)R(|<}CTf_DCD^qcAfr-Nlff1bX!h#Y9 zx!9;ujINRq<189T1OI{VBip0F`q->C^y$L;IB7ZZT8+D0AO{rUgtF`ba9)q10*9>y9XEZCmF# z!_U|*KdpaxX6=I2=a)WlIgb^O$|yZ>F)XzH2M2)u>?PkH7T(cOF)+zZj7?5E`fry3 z^33MfIo}tWH0xb$O=BKh%XzC=P{b%4!L0RaZ`3F@li5$FlheL0{6^tn%D>znP>fUi z{?D$W5UhsF7@xXCEn{}$rIL~+$5ncEJ6k%(I+Fz77xiLtTE|5>>Y~0$Zb)gKu%#M5^L*|a>_+DAhDTtUtLz2<=>{KAIxW0`;HRXcdqizz_RyxWFE6@p zedshb83!DrKLNao^pJgHO)Y2t@3e)|N-5{wpEn8ufgeC<+XmixX&S7TN zv8?Bqt(kS@pR7S$Jw*#%W_+@Vl^juYp9WK)!tM(`ypzeng_^hk^>YA|&gmQ}{`{hK@iuF`XL>&!an z<^i3LHxExaz0OtDm_IbmmR@rwobmewy`&l-Z6_Qur+N-(gT){%_JrvNanOmQz%b1< z(EsXnPWo7i{)ydjKQF_DP$9eri>gwUa>^dM@L`DuB921Ld%x;Z5kKK`7_{(+`hnDdKsy$ z9W4N$FcJE-g&2{dW{EwcgmravR!}L2YIu3J^{#lB!3y|Pf_{Oq=JdGA$6wSmT(|k} zeINK)k@i(AAX6c;@OZcLMABe;;>Pi%?;?-+e%y|v>XuvvjK)ZVuw; zF*g%9UTuq7eGmIo9V_9ZOlP&OAJ5|6-UB0djG7yvWX+x1bgCPTg za&+R0fl7qo~ksech;qIadGaZD5rVRoS=AnS3Qn+Z3o1Is(}F7^|JQr8cFoR@72{ zwcEBdpk<0QWs(KBhL?)1Zp|F!C(X3AhPxNX=g08nFD;yUaLs+Bm5ZIU%2Ul6DEO?C zjh1D})Sg0g{)RerJ`OD*zo{7D;u*&GczmV?;Ga#0Hu_B0dM+lj>FSY+mR{bPz+{xW z%u-~{-E^Hh%oX_gcr4q#aZf~orEJRcbGFN+a4dVKYS25|?~XyIdc1)0ah#Qr?72KD z8x**coZTTCEej9UBfnHFOzFz~A%OP`ULS<}yi+HDoi;<=#o+OwJ+KT4G=2I5YqWY1 zhPsMmpyS=hn5Xx<3@NlJN5-IPBm|-7z7~yb1OR8?X#++M+UKBzZ2>@+-Cv3@o!w z9R}-+HYsFio1*5){YCIk@2Mn%iKS4K!-g4Owb3`4D9xr;ur{GR$}PZ|0}UMI@y4vJ z2@!2)0JCJqPRVWcLUB=%Rk_NpbN#f{!xlR;%QJp49cD+k6|kIhp>e8jYBs@bOsD$T zxoDUE7qLa}jM+I>=9^v}J=9{-c5EvK2vwZuYW5$OIRP$nAJ7XJ=kxAMB2#QOG=h20 zSJTKWEVv={er)VYX)qYPk~!>?EFvcD$QUgg&9gLY|TvY8uw~uM3cZXVa--)HccqBcjnlrR)Wx-d~_)tw;Z!Iv<1B#MQ|F&;6%@LyBYFq zB0$ujDT*=)Yef4E<~R@Ob$wV;q||9K8XL>i(dL_v60^|lzQc=t(~@P3zQu9>SUp-F zSCg`JNj`Ss-EfIyG`u_5uRvNvF3X4`0yOir;1Dp3NUz;Kiry(uK69#GI%--lvwYJE z6V90jC_ysH^W`{jJqixI8QIEM@Ztyy7;-1TE8XrdF3?>#r^4E@?mtu*s2c&JX9P3- zq!IlgimHU|cc_0*MBWiGoUNtrVQ#n?obn4V#L}WfZt+dG@8mNM8^{7B6I>i!w1xX_YVs93cj}7xE6M6x%?r;X29}&<#?(ygPBzuO0q0NM;nrqowc*SLou8MNO{1@?;flG0 z%6Kk4RACVD0jh^`R&69i6k8yhmid0)IIY}!ss&a#6KeFq61f&#eN$Afao304+OE!z zN@YKgJ=h!i?(3PHn_@J!u`<50a!hqfeZ~Euu^!Kd?{bsi0*M{m(ls#Tv3|y{#RGHL zX)f#t_j;7vbM?~x775`j#bCn+MdK;bn<0aoCLj9b=$G(Sl2;TmXRKK+W@(Z`Jf<8v zmtYwN-Sj;Gwf<3Ol^b`hTB;yiX5T5WAe?)p`D&h5@bkmPSBGO`EzKInjW;zAP#Oc> z-Yz~Q7@gQ(^g#`0XOI~Vj7Cd6{3T#z4vNJW0!vud^OeL~&tE&p-zUS<_P3ZDg>S%J zC{8mjie*4oeYrkB#Z(;k5TjxajS8lJ%7+mq%THv?rMapc!(H0E5O01TPdO+m7Rtz6 zRbBRoRY;)mW8P)kZ#YrI!z~BN7ar?f@K-f%@syJ*v9bkT&I5Y=>n4kqTxv=m{ggVb z$JKq3_IpS8A&{K>C~ujEwLv6oc_I4$CHatk`>PxF4iNjkJ$?X9Y>L54@@Lq~BQgr5CkuU?=!bS@n5I<% zgCPK8Llyg85t~&NsO)VgSspz)YJ1Dv0q#;(0c*i&I4R8FvZ|4Q25%| zr_r?R1O}+k^0okB*nhIk@#Snw^UG=RCDyFE*OnJ}Gx-bC&~l%44m0%eLK}p>-$#5F zfJUvnu&<_qA^n3HTE0x2+_{teT*p$3?B2x|Y%ehYUw_NQ`Et{vYV4HU{+~c5%0Awh>Pk2evsLLpAc!5-WN@;EWm47KjcZHzj@_%!u-wa`0Zey6H z9*terJtS}38a_f5_-YPcuPaiT`USxIZHm`+j{$EIZ}{svD5uoZYGJ2Ay^h+n+b)RZ zOq6j{-c^ZLw>Ruq#!eLsp|1^Fnj@#<1a+rUPAA*)?%WAzF`~tmd`zIdP`KN38eEw6 zwEb25*!%LQ|LVr>i$dI2X^(H2s0TR{vSpHG4~Fh=!|xW)^vd1-6FshkZ9ZcHz>t@0 z^~Y;`EqRc8RC&xA27pX>-@5Mw3sW32jJlRDcFrsiF+m_B*bVWF?OABWLt(hqZwW}1 zVs0GBmsl8 zp~a&6#{6A=6W;%5?;=G+_k7Wj2Hdu}MlxsU(0K7C)J$VXreNc1#eTLXOJ4f!gPhMT zJQ{mvtj;(*|5r^qS2$8T6jv!M2;$zk0AM9ifUjiRN8U)z#vTi^#gbDFnz4mrW!1Uw z8ADUiqwj}%3XNgF_~$PE&iAt3i^9|d!N=AvDubc237M;__iypEel9TF3}5S@SESxa zSS|t~z~kzi?SA=+RD^)eO4Mwp)c~c6Tll2XL>D3F?Y9^M&_Y^hZjaeF;}ENVYNmgK zBPi|*cD27h$N4~;36MjR6+_FtLNr_7$al=j5wlI7yj3=jvqqrDS9#{q$pv6%Rvr%pduJo{=V(SO<;R#j&X z_*nb+*TBU3onRo;>3tUU!tTOGoJ_n$?4=Z1Q6_<`Im8aHT)<& zRHViaH+bnk=P)QM#Ujj)ST5h&kb&;sUYy>)!WgcU75B+kK3nld_eRnFt!O;=nF<=1 zT%0gi2P|4@F6qiQRT-aRD>F}nQkO_t3O#FH@`?4)({NR0MD6P)o~HeC-joKsM-jZw zX`*dcW}lwQTH>wg&$0HTY&&rn!GPKO{Go;n1e_Tn(jTy@Mx7h36~Ha6Zsg)(|H+6? z!kHzKYfF9(7g=N6y_ajrzOt8Cc4{cMBrt0q>qW#|Y3AF6cY-?~Gp)I~0gjq2-9lMr zVjN(lu}hd&4IZL*{`w(2ML7L-7JHg@x4Jp7!Ft^p(2`q*gpdHX1AI$4r+grC2f}ey z=CGE33{aWF@=^oP2FzmLC9%aOtP72h{i(1`In09g$dv4sxTUUg+6L}7E~iDD*#uYK z{F`711#Y|r{qKUKJg;^xjB*@$RNXV43Hq0+#jD5w_OJt5_oTQ3R4-5acseo#S_1k#rgkP7T>HdZ^6~CWpQA%llhif_eRBeOh;|AO#4#tJ1aJ8 z#K3GG^T5H~&O3mVg6rQLZjsFf{=D+vtd*aEZ`SDbiCLQ!_3&NmMc~aG8eBB=pQC+P z^G0yBh0YQ$U>-BA*b1;~_NsN8vCZU@p<<0U~@yIWgjLkG~vp)4-7Pr@P zg;!g3v;Wf$!(u7$(w1SPUL&&pN|U9eCk?L`0ku=ugb!HKh#b8Z_Mr@z>%PdLIsVn{ z8exI8z@wNKE%*0LbJm2);5K~xXk7e%bG|X-ElDqUx%ABnC`9I|R6c04QCw80p<&>a zch!M8R^!?mV&i*VrZv8~$eTlpm5&yg=TLgR$8k7)1UnGfY~}pr_^iSOW)j#ZsqEs5 zgc82}PKfOg5`JdBzg%@)p`sAQ%tn;rDy8za^OqC9Hk&#MMIrnv;#{Cqk*&TuI{W|# z+fbpwu~=nH6UEK9!^I#|-qVFSiX+cA8(3LO6O)wBYM83&KbTdCN5ekT@hKg_8OaW-TVhZyv=>AO?~2mdUqq# z|F;{)$7ZP2jT-v9n_$7{5Tb=oF6Q#=&W}Z=Z`ffNXXM1=6NHF+yeQ>x7D#)r^mY1%Awr{2u_23~a$hJxGU&BweIW5(?|B;}xM3?BEYO-%2 zz7b0_-)x?L>xr*-?SW?AW|KeP2o@C?vrxsANLp&1z&B}g30K$}!DxJ-+|c1<=8GbU zTxuFUh?|9#A76{?pE(sS*rBfGC$c@_Ag8w9<1lUC>J^hRB`}1BxO@;4PyRe&1&l3` zsY;}4qgjXZMXpA)PXEtC03EIVXil`Io=?xyfY6@xuK@IjaqgNKKB9&jh>6Yj2MnBR zIE!ulwFLSB(3yJw>bU#Vhksv&9Vjpr-S!wA!LE1>b4al51Q)2E{wZZd1anFo7$ukl zF6NjaLQ!0T z=u~y|>SZVRv*|`B9@12;w=unVP{|-d>vxOk8<&=HhJbHbs$S!kFp2PqO;{-YpGPS2 z)8pdhu0CqS|9Lx@U7$!>;Tv~j4uG8WWyC?cIj3(n`uT@R3do5c%DOa}9ulqpX3i3A0`EgDOg*O5;0T(tw$7q;!*^n=^ay>vfa9Ly+?De|~EpFdCBxfHQN#qSjm_T%NoAj``)W|Kn!q2SK;`ZHNE6 zc@;ZLf4~PY^490#r;4X}EOK1RJX_nET`gvw&ySN<-94Z30GKnmA7imNkT>^ho zo4v1F%;v!SZBI=qAQkgnOEaXiKH#$!wf1M|LPgBJ#ifSe+|R+Pii=6!Yad9z)2}Vl zsK7i++ixX9t`Sa$GKnons+CH=9pX~u57VpUCEWc@-E}NHLCS@WB%usOE1!G)fY6XVK%_T1+7(s6P z05=%!e7q{@|6=dW3Z{0VMC)5wB<=eFg#m?|wJKYMoC_ZkhZ2U@o9w3f^C_(+0S;@yupTOG(UAb$F5$KSZ{g5gNy6&Tny9L1M8s%Ma9aohD~d2lGzG!U^K&)@zjUKl5@ zgYKh+(L4Ya{u$G$pkmcFTvB5j5@*1=x83AmmbdwGF(OptWYP`z|uOz*x9x}eT)f_#r9Q|d$Z!NMzR*Z311e?|FK=nJzP#ERM4+?BI ziXwh$r!-@NtwKGE9Y&oBoK4Iz2&Q5Sk~EyOTFfHj)Yj z_Ggt*c8Sa^DRX0oaE6t5U{M7lqs)`jC68fsy@pjQuV04k&x(10&Ko#nzPt?1QNDg) zq@q3;=E*pGZmhus6X;8u_(W*ITMIBJpED2UyN+T8`wt&l%JLKWgh+gWw4li>zAwz3 zFPeUDPG$Zf)3<7aDXq6%x?5EuDVp%4z!}38LXtIV>w^`O$L}PO9B3okGEs*CY!B>_ zwO01}O^#wm^Xt(O`$WmNsH6OM4H=pmdeC<9Iw+_Hriq}p0~8kIhV2O8A1g)SBgMB# zN^h2DNx++Ivc-1FY55n9x*N7lzAA1M@fV^yy$2s!m;UU!TMNx5FpcK6!W~p&%+8jR z>J#0<+i0BKP9G||`>*n{r=y-T5RU965x%1*5+^=8;8Vq{U`;jr<@%)1gDt~nNh?RK zb_VV@#|8I`BvxQey>Tt#2+rVsKJYctOHPX!RBa`8!Z3e=!Cs}c(Wq#lbn;lv={A@c&3Ha<3{Z}-6eH7uH zqD&cDA60Cekhv2+6-pv14P3C4Ac7+bA>P8Q|7Cc zD7P)a2%~C0BZiELxi=zV8Sxwjo7E&|-AG$6hzRLF`c2^#02Df|1v6lkpKQqpII$NY zg_YK>&t(>`^z;!`tRBk&;dAfyk_6_cgbq@}i)L05M9`TGKjUd?{09i4S3c2jjd;Uk zq}pUt2RS}f)G_*35JOvRpgozmiWyNB3=3i~4r9ITt}H{~lc>6ZZ8i*Qn0n@ug5GvI zP|_1xKJAnJ>s2;n__aA!j#Fk``^qS&bZ{E%dZAaO+bXUF7NdXh~hw^2E*zE`;6Jt z{+vtkVzp_wlt3m|`Ifc=!lBEDjh0mtwe8Q=^qjwC8K3bhIV97eeC3X#QD@u4;WzPc zueT8gv!t@L9Bu}+n6*t_saZGu;b$#j4?<1DLvWb$9kmB z-K3HYl(JyE*66{}Z=bFnf_%ts^8&_-%WLf>BX|(!Oi;Lk!h;dYH9AP)&duQ55-V9b zwXp-YC*NXO>gnuYsY2o^^CyF!DH2l&QR_!9ztpYhtpvYfafC6vrI}1~EXrbrl?Q5< zr$^Mk#Mw+fA>6KSBiw#l|5sa+Tk{wR%kN$Ruh=|2Tg`M~JrH6vTducuDc|cwa_7e& zyY0+*5jFy~O=wMg=JL^08V!wd7w8@{E2AGo_;`lWh!4lyM3dr}gJ+k@A?2R8Z@wQ* zyc%38<;}Re!pim{QoB@2hGAQ63YS>35;v&c!gGzG(;fX=r@!`N{D3aBW7$&KJPkPRJw5rKH+$ zHyASI!hud2Ch`_0V07icv6ckGLJyE%MMdM3%?F32_j=iEs|bB;mBwU#28TQyT#pEM zY}FLrJjs8YYc5w%2$`QN^Jm6{{49Q_qK_q9^|Np6k><@HM>! zrPzOhY&_&ObiX3vi3%fI>J>g|RK1h$I=CG1lQFiy$zP5bF9ZAVVK%vG{HsON(8$oc z{wP`WvUwSHclm4W&Cd1*KY*o&ff2NZgM+?S%Z8nN9Xx{ z5eCY-vJ#XE_8Bv(qGJO@u#%Q8p9QKm%4$xn#B3gjVPdLOqEPZJ?L%+3ARabnXyUz5}A zX*DI3db&i8_uPLlF6B89epkKsg6(>&>xh#t-qWse4)IQ!O^?Mw;W&gnmDXFF} znBF{?k-PL?&M*9Av4loz9V!gym;)6tmBIT4JkUX3?x6sz>1@QfJuvIn?m)EZRVIea z(FFvj)k95?MW3edlm>!#db!8AkP|A{P~NZ|`AsWH9cMM3TZEVH%4>df(ud%Gn^h~{ zS?+O{bv}b^RUg#DC*y|lKFe*q!hm!uIi0Q7Ap4<)IYa5qa(gW0TAvj}2|QK>4E@In zTB@8TmnA1#%!;HdovWTW@t13k_ciAFP0=v6Rr{_{EQn|Q3#h?hOlGc~E#Da2^{VUX zob=m>U*bP{uBo~1sHj-wYu>c8AVLBYW6!LQsPI6H&xQZ z29{|c2M|r}oh5GY(UhUPX&CL`3-J!M_v{cJJ3A(e(lGl5g+$8trJVCI5M{;q76Eov zo2JiG?foEwdN@)vv`(9ys!}kq-+(kxSb0}zpyd6G!-2A z-6z6{k1=kOMO_4Jwq&E{6vwV9`9kWW+Fq(Te9BCL+|bXrWrv`i%S1pgwyPm~VCQ(E z=VVFA`X)UL^H)0g(^`M%M!afHc2#p5!c zgRJs>4qVpuHl_x}`|PR#d6)LJ)bni(hHUJc2Ctb9y(dh9y@XP}D4MX)i5|x752o!0 zcmbr(wu#G_QCfjC(YR8cJHYukceUvX`x;qnR?&jZ=>8!I0iq#f@o!LDPf@wpA7sh0iwRBW9O0fz<#E4O>?mh0vA zU;pCkP%hue%7K_zM7a4)hl42B)&sns(yCgrfj1-W#H?`lcCiFt6TL&)76B(?5w!K*zPJZ>X_YFEjXq- zuJEK<0WLdggsK%Qi={;CIb_<9RTOuURIdF2kbue&(={RhQFCpL5DL%JQ;TJ5PelSk z^+>bmiMwa&k|!UuRDhJT(H#jRjMkgZ*G&R|d2MT=b$rYZVXQdX-@8$EBM_d2!SBmP z#ixub4CZ@r^Gq3tVw*KxIsEOoSmm?A>`XxO3-GqH;sj${3+$L0(1!AalN$zom699v z05j7trX5*7qUd`kJ%aLbZGSe|SYIOW7HfZkiC#7BM%9#U?woPo?sxvm44=(D0WgI{ z#jUrk^Y~iUYIc;b0w*oH6C|I@IMWk1;R&!D{V0%i+h;7HFmP#*Zsif^e&pljHMrrV zn#2Hp^ntdv{fr{6==901gBT+TTsFsKi%`G#sgSVHHvMuxq_aVa(h9KF+spHWz*_$n z;id>|_o@-HNXyrh4o*>p^*w^7AwTid+-rw0pxIP{s$Ip?37!I69 z2j4ODfJbjn|4S>+{yVLz>w!+$d_g;n<`aq!y`_H8o9dIoC-1EG0M-b2ocSGk!odIP{kVSuJ-KX=%^jX{O1}x>oY@WNexZI-hHs42X_o1PoVY~AE-yP8@ zAEn1e*Ob{+jeb5ha&b7eEV&0U> z(H+5{ALeIFHse$b+=F*>aTJ(r9UWD_jB2c>uH6_m`YEQ_7DNeW`sAi6a4N%$oqG4Q z*0eN8Gm6!sF7d0J8O@Bh-`W0{MK?v=v9nsv_IwCFp>Ok$E0MUEUDzG1svW~tE_yi~ zd{{Bbqm-!^Fodqgt>g_;8^cyPYcm`8Dz?`-WJ{pB1f3qeO9wpGnW`OopRMi59_(?H7q@AHc0VWIaX>i~vIA`=}3V;)kzk z0R}6Jt@(F@G$nsn4?_h`mVSdv?Nu}z@ZKurjhGyhFFbh;rhx_yipXoek}UgSG-;({ z5qdE38?n)L4=_$(QY@}0Sbh)!?6R5S;O4ETjR{zZWjFz#VIiS>@>I?MCw#j}>X;n; zo5-cU?6XBtmzAhRo`c%Ri;sjiu@3yL5z}Qzu;^m|z!Wl%f{Yf<+02iYYaQ+3gt=aI zRyP7Q#5aMn9N{fn&(1Hfg#EuQ~RiNo4I*w??PN-dt#e@8g3Ca9{V&(jC| z7qv9-MHrBwVh3g{)_Hu4X@65*VdX2Sf1r2&IP-u4TW{Gqmy_r^ejCK400*UBZfR#9ORhEYgi`Ge?ydp#$P~wo~-Z!ZV3L zRQJaf1cd(O6R=x-U)$mCW`OiR?@3vwLlB*R4>{2mi246GL5ZrB%WaqJrEfFiz2=6nJp~T0w@^#uqA5K#isj9T4p9F{+iL4dNXnHY_eNWS_)B4 z-2;CY4iIiXY*AoNENyE;wWwd}ku0wMk7ETQ3oK0s2Mz3?qOI+X@fQ#y`A1^`w|`bQ z%^Dj51tBGZ%YgNnU`;xJD#4GFHeXiaXT!1R-3=gmi;S2pWC2tsetbP7Fk2p(`?XKm z?Q0WIce9YzK61Qd-IF&G;hhb+bBYO&vV%rY?xK0xq{>z0vt30*Sx{U~X%H+(?rgP3IFhJ%X?iLo)mQrC`S!pxR z%YnU?Z*%JvqFO$qYJq42^hnV7d0wG#l(W0*Cs>c6bMy10N2WW$?9KOGV9Pa((E}BF zv3C71@X$OX7NMt0DCE5QVTf-#2Mn^tIT!6u@Su8R10fY?ydNCV3=|g5N$oGdl}Lj= zqw}44tpShF5_!2fA&5k?$`(8Op?_8Ao|caA-lrf;XTH~6G@U;`0$4zTT(BM%hlPSr zuGEw35b5d?+&_HlKRmzWHu#B71uL7_1C~R@J{GYs%4owmHHAe1`r9it&nt#wd0IF7 z{(?|IKy(3$bh56Dquv92R~LYm9d%`LCiTz%zwFaHg`A0nfV*Qu19o%*%(OG?T_>x!PO4e*;sG(Fi(kv_;`d}t2?2AQFA7L2 zy%(eJzay!z2o*c4Ah84xbvUAqg}Gfg+3~0CZ>Xy&J4_X<^u!(w2^9(_#5s&_Tz3oZ z+C65!Q!1V^cJvRvHGZn4F_H>pfCHAt%2NUA@eJhkKmWcmVIdLpRpYT2N~Po<#BxJG zr@Yih7cVFIyNi~Ze$5$%0F9CXP`V9IknYIg;6C94iw+GqZ!`rIKD?XnemVgV?TfIp zvqrIm>;?G~3z@snSs1W&buHht-%9;`+kVO8$GT4Y?+fL5k!T3lC#1$46+V0r)2Uyr ziqki;|J3v&gm_j|W3ePfw|p846TC3&I5&Lx}K%T^WpJ%I+uM$o+$jf$mc{`Y+&OV;;A>?01}6&LGT_TB}$xG8SdTj3N+ zHIO?16Ine-^qlB2h?~w<5BoH{_;2$ zPZJg}^$UDhKlog{syW6qRa8C^O?lO-65&~&L<-wGgQ|W_3A~AXIq)9VD312QaIJJ3 z;YF6qjlr}Khl|SroOV~qa6Enr#8E_YP3F&bgMdvv5!YjUZ0Up zNNDTBOKwkmu6$taxlCOg+r8=&jPzfdIW#g-=v(Qg--lUwp(9KC$UtANEOgH{<)qax z?+>xKtJhKzI&b02P}@l$=bDn$`Q?%nif(LYVv|dNTk9!wQu;+PP7qlz+&2dZ+SLLY ziakVHi#{S?rp8|Eh~2+8C5?UW?fT2=rj)H)qf@_zmC97&P@-S|DOi?$GNGK5Sv?+p zwQzd8rER;NJjWASb8=M%pAVJXS1Xm)bZ^fh$3{-kCJPkwMq!h)9|lt5LQ~FXY~Wx= z|77wTB^1s9@b~rXcQ5=(Y55tp}$2z>`ANV7=~n#zo_}eF~1~w)AU&EVaD}fcDakE1RF% zob)Ye+n63K*M@5A9xVkQs*(*f@+nGHN-Uq&HCgD7I}(6E9;m>jipl^Qm|T|{LK5j6 zjUM^hY72@UkGCnUc5`b#dj9DwJ0>yv^=W)Cf>}4=N4U5g^OjQ0<|GN6+Fbp)D?2(j z*16CK$CQ0mGb0`XY;(ERX*zQxw8+eC#K`Vj$?)E;7*ogBmil0QP#d^Bo?cM~3qHN* z>N3vA^3b;N4G0rnx6XY7N)<)wEcdwZ00(e7&=FLFw`iq`^d4BuqoU_x7h+X869ZFU zD!oF@9M;{wvXWK2TYu5WjbfX>ocfpJO=c;lo`q=6(cF`7+;JVch$oQ_EnITKwRP(r zBq@G&WpnN-o&;Sk<`GiD+>lg|6i`Vzh?pqipiOJeEDUC**)7rr&(`^aMlL;j&Is$U zJ&P=l1JFSdgkn}`ml)Y!g~Hrwpbcat8v@DH>ICNV~u21Mo`ze&N-?Z${QWlE4tbN?bg`kO- zw0hAQ_8T%{cB-bCfq)DNRucFu)^f0yt|?_Gx=~>uM?WF$x(l0nU!T16nA#5N?e~bO zSzm6XaE$sfEi{5TIgo0|Lp+dxD~m2W!zP{n{WPr% z0P-`J_e+NmiY`U|K1a+>p!~LKRlb7_3dPLZuE+i<@+Wl}Y?i5YjPJHc)#WBo|?7Qsj~#NT-wOgH9|)J91-Eed9abRnOL_J0qW#m?8u1nw_NbPw(MUbC#ul4om5 zL(?wA`ot&yi*=-Si8;J^T6>9q9y_0+pm}6D%^}V}>oDt}?3TBCw4prdA-86WonXaL>hz zF1OpbH?mY*mfC#UM6@0*JWF1OF8xC zn4ctY+nX= zm=dsZupdW&+`!L#ksH!o-KH@ThV(JQY)+9(9`_;RN$g|kySGDR1~5GcJZ@NR*Rfms z^kqi-^UI(L*n!_~308Kw-q~&TB2x zYwW-qL}^Q|l|D}Gl=H>!6ED{L9n~!BVbt*y9doR6Fqz0K`k1kS>u#MLV-J2tqv*Oo zjl%S!87VO!Ggtwk^o7hOq1u1l-GQKa_Tc zpyP%Hv+%{hojSfQZTqcntU=9pxG!%auOhE%bft- zmKl$~^i^%TOU6~nk+NlsfyYMf?a}5Jrw6`pLeSkALWLHY6(K%UHewv&YZK(&GXo{O@B6H_Zqt%{cGHJT(C>?7bwxrPNm;oYf6PpN@}|E^@;b{ zy)2cS_y1bR45(%fZfJhW@@QGy<@uEu)5?qAL3Vu!njuSe8ccM$sNAVq`xv7uYV+!> zKL^fEBap$hy!GP?IT21SJ!+KT@V|c&>dLmM!ovh=lWcM?@Ig^r{IlkK^a;(*ck`3q&2;KAgG(Zd3B$M>e>xF8 zw5WFB7b5kYFf6!;W8_=xi-^KpqUU+(!)GMp13+ZDfhI~c^RO~`l@x!eAiT}?AU_n;D|N`3mIQuN4>UgL3!wdCql)}=r(1*-NacKp4!dC8_!ZHG$+ zfasTHZ*-GiY;XjlKZR3fdLVynk zS_j@Et4ImuUNn_bx>?XBd-FuNR>PT3@zsAd&0sWgbl6hbxR)Nqu793SO3YkAfGHV~ z3)JwWEykWDZyTWk$5kKDGzZ)l`Y@Zyeq$*52IH@TFl<*_j470@dJXP7K$twYrh5N@ zZqz{z5Yy-t*bQc3y=*JBhg|_{5&4}EmVVsqvuhxV6lGiX<{IRSyf3yqFRmrA>u`Tt z05SJP0oeyL`o@vCo-lF@htzQwr=!EsJB;8`QdrTDP)|VaKs5+sI@GP2%yJrNp@iqY zn=pZlG16Lx$!vF+`E9T)3i7*#oj@}e+22S;%Pd2*V20$i$$e~|(r$C@7=XF8D; z>24rzcn?2nm9Tzl0$?UA)SE&aq73bXnF{yuwuj|m-l2BqvXn6fuxX4>CJRye-gyZ+8-`|jAaB^3 zFl#H43Ld24^d#`aKsVzGPm2go%x7li>g0sJ{`XIT-6h_!RPK|;xh!`N#N7yqjbv2dXy9UC1<15%eM&rMehAb`QVqLXU_Gde|Y$*R8n{Q(<-bo8JyZ z9J7Nn7%?#LnE2_Iy3{TA+-{XC)&@w^zxY~c9+7*%R;09l0<152t@1rmcu#Kr_HQKF z-yzTOgeIUDX7@p+BslFDk|FJb->b~``V-X-Bjk=SQ9BDw+<A3&MVRXQ9NxZz>%?O_|?t!uDoFhS>oP~ZNhDMtX z97Gg*x>>Lcj7fhknA!VKaWab5CQH6QY?hoLUO{eS9jD#*3-u3FoWb|Zpc-`*)o`h) zZM7jMxJ3O>m93XPas+A!_)52NiSvi~-7{15QM&Q!N@a>Og2KCt8i`W|I?OTFZnId>vgXC~fKGW(3uVAG2wO2g)R;7x5IXyAml*JWV!B(ZZ0cbQ5}xY8U=DP?n4>)F{6a~ay?jwc zd51u2N|SToIy$nsr5-?XY>s4BxcS>Ry6jgd&XZn2l8rM~ z1bu#+jq+9@(v(a&$OhFryq!eRQX|aESD7-#RUltf7vOz>pE+Hu5HXrxBN7aAr&ef9xJ%TxQUq z6dcw}^8`EsUkCqOgazaQ#dPbpG2W29{L8k44g(fEluVO5vQH&Ib${AShsSg2owr_? zsjc6`xm6YCy^CwR(P7)H(lhs^MYj)K+)bjOc!fv~62?hov9>P}dpIL-KptRkwPZZM zQ5@6TTN^O7qukxDZy<^onIP@F@q_DM=ODeU)?0-Y2ZXPJw!+y7A(9zGQ=ELpq(&B4 z_~n7Ujz*H*nl~9%%LwmWBY=wt8!CQ6-~)(60Uo6al=zmj-pjJv8;VIrNG>UCMsV8x zsr|R#j`MLnWEgX zm;T>~XI9q*54Pj%VABTg7Z{}*T7R1j(u+5-&p%RE3A9~QD^q%`gFd*b;%b%Ue51po zO-X`f9; zt)6#dpo@OuA%;y!{q|;>4T!fLnRX^xa-aOCnD4wnt0#3Y*S>P)Y^-{L3N z9)tkBdPf{16ob-MmPldyIZEzE7x@pNefoal&or<6EzO6z*6xfn1s_XifGM!-HdpI5|6{GXb!x+N`F4SZCKKDyxOr39TFxUF4 zLAuhTt-dMTB*n(i29c512dnDPA)aQUyMhUEe#n6r@69WsS~}%`M=b&DQ*gyw><`F! zo%!Kq5bvZ5kARDK3rdymyM^(3d9iM<13sY{k1b z-K%szv%8MCPjc$BgY3(IdJ{b(?-corl@UZpwB(!V04%+bkS$CG1+4+ zbHaFDbfvhdJP<~XKD6&5>3w2i(d8bN`jm!Dq7C`a?8j-UeR>l^Pwkl*SVOd6P}6$J zYJ@{NCEr8aBEr!tO$7)%@(tK-S&!2gXF?|F(QXHe+*fS!}oO2Z4`C{X^syiHz# z*3K#N`b-e){Z#GnKsDCWBB!gv&?hvb;-zdBlA}SgJWm<8x7`tLZeaCA+e<4t^rk$< zsJd_=6NPmu<-_j-J;m}E##89GxdDpwx=s7&>RW&WdM_ZC0kM)L-bpF_(~}x+!8w(e z*Yc`m&&lRC5o)pBAxDI{u=Bw4R`_}nA6nh&mQDF>2uE^tn*GJ5tnIp8%B_O2X`uF# zBiu|La%PNQZ*4F?8Qfr1k5to64zY{;twouRUhhZR1oi+szq^E6NeA5=KNGRT%CuFR zf_@bwV9)0szB2H^KQObMPtm<*EUseIHbs!kHR|JpPLeaYWP&o4ml^|9UfP;PV|rl& z{PsRnqi6d=p~90P`O;J?7dkxY`+f6+b(Ic`8e$~RjK7#p{9A~aV+SirDr^FYdiE5n>k1tG-PMsgDuI8F?lktrDBtQ>oyPfl_bF7Jd5sX z-}2`>-cc*qUSozTRma@@jq|2YtuLwoGf<-NNs*Lz-i1UU88SQ4X@=#W7YscIOrs@K zPHgtMeL-rSJ9D=TuCI6WuhkmvSG29=Aro|pm?E1-kGVe-|0wd8bzhi!+b*q?4X}O8 zdR>K0v=dM!X*%^^xK$|7Bg7AdnvaYZ_Cqo6+~a#fz>@=Sc zqAa}HB^)h0$T`j{?A#gO9`+~LRrB)sJxaVnihL%c*6u@EiIXnUb^E+zUph-OfkFUK z`y0E^It9O8!kIZWs_Y+tk}rzw);|(;eoXEK|}YzcKCCeRtOB&Uh@Y+CE=*v zPA@(+!RU$Rqud*%?n76K;W@s^ol89ARUcdoV!%g>4ZhMP*cOss|WqV6E^_G#->8cu;|BG{ijj`_+0drd7_`R3kz4}pPpYTQvBQU z1H_U!syDW<`R?CdWq@_7@LwbU`}z?yeLw^gIV*x$co_6<#XtkS8;cH&z=(z^C^iMIf5*)O=|t)<`0dr{mnf1GnbHAcL&>*reVE*Z_f#WrA} zYtQDqlU~pqlz|a)zWjX$ z&QWK6Pv-gLzH@P%wHeaNQ`dZAUmW%`vmP89@{h|qU|G92Bp?m1%Gsk`2YM*5SbgUe z)fY^}C$X(UhF`U{8a)qW6Z;>K%y1pU*BX&trBg6v2M>jZq2C-Pel1+_JkQoNy}|n9 zk;v>MfOnc}Cq4gDuIP?*%C)FczQTBd#?Snhvg38me12U0mC|?EY(|UmcME3g%D3{$ zl!P9+48RO1i!ptlwaq5w@-{pD(k~7aPRjXn_9cZ^#C%a^ZR2UOoc2E*ClH1`<0zqE zR=ONCkap(h`Q;}W+0-MIDQ9Dbj{J1u=chSaf8DvuCtTw3Hm{>PqhB5?U12z=0ku4Z zkVHLPtet(eVs-5L84702DR83B%V4B+t8xkk3+;a_czUbQ7<&6Wx`Weq3eN7GFOc7H zifwcod70-1S`l4}x#RzUM@GlsaAmgB!tL>7??O}mq~Xiu{I$lCM&qdi!*YM3U~kry zipCY!w!Y|lE}oEs5OUh@%cYe4^yZzOv#%Tg+p%aN+p(i>!8P-VL1pFJx1FyQ_}_>g z3NcJ^`ZFl#p=49$qsi*Wo1ShJavRC&>i>7!a5h;5VE@NwVgC+rbyXfAbd<0hp4Bb; zDh;-b+yt9zu??8SFK;f~WMMaXg~UVrxY8SHY|g22qBwq=h$&BrTtGXXrZp~(8i7;G z8t#WVeD@?b!56;e)WWy0?puIn>CW3Xd0RubCSftr@`uTf;1SB$2wo7jSh09IQvtQk zUg{eEvo6^)NP>ATWV-9r&)Qc{XZRL-q<<`m&-XCXprD_%;bu`V7k>oQ9~!jR(b zT6h!0dtBoBVF;utf+h2Q2`Taj9Ey1jF5hgPBU?Xy24(UCIg;rNA#0WxJb;^gw;TSW z>IdchnV(?`!qkfY!Lw$zC&1tQm|Cde)J*egHYJkHmt+s~IUcmEp5Z+PvPhGQ7Y%g5 ze$5xg?hi3X*_*{?%|fDhI9UXX!|S?JsupthJebi_q|`?oq0}G1XN!Mimg+dy+!%Li zA?luQ>~0&2#zvCg=ex0|XgPilx0j{riS~e}YdaBV~@c`CnMBw=UNn zFT@Eh9>DB0vHM{IvQA*+eA=V#;8!sK4FWw(!kVg(_Wjnq_yU>v$W-P>9(t@BtS-p0 zw=P^5YUIZF(#PsPY}MEF1farp8QV~H6@`Vmcb#*Y$e4x~13=eI9$tl|V*YGF~8)3+|G*w=Lj zpJ$_v0k(Rb?0*cQO+3lD(ZC~qJ7&x$0zi3$L}g~7!;_Di$>~b-=vxaeX3X=Hq;?o z7^cK=2sy`%$?iOjFWaei3k_>ZuXcQ|>o`r;1O1!P7L+GlQJL;(Ax?tyE;9m-q_4)H zu^TLd;g6DGInPJcihp}Od>C2-c4jQTBNoVIKy6A>YzLbJcVOiu*Pk;@Vt>D-Txn!3 z{Z;gSG(#I7Ok{q0)}vo~k;`Gm7=qlbLEg7fIrq3EKGsYpYg=grC%TEXvg3;ISWHe$Iu2^Eh_Ta6mag zcVUdXP(F@L1a0CaS5s05v0ZEs90C@8;A1}d91wK=-c08E>cW=+mkay!I!_iu8$41+t&4t-V2=e* zP$uzzyjtcHe?bey+?(0g&Ufifcv8@3cszBE+3?xrjhWdui)G~%w)hFJqmic{P)FJJ z0_oqyJyiOe z_*ZV9A#gkd58ZF51%c3ZhSuGlbFSh*WCTlG6RE7UmGmSU{brQm0pAwk{L2=8rh7d{ z?s|rTL4^J0<}HHNw8zs_Jg7-*#`^y4i5HiRG#{yqEk+HFS~ZyTOav8#lOC&ZPj3NW zZHX^CO9&TjS}(cl64+>a(8&JSmzSVbq}+E&`3utkeA75o1-va}s3bA3i&IubBGjBJ z7iF)AMcXASnLV%)K2>E5u%xVAu0J^}hg2)v#H5?Lj!E5D! zDf>oC-=FyQAzT2%6%K!88yo%p`Akbh2ahtGl|(A8^v`d!oEn!PrCE|C!RYL3vlB{~ zK?nU?N!<$UJtemB>6&iPaMj+7Fzhwe-e%3`VEdIl5yQ1_Oq<3x-}N~k^*PWyU1FS; zw4sTjnZ~C#Z9t`$w7B{|OB>AF4Zuket^T5|Ez5{V%Nyn2g0LRv$n^^fUeQC+#t4ts zMQb9)(Ta5(I5xFpIpaaBIU)1><{OFS3EWj)npk-q9P~awxh;X0PZe zm65KexVF|T<6B!Eza`B!J5Jl`BY)cpp~(1bKgYm_{HbVGWQcF z1z;kEY=&3L!P5SzjJmb2D5zDLO-bC>A|bjq*lP;_zH=`8wbZ%*a9C>niY(t#YykJ% zk$0)ZjZ`nSy@v<1cBLttn<1!2T%HWn5{Q2GNXz`1rzR;%mCCP~&? z?}>T#QCQw(vyyrQ`nQ9Y*{kLlB;KRKxzF^pCr7XGwht#j4QyFQ<$chSul4c^?u|%z zg#A#<`qgf>w`@z7+cf6*VA#EUhijkg4jZAqndP1u^jBW2KQrs>z;Ltj$DMlA5yoLX z?Zbj&UEw}%S2cJ|ZG>()TreITJu&|Sq6R+qUhDrboFd+h$0$v-sKGEdPCG_mKI9!^ zGxaZS;Wl(`=#Wj6Gg?a|Y|2&j?07rwi-n~(u^k25&CwhoRPvkILsYts)rC|xl=t_5_+8Dz z7aFfOuzRxu?v0JiS7W!4S5VM}8Xp_2_?{%*wC1Am^}4w~;T{{<=x234P8nDHe%d;~ z5O>-|Ez4{EWY~W3ewoqLqxlpAc1O+FBU=ixVph<&AIEls=2!k*|;}nXo1FO+8?kgOU^Arrl_L z1t|F{R-WX(yla#J9sP4+GPvg(=a2W{!K;I9w`YYL5-gC3#dOk9UP`{tzQiGh@-!D- zcl&RfG<41axkrI&Q}ag`zT@IHQ&zHn2LiC4or_i_ey_XTPc7ynh88{Fzs$;ZFk8|3 z$@cJy&$s)R6VI`kfEgEc0;h_5y9y%Z9_)$5j`x+7C($Nh4LU|Jv(WP@b553SBqR55 z;5YKuYxrq91?+Z71>5Y#V@8~WRWokQ$X)^}13wd1WD^uw($RB%v~)%A=IaK$R@Te; zgt9aOfL{v}x-O7-%pKk15!kb@hH+)AwoUtFwQAZ%)B`bNEOame#tIx*06vM=O4c z13~qUFTKQ1U67lZ06BFfB;4bhho6-`l?N`nPbq4sQlLs6i%gcQUfW>ZpLi*7$Ds^1 zi5&2pOBA(knb2Yls~%@^O>#-*b+w!*;N}DBzB*nw*%FEYTTlSl9Z)RU!?KcpT+bPP zW4-lu#N^}puR`2?k~I_0@o(*lOEs47%~f;1nG^VCE~F$Bc^y4R`%4yU<3Z%^d)W3E zfw?kJdV)CKd$cPJo{cRLz96+}eo!oL=Z+mV1l_-LSDW$VHyM>}Sa&*jSC-_0@fIXf z`ZefiQn>hL0*jZ*9=8nE

gp+a1TIag$wny=~uQ0x$)_nPq(ss8Ib?hR!qEfgcG z7CX`1+tqUS{^q@TmhMWH?A;QvTgyIeS?KfE7Z7%RLS6k>PjlBnhEuGQk-d{^KX;!x z3~g^M%&T(0E4*AlFypVl2-0xPjHEz~E(yE2;63F&i&zMb+AR9>E>Av)y{qiFckOrQ zh|r>0jfTHfdfs254)odz57(&TF5mX!g6Iu^cx&lg%?Ihz%8pujFskH}dlG$CtFBQ= zzZ?3F?Z5#s_)w+sT4!O=B-2={gjsj5J1M?tR#f2Yv-@;Re?zP3W+PMNmaILZXUlJ<5=K{iuXB?ke z&)veHn#Vnly|8ybf#~L$^Uc$3-P7VQAjlrOFWx7RXy%$M=^!v0jm~I5&80a+xJ(O_ zP67-u-tMcqLLA73+zyrBOx z^1>5qXBfBK7oSAYIVG$AG=+o%vHMvNm>JF2&FX}7vy3G8%gl;iQ);+t(i1u#_UiEG>zJry6guD+s$vKx%`}&M6a;5CZvM}f-4__U+Un%bd;!bE;*tX}-nD z$obxYHK2JZki_ei%hm8GUO;{TfPXDne))#WZ$54leEPvBv0WOUq3jEis3tWq#lxOz*Iuf2sc3*;?y?>+Ei%|oFnxW08M$3^_g+@@*{a?$8+U`~5 zRJukv?85K`@cyrm1lIhrl4lx%!9j;(-!XLXRkM zWSg=5pE+mkZ>YHCxCd}lQQ@u|(JfJe`{%E5OzYH70oq!m3=~M=8>M-u#npSV z8`-95FDwMi^t(-@^z{sx2+cOeZN@dm{Kx!WupT-Lhs)H|7b8^l)Jx#jCGbGT&3&a^u++`84HjT3&6 z#6%*>br63qGTYR16IIDV*`nY7p8uyvD=uoD;?6T>y?1ZMq>h}iKN}je>)rOyS0KOi z{fvD+K+@)Y(L7sY()s_e_a0D9XI;GL`1y^D1sF#Wm1da{QHr3_Au1v^L`0gD2ndJ} zI-wI4Axa$wDN+>_qzIvRqJ*LZh)78wKm-gy69`38NW1@_posH*bMJfWt^3}6aV^&( z`Tx(^XScJ@KEHj=z5~t*-dp0!MQiT04Qw1bX+QaN;+edz-j$>B`e(Xsl|P-h>2c9K z@NvqI-#FK0XcZAtcEd9Hugta1=epL6Ju0D{P%-@B8;O}&HCrW|daI87p)1grkh!+y z_!k0y^oFjUkBs`;JP)U{5kdtJ3*e012EQAsRQ5)J#B2p52~67rV4Vq9+xl=yfmG!0 zn#}h`p)!xnh6^j_3aK*UJ%Eh5%$ru zKBGz=4K{Nw1`n#v*9nJ6RCLZx;vjky?gBav(5W9uU{Uo}4i_5{<7xg*!NUBJ5TuyA zP;zxUYD1`>7?-;pssRmz*5=(jJ%l~Yq#j{&5ccSwBlYKCXaq}Z{f`y-2dWQ!K5>Zs zVmMI@6(O`YVH5G~uHQ&3eAEMa$z8@MaFdv3hXPfh6?LIbd1xG8Le#p{*3BMMbo%G* z7f&G8gbcH;F!HbjkZF1h_ZOtokbaF=I_g^#o$i?+LrY^($|`5EV?Xx&VUp zygofPiIq|BA&j_nhr}jMI>u+B`kcubz==rT`HK}@;sRSif(i?9w~B_fWJS^MfB))9 zCU11vgf0L^;bAg!70Jp(B`9RD8bvomm}xc3Tj)eKK)6zvZcnj5?xXtHdDy_xhj4c|GMHJ2L8tZ4!~g6;?Q?`$QYmZ3rwM7xzE) za%xtV#TPdyrz;Q@`uARK*d-zc8?vk5*A#e9k+PpY|bVp0&<5eopDrgGO zNz{H&HnciQ%OT|9>{yO<#(|Vs$U`E=&cflcc12XMkU|ql#})q*pnofzqnvIlqs-%x zx(v{A#UbqRL%MKfz42s47hn#BY?&!1gMDcl_N~A@xAlk5aBgX5RgMlCAwt$Ve ziseo@89trok8e(tN!&&oh%C|#q{yv}*RPI3IC1Ax#y{rtE1BGUfEB%0X=?3j)Wk|f zE8lDz_HIijnLRi0vbI)oK;1AZrf2`&LZ*#nuKvxtSmV&_f4sAlPaNXJ|6UBlvwrn$c=g; zlSUA(rGP$BLRwf5A^b1bcgB}j%0=z`H$MDQ5QQ_>;`V@P&pu_+grQ?@&CcZr0xVNg zIxyDbEbFk9#0=sDo?vP{WrsZOV@Bo|KAc~`F#W&CSPnFt0BOe}9nk$dp+l;Kk~+rQ zjBVsHAHDGUDf}IPEy}X3JvRq2rc?}(6vK(?Um)GVf{}7S7xq1N#2xchV#;nktTHgX zzJblkvq>Ct#vuq}P-B1dT8Ub%z{zY^6$cm480jQa>v5f2jy3foKuT3JdZzwbPXKzZ zbtwF@dEiR3V_o*fr3A9y-R))z#B<7oYwrf{VhW#QU7eOXRKcF~9Xv|bIS}%WL4Mko zpHPV}X6*z$p)7Di>)DU1{^YC6OG&(qn40orRB5M#Wpbyqb}W0{sdgRvkB3#*>Yi<- zKy|xY%oC*x^)0sP9;i3+t=Q5II(0oQY}byNwI_mii9ypCkFQB>qV1k2lA4j)NfcHJ0~c|uhmS?j(c?RS zcqO6q|1R?Y04pO@YA8RS8lqVl=;)0oNVn=b6Qo_LI=e16T&vx}gwRU|l3> z;gAY>)w96yYM;tq5Yr5)rv)Y;cdnIW9Zs71Q^OKe=U=u?pQ3_+E{+M>4F#OPm;4W2aX6wwS2Es$^A zUf0Z8jIHewijd;>`ujCAGB}093hdyE)%i|pj{y(3K0Z*5U{l1hQR^pG39*KX@F~s> zs6~k{49+)^!ii5xXmf(B9T{Tx2f=7#;1@j`SgjUe>}EjEm}}4LmTA2E%>0#*c8(J5 z@URpwM3XYNJ5xzH&s8UzTgb3{Z7&9_XTD#Z;AVH*BU$zo^_kEYJnI(N>3A{N-g0Z+ zW3hWu=easm>LbovgDMYW@pfw0;hCcYC0;30|4h!_M(&u=XRE2^B}wO z>L%5G^OB^6j8H?{wCE(@XZ$`kt65UoGyAu==9>s-Pf zG&IKt>M~2~A%Hy@PsiHFWADi24Cm|xoY8g`eayzZ$=)R(Xma60ma8u=m`+9zI7)y< zhFnGCg2Lq7u;?EQZqlo31hmN|z#r8MOTvA!5j!=b)0R*vyalF_)t5h&2+pvPvPEg{ z5?%CfX4*IQwu1Ebg!J2pZPp&^@d6G$8CnNS7UDY+iVaCem2YU#EVn0A!>peTdcoxR zc7LM2Vy{>55T2O#Wk}IU1O&EDKUOV|bb{$~12pLwWUwFX3fx=kCPGm}V594W!s}f% zvl3*GrmghByEP&HJ8Idzz}1%HAv?J9&o4e)AcgZZ_VS}=&s@?S{YZ>-ZAM6Sbpf^r zvmfM;1ql5+-vw2=#B*?y+CPKJWRGkI?H>(76_OS30tU=$Pr~IyL4K#6t60m!e!&Mv zlS}c%2_S1_iZ9H6(M(SOBc8pBNl9{41M|R1Nx7ID_F!=a)WMr4{%SWS4;Z7`Uu~-M zJ4=b2Gcu4X?Su=zih9Lj!WdWN9j!afiG|rjzH;odwMI#jd&t9xR1T3LKKn4onhrSu zOsjhpi;_H=dx8;8SrIWF6}!iRV8K30mrx1!V5DdBEod&alpI?sn7hhkA+bVY zNjQOQPmesctPnXiSDOFo}(yK452ub1q0tv$ubk zOMc)*r;27{%!uhMuf;e*5o;6c)86QL5IMCs!MDAyPlQkl89MdRhp>;|N9L>|$9ZrX z^K&VC2Lv?c(^ka1&a8jTpF!>0V&gu5g*VSvB_FAfrvtOh*Qg%vI101k zzzk~vD_>j{Ol}DtSUtVUsBha=3xXoq@?nsL*hk++-?a5GTtq*S$IbtoP8rtj%7L6- zwU}1W6=)a!w&%s(zOI{An#6yJi&w@)|8LCY{Fg<{N)51x5ZW&At=zw|Z80acRigLl zKVG=~e}U0<$*mbdN}6*Nuh4TB0gF)aeHH8q*k85Il$VbEWJekSGz&-2!bI04KH>*% zQ-8AfF_{;9kQDxXfOM{Fb7Rds8AWPf^iEGw(}CD@STm{SkS2|>Wh5fMXd^*=F4cX& zoD`PgS}jKwz5#US_$rvcictf)(*wGDn3Eo|Pu$~^W1~SxK=akM#^X~R_s>nytmkU= zBn1<>l(y-PZlq{K;1qL&rU8>sb{SMP+XDieN$PHTHDJ8o>+_vyDP+xFSquMbs-Nx} zgb7GV@&tqAaqwBu3miIvr)Ltb3lBOXPMfi7+-*c}l~>UIbl3f5bE3%Fvc++R50YYl zN&WD9ZC`#T#cN`9q~g9xh5JPVbEs6e!}J^zdiq zWi|F-02m-;&jY4rdEwJok;HhMaAqr!TE>SV#sOaL9)Z>Wxi0~8*7uMHG|x)o}2+Dk{aNT*(= z=z6fvfX)Bp&HfcQ_x?}T5PeYN=(9A*!DLVkqr`Tho(|fcAQ5s+u_L1JFotOZvT-y0L-C=@~7ge<%_a?swSkAG7hO<+j{ zRWV{SGJHFQ6?ZUl>pedjzd0z)Ux}}+AT?nM>#|jO&0WB4;=pysw*-ph*J*|ehER}oGjHz4 z8897G>Fmge-&`7m#CFq}(yfCS4PL7f!Dc}1k8K|hZ4Bc#^IqE@NMWp;gtSE@`kvtB zL-izlZ5baF3fBXPXP6(YpX9(HwZ|lu4M|d~$W!jGi6Dh_$Do$PwZi%#SzeqTIOQI2 z*Jgomos{*bxR-;^eVt;gy+0TToRii3!2l9D>^9qrcFn!USZnasb(kXa!$}&^lLxp> zaRy-)Zpg!_^eicOY=Pzhan8fI$W8kMt5tMdtMQfU!IUISXWJ2>20_>_Iz4R&3)k9U zL{lSRT;o4g8%VC2kKEvegV0v1=Bwio`Gx1EcDk&6GzSZEGV|~87~u*??mV9++xHG% zILBRE)V9uDvqA$ncWKyi7yUJ`kRSh7wZS$(Jp^PO(Rj~Fwh<2I4Jk@D2ws?LHWk7M zydU0FO>~9--hXqzQT@gX=N7F_PrfFs@yq}Qy)vZ%k-~Is763tSA2`Y=rV*f8mYmmH z8d1o=YlnPhqXu5suk|Ydq|EnTw+E&9HnY)V+G|=5w8OPw-ZV6~w7AGiYo1^r+?vK9 z`VT=;2UGUu4C)D9mr>s*ut?^2npY&fmox7cqQN2H0l#v-|8_9v3B<3nb&8x$N(URU z9UrrAsoYqL>s0%5BOoEyKUvrKorexe14*}(Ey|4IA~$g;oApN`*zmngEGy{5RL5WE zree7>#hF*-NWgdlnIfhlb6)%rulLLlUo~QIq!0_ie7`;;QR=Sp_L8v$k~6mDZtx*I z)?z_egHIv&Fw5MeM!y4nQV@RUZ=Yz!kz^ zKbxVeZQCeGj4^|S*}618Wq`0aohfKi6W_I)S1SPSbS8RNxJW*&Lp;GJ73tU9+Bk%) zuT07Sj_zC<=*sDlb;TQ}7&o)FOPe8I#VB$AfGL#Ke&TZI8sQ}u&zh2w)q>&RDZ#Ir zh3jUgB4?sTJQ{+JW<$2~7fmTk1OiIKcX{Dy8&NT@RVbipN8Y>J?vwK>BBX0hdGC~7 z)th_19%?%PdQ^U^DyL2ba|X;jHIx3}8}_fJN?;VY8a&N?Fb>9Yc_RYaY5-!fn&DS_8q_0BS_96aqNk!#Vuo8dLJU$f% z#JwHs0}Bk8<4(<{X9jF`RfvWGdSUNcTZvaWf_ss3?{?&(VokC^1Wit$Zeez?&RxvV zIsz>|M;X&_iP7K>92H>6cSfJpbY;>E4_p--vTFd|ZrGZ!eF``_Cc>$2f#5#(y!oeB zCDY-C2 zjr>5%=*|H9Pxky|w~(^g<)@y1FIr!NL&v~0u?Xgv{r=K`=@ksNQY(58pO;|M?ktEVsWbx$N8YQ0NC;T%5@ zxtJzTywGJh)Vx*V%s<{)JZk#qcnNVo^Gdw!K=cZ)&(%|$(BvMq|BxMDyUILeZ z2EMKj{4)@=EV(oBgZ)`+rI*t5%EsO1LM|QkjSxzG z@MXmKYh5<315Ju)kXEJ3{n@|MX*%Ch;IonfQHg!LHP;n%ins0>^!O+@y`Snb*#>DwP!EiPx%~^>h>dmJ+24Q(GleWxhxm`Zz-9B>&?Q`^~q& zCi!OmM^EiurX8K$01_{|W-e{1NqlRMM!kfKUx`}5{jCyr`5)D@vop~VtKp&7@vkF!%N;#eQiQC%Jv_;mgfX7 z#;Km`Ksll9-U3fvg~+J?%BRu;*i7#&^MWEwzrhbIH+UJiz~u&^B@-}(FWj%a2;6x) zFV@(ipVBzqks{!H%d$91_8|Jay}8~pv(78|o}?544VM?C8+Usw0TZn50>IJiM`>oz z1KkJy3Jm5>IE*|R`yz$7D6GUsc5Ccl?b^>0_VLtf3OT(3>43l7Wz)(zQTfbMR;Aik_;Y)C?_=(A z?ymqjRODuc@@9Qv5AY`UE@?Ml1e=RNE7v`MCAjx-rfeSO71X~U*7~fixd44My_NK3 z16NtE!fZs}VB|{b%WkN6?lO^8+eeUuwkJJTszzdSvVYB}DqBSTP7_tku9sPjETQg{~#dpCfVZys?oFaSFn*lf1O))_PvO$iVW?tEn;Z zHZy#aeLJgQh@RRe1Vja*1^cfXy)^6th_PP`H%+#d<-Oal;Y0A^-+Mc3iO77U|FfQX zEmbWZILZ7ZC1+*&A^4!WOVKaJyUNb6#60Ccz6 zh>Jg;NGU_^7QNi}Bl61p-C~|`1Q%D0CsOF+cLxZIfvJ31fLqK&&(a^uPpuLQz7jYb zSO9VaXn)uexWiVg<7fUbuX(&V!O!<~{A?^<)&-EZ*A}#L0r_;|dd_0Ew+{#oT$ksE zN{`NlDkt;fGI^lZGt9JRvN&fA9e7RldJS+tHk6NQGFi4*ADoi`pn56h-y0l%bv!$kBtcnx!P=0 z?ikM{M>#LC)Pqd`2Obh6Cse4I@L(}iJH2d__RVM*D@q>|! z)uIg=E*G#O^r#P?+RXL%v>g4cg->5vvRmCi;tlRYMk5W zbVY%c-g9U9CGI^V*8qn-7eIC%)a>z`Th^2s?FvRz=KDhw-?`i|n0UIzT+K9F*i}Ag zoNT(S+a=w~aV~kj*=LmK0Sw?rnlKZs3s*SWQ+8%qBMJj~@4DQ1M&0%;YmGp$wX^p| z=~M!9uw98(>(SU#Cm_%aw`wgUV~?6Hsa}r{2dk}NhTpc5G~aQBNFPWLr5`bJt2L5f zRDdMkw>3u<=J%One{5~rfoW)juY(_}K4pTo!n3zK61XlnriE~rg{1#(Hn(4J4CT;z+iPUpBq1t=D9A#LB3%b(>Wtq&FUfa z_Hg$ejHE&~2VdR2HYKjm-!q>GNwz`b>}zAJun3>{#3H*T9js3fG4I`x zG4YYwze0zcauDbTwUf1%z5~N`;v#UD)2qh2Hv;mhnFR7;Lz`fJa(Wcfly_$C2Yw26V?%IIR-|)_B=7WNz zHRbhYLo|-5x~IYs9xs`iwRUsuM*!s$NM+=V=)#nydu!oD+wTxXV-`;*7^7*XE)_gOU)d}LBA4prQjVxOKqRIXVOw*i_;0< zWdS%)aS$CFX3A-Xh84kBd#cZ0Sc%Dbe#M(T+7;+9o&xQk?#^2>)T$|Fd&Imt6%DWN;60A$kc8n?3TDCACh!OOo4g4IOL!PB~=3YDnju! z%D8Tcp7G2y7w;i`;jQo|1@*Hko<-3IJ_{W1v_Aj}J)PL@3e134ACQI>gFRnzFd4!B z>QVsnE-MZh811Ym$Z#MlxeSE_7%wsY{0R*`y<2HP-tPM&6)FFI0!=!{yqKuIMBB6c z;FO3)sm9U7{yGOVAw#|WDWC7aj8_8yvob3oq7@S2H6=q9^u+H_UCTb>ls`U;9DzDN z%#QAt7UzsuVMGX-qd78=9Tt5Cr9S=YkZPx4#qt``WBTn z9fnJ+-u^URtl`mJX^HX=CY~p<79tX%|7x-e3~smWm@6$b`syU30^J^*i((j; zhCC#7vWai(7w0d)U;tpHsx6ai6DvGvUUj`XDFZly{wt<=*#T{Tsz`Yw!lG>j={un} zX?QnJcjtfA;F(l0Xk(W-c!x#fhF@V5XAN)Sux&LurW9W=bdv_Wb^ns~^mGa77VBJ8 z1|j7&gJ+4&!#gl({#M1V8Xum?*>#_iJ6!l#S-ua)6$g+D+?+-b_x(8wr*4S0ZmT;# z1k0-XREZJA8cXjTs&e|I4tZ!Jy|>(l^}%>~nm>zb6N2?OsP{z(Yos=3H~;Giqb2^O zO3`*5;D|GydXENAk-FYGCWNOS?W~ z^4&nG|Baz!+hsa5+0wBhSP9yENv(8)b>H|76!3rFWRB^w7ugRH-gHpDFU|Wh&V7a+ zIgewiu$5*kObdRx_dwYG;gcn89nTcmM(a4>9O9|xaW_JpdMe(2oUciMi&=#s%sMLR zH+9eb)APjk>xqIX245yMk;y}GwNhXyC}SZ3Wh%t(l8W#dSg#A;OzJP032;lj^1X-K zKWQlr{pD;Ebx83rK|hwz_#2&;B)lZEcHM(=>5K__q??id=(HEgjuq@kw$BD;Zrg{s z_P|=X7|q8*V$slV?C1IY12X%+%w3~1rWZu7NP{)%O`PFJI{1>t6Ok2F0!w@IU{ zSwZE@5}B9h?-`TANSzJ4T>@;+^%INd+%y9R%EM^2jfKu+gikL1*%v+n)OIO<1>*xy z#Os0)K)L2(c>C<50o7^?cY3g8n(3S)tWiDRzUi7a)T_mQL0Lq6W}Y zvO)&^jOkB-$F6ZCkirUb_>o^frI!~#xq0n;a9zt$co?yUdAR$(;_ zP2Yu2Dv0e~avH$W@COS9yRvosD&ECNzo#ov#Bp%pJZ`=Wj*^S5`&FLV(ML$P?RFXN zBn0danrxB7YRrfC6J98NjsK3OhobDHcSp}TitKhy7Z!7?3+S7dwpk{vu-0i|-X5O% zjA;*{3fc`t)6q-^Sp%1$8(hA-`EMl6+a-b|CH33t{&J(CaZ6O$Ix#UYOnzF9ol%UVfrb zV@}bOxMAIsQ0$ZM&!01X6tQ>hq#2i(Y6f7Up#2DDanJOeK1x&~*QaOMWmpc*e}bc` zeKj@AoPTldbCVCz{`4vQ#NG>sUCe7^u3#;f%;J#f820tH0{@V{d#A@L5x8{mYy#fy z(vt3Ne`@ozIq3Q`yf|O5KUfh)(fXw4Q)=`pnXq||K^RK_tU@k!QZ8y!|G4bq#V7H` z7iz{|PnWX#?hv$#wKXe4j2?4bfyId&a6HsfsaB}}@#T1+lXvBzpmsJ%Ayp)XX~bO$4y=++WOU%x?dVk-lRglega{j5qZK?o5- zsEB{z4`%9z!G}z1F>3MR0H7shi^*1;^=8NcO-jQ+aA)rOLyMbbnU8R#S^8nE{On+= z(Q6xiZqY{f)}%;Rb|Y#ke~6TNR!C>H%d3dh6*v!M0>4(n@!>|R#`w>&oj(F{ts2%3 z!B9WQ@%*3)?+45D)nzL`@ajJ(yIZ9e|Bt7JWz5`?>b)1RsaeOq`u-)dXq*BmFm9WNSX}0OSi9OAn-O4Adt=Kw40y z7O#Y4f?12KBi;a}C|W9l)PgABlt6%DG|0cujn*l&o%1;Fd7O|%!vU}Q2Kz~Z^gz_= zlqMu2GDda(Omn!t2B*MFz1U*_s6%qI$hGih+=A2+6YVX75W^c%}{skVM>yBz*-&7tSk^Z5IT}6P`yId2c7a6w%e= znw=u9DYmlqoNjx*uHc4wXr>+4FxDg0!JKKi@4kR8@NbXncbg0tUA-HJoS!j0P-+(< z#a@bn7rIB0_cA!_L}GY3VIrD*7p~Uy0Tm&Ncb9V13DySUAN&SgJw9$Yx(Vwk{$>F4 z6kd418qf7nqiDTIh@G?ToAFEqH$+zea!?M_YTzEd-rrPkIb2br)@5!i&`m9}${L@K z8OIYn9iVERbBS5d{=4LbW@Bu7`y5@(mMZvh;Zz-j!DXS!j(o=Y;O($dz472iDmSzBn=(o|~~v6>UsE^(TvK1`{8M=g~z;s(ip3{sA* z=5#`)-Np(-r?tIR_sxfsl-tBwZrGLA?f$4@Iq3`9AJY znQTHUJ3y+<6NqG{eGO0ugg24hi|(6MKz7=V6J;URLBe;7%r#8!>}*>2%;nz`LY-ot z5+YG0#UHqw!`wpaP;E>SEC?b74Gz@Dvpks#9`!Uy>-3yHVookI99Ae8*zh1DbS`?e z)d33(m!PhzVu{3;u7il^?r_N6fm7H0?KCc!id9P1rpvj}ZE&!S{DlnUAaPJrxx>*+ z()$_dWcS)QCJ;hH4$d5PMlN%d0%nsTS;eh z6Vf1WlTnc)Z{RW&15GpYen8TtRLEh?%*1Y3g(P!aE3Ni%tt#3Pq;uU==^v&>ON#~D zdRjaNA1%_^5)Da#wXc`%bfE}Y4BMfb1kKBLrvkWRx0K>mYb`F(($?fYqi&|V4P7R| z=XVpfl1LQDRWu5eV;wIa0e5Q$rc4PmoQlW7IsvbyZyTE*FATuOwS>@bg@&?1Olm1tN8k)$7yaYe|3>n=K=EwcP+Q4(-Z2Gg8UNL~^z82V@ zPq2(o{Nb7gz@=NvgWLFZMPEzolVpK?{3M{lbS1Qz`K#|e*K>=p%r{MM17HK~`oNa0 zeD=iYy#G+Z`Z*Fv&Nq23bS_aYan5~dC;f-@p`SHK)4SPb(x&EC%noc!F!*Jh)bD=+)ag-eks=f`$mh)p`(Tx(r}5w z#&q%C|MIx{w}6VWqCd;sOp9-$T8wWTi~Vopw@H45ZT$UC`@1L0Ij|o<*cW5UTXFxX z7a@f<+sA#??m3N;@~I40&4giH!qx)(ODN`RSA;*tLNc=e+9Z1m;c#`%}cr2Vq&x z)q8DWz_Am{IG(K%yVOUgz4V&6 zr@Ov#mSydYJ4NKf3K;;X?T%Y2wC^@Mk$xY`mei(v zZI7TV9k^n4<2LRZD(*_TUH{9@%wk-CX?_tqwMl!U^ zj?~$bghj*PJA20ZmLO9Z5kmN9b>oRD+geZJPdN_SGxS8kChdeO54#!g@Y;l;4F|QM z-o@>{7%kWh6a&XKHL9toQ$}?Nd5gx zyDF1_IuCkiqcg$drZ{fQ``_%j*E?aQ$ALFt!n-HTP^PGzmHiVL}1v}c) z98fLMBln~;HdGFWII2?hKtfXH{+Cr34oi#fIG?Qj83<%oW&%YxF5~zr{sHc~f?PJK zPE~QucloK+u67Ye{Ih3g0UUps>l8Hi7d&AGLn z;-nU_gHW7}Y-;K9aWAwPaS4xUJLxAzp;9b2fyR7WNE#vvbNnonU4m-S(!Y70`ch(uoME6<5UxmvV*`U@T# zcb~hUf=uI5Cqsq#>$QfEx5}C%JGu|X3sWS+jZ<}5>x)~5Nb}moH><%f;NW%D2I~Nw zkuIQAE!2oLZq|dH+O{LnGDP=2Tx)9Xj1+*r0xa54U*mXguvp~IcVkQNF+4UC)!;D_ zCmm$%`V;=@s~B=dk=4V!6}w%*ZXZ-!MWq5xs*X{lw$4osu4xUTZESx1+gOmsCC0O|(ozQA&CHr2973sci?XJ8Sc_9W5Ub8@awiqRjLw(xW`~vm&%ERp7sCDe{7IMrpX!2O{c%LxN4eht4ZpAw z>%XOf)afA|lDl72doIifrGsPzD-O{{nap@>I59uwfTZ(5&E!Yu&(q7dM;1-mbrpx) z(80#UHcZlLBVJzEf!_txx=302y}sJUwp&{iI8|T7Soafhw+k<<%&JHVX3O<0O6Nz7 z-;;pRrU%WKX-~gFHIG@fH24tt@-?;cMF9ec7W>bQzkK^fMAir>R~f7oSV91Qw*7C;nBqU{(VhK| zpAF%J|I=q}W(f^b7fHyV_rnrj5SVd*dh4vfL*fC1s8{#Cm=V{1fF{k36pG_9$`d`f zD7~r4ut64pY>x8)9GdIO8iCqhb>U8}oPn0Djvp{m=vO7lO~nK6hb2E#@$ed;IaVv7 zl%jbPpMkZsmB7?`CUn`Pc&`Uu6ivNM)JswXSGx~BEjI^QmPm73Ty=4*Vt_}%q?MF<`FikV;hF8SvF0nPPA#1OQnH5R4NZWO_8#%qSUFYom=MLIV$}mrGf{1V8Z*z*;!r}SHU=>tzaGr=c?2(&VRXz0 zX1L5$dTCJ^>gCz9r02_2(1w8|>U49+Qgy>ti7zAEDslb$HrMD1B!5rIv94R$%R5P5 z27l4}(f^jsdBgST+&u-n7Wu=jb+iYF5j-`WrYE&S_Gf@_#G#dB550_t@zG<0!-^;F zCN8q;>f>)51@KMH+C_DFzi9(ULCv6zc?3n?`l&rWfZJfGWQ zb5K~AMX9B}`wi&p(;C_ew^lL!Qb1}`s}wAV0f#Z*nYd|riwapy`k+_nA9J>Ebz4X6 z&!K9efd+=xaCVtV&RsU-3Nk?SG1xcmF$K75BGtpxuWL;rhT*GcEhZW4Fm%<`C&ZIA z=GEX@IJoepbi^Lc&GfURP(#PfD_yNr$pxj27Q?d%&o>BBky7GT+ISrTMDWL9V?WQ!Q@@RSUb!eMs5^SP?s&>y%lS$ z$pWjFbLj>O2XWqGm8cde2~AFKF=-MkYg#?AeNejAwV0Btq2B?vwj|gEdN-YDv@CV# zxZ1fbTtp&Pi)L2!@ne3Z4tQ!|-YPV=dytbtXfMDPI%+fD$Awk{jC*7JRm6Cp9^&Bd z1xbEbQQlrnr0dw#8^3_rA3~eo4Xw`JL5hDTu9my3lf5mPKgck59V7G_dT%Kc1 zJEI4d{;-1EguT;&(cY=d8;Oxa_kYSILm1pl^KRu-WI+`;#Z}F#?^CoX>@jYO9Y>T$ zD)^8$fxwsGqq>#3e)c%_dyekzEjbTUU@BHunle$U<5hN%N~7n%OivHBOY-WrGP5u! zm*qZ8M}jH+n-kR*aCVIY<<6*wj={bTfVMbVe;OMhtpSwurt3EjOWDvnYUeNbAf$?p ztaeQ8M8oJIp<2s*+azd*C8rFB4`0Itj866+=@#8rp$)EST2rau#8#pOTE;ph?uCL! zgAex-Y#t=e(OV0*A+5b-4-dM zS_#;Gqq?ElF~d&aXeIakyvlwmGy^yu)A6H+dhm@uCC%qvM30RBfe$~-oqRe%S!*p( zSU1~dyU?;xC{5WKZ)oyd23fWHux2&9xddQ`XH%iskmYHizDJOL=mP3}tW;db>##Mp$ML#@mAcqAq; z9P+|ypHOD7%w~a7kBbF;TLij74guSA@35bqMp;$(bD=K&waAKgXYG*5cHj`EWPahbyiGBq52u~YDz~ogLhFEeID2~hqJi)x7gW(6rKk+vr zWmE|zsjyex4yMyoNS!Os;QD74j;T#mjjcoK3$o9VYVTf7YZ##fJIK4$O!WZ#aA7x- z9L6DxDP-7uPMtlvgwFOx^c)epfDcC3<<2uk?dEi_!U@UQK~inH@S%hZWPApb+C6uH zE7iQfmXv5g34_FkX&9d6)~#5}Kz+pyQ3>QiZ&3sR!=Cbu^iTJD)mGeU0BTvBK{=tB zYdgMVpYi)5gv4B0ZjB#udACCVOT1N+fygH2fayQp-;2>y;;JJ00a6oP&Ia3bUP6N zt+^Ay&^oPbJ@XJTwM9X)hVqK99`0%%3>D=2fIB~;4i?qq?cdLxf$%P;UhWZ8%|WZ1q45fZz5D*XB3@^n?dm^m#Xx%pNJrwktfnxwe^hE-Tp zhrOF&-A9m$eU3@|8O7C3aYOfecPA9v!xde$S}fhNG&|%IBZX6nxFLb!#zI7=8PAVy zrS`pJPS|_hy@Y4kx-nWb+)KAHQ3+b~{+Zd9j35`jAQe=vIiySMD;Wt4?64g6ZcRX) z*rZYYp}o$cGu1~vX0}AEh&$S@Y3_Y~$fVANT*A^kpA|H5_I=smYz(T{o2lm@B0-Zo zNMpq+a6LTylh*NP_hYn?nbT%gcKlsInw`v{#7w(x{TxVj&|6wF^JoNdN)=SV8_ahc7YPdm zfm)nu;T^)3VvWhtjV%Wak{>oq#VM>$k*cp}Ec8FLH-LdXl)7x|D|wF?X9rY)gJ8KQ zv!NOxv483#)r+bw^dOW@h)A^L#HiKmKcMaZDaRo~2#6>-4J7SA;e?$+tA?MlUwxC< zpLxe~ZPuEA-pPYap1r)`?_SWCHKoT4@ObAc&9n?2)@nW?)d22B0;z?hP*tC3S5amm0|`fcBpdN4@Z133Exgi4eTsf zj9uv8gm%EoqwlIT8I{MKnBp6NP3SVXO=z#*{*zCFv;dQpfR&upk#i)M&*L@s3e|Cf z%Y7L0IG<6DVWpAvu#x=6O%{nr@Qh*hlFe0pi+BpB-{Q59JUMQ)o{Cuk{_D3XVkcKqqmaYxuZqU z>C<2o;Iko!rX#f8a_;X>n>{nQZZ=~_!NZ>Zr@L&Pu`bIVF7K=&-BZk)I0WUkR=OIS zHKEMU*K!NpGPG~y>co6Wx z#Fu2mJZ=|m-AFF$(YlX$ho;FhYh6)&n@NJTX?KUH0Q(=tM?Nl+CwCOeemRL#Au^fu15X4FvrGh zg5^$S>yS^M>UX>M7nckG9}Le(tn(5@lVH3()bQpg6i(P9YRVKAtH zHa|ZkV3A#AfNby^|8;w8ninc@3yLw^?`CgI%|KwA9R8)ynK zkC)t)AIrG@6weO_pgLdIFUnS**Z#*q-zdZKLg{OW1SA@Ox$vi-{*PVfLoxNVopqCo zO!%o?>g!5za+pQgqU<`T>c=-K;FF}8q72y}#hr!|Ux>1n%I&9W2_Yk|r8C6qIG@`% zFDd3F?*3wp=etPG(oUqPg86SDOf*<%IOOv~`(mTj667rQ2{hmomTJ|TZQxteMKooze4u6Uq6!*nO9(d3|Qo{ln8lq2cf^O|{x5T5U^^w>ltDj|254 z@y~(p?B~$%3WGs&9if$b79YDgQ%y{;XuKsLxnH0TXVB~S`7xAfp=?`BhGl@088U?P z4zhmn;YZqH$}ao)i*}Syyy;qNO3n>U{#o>`eL!)E${r2#H%10p#zBHx7oUEy--UA3 z?k>3q*|7bMXVr!Sy{i1iFP!|mw-7u}u@0ORq2as?PJS2;q(<}eU1p3CVOSMogEu(y2|_v~ZzMt;%zW{;#BmiK`!H;Wn9d+c6JZV4GhAG~zQdzWoio{IeE zyo^nrhc0lE{YjV0^DSYY^JwRf7M=#q*uNW{H(a%taN7*eZ4m)Zp#HVkuvbiUv8B;N zy;XYv689+Q1&p2GH`O$*Nts5WW7#Ov%GbS$TZC_H&)*feprE5i7?;!srNDZ5GnJo-3>P@%myh zK$5{KN?zA`67vw={hsDmqOzWM_dR#@(!TtCQ_}fq7Gsb8m=`w6&3j&(JLmiCdq%`{ zZ@8-)*$TRB{{Skc|3Knv(>XitWe`&WwU`Uu9=X%>$&-m=O{a|AEI%`H2Wc!- zJgW?UnQjlHl)hv0m^0ySX2jinsTemq!|#b}_3F**-NM|^UwxwzLO(uK>9L9xt#f<; z#Lp+=27)irA(r1Tp-org{%?FKjh=W`VL-0B?%^f9OCoznz=zOcyo&p^G?Ah_zh@t< zrG`Ouj&wR47D5Va3X*A{0|+m#CNwnw6Nut*MnMV@F%rY<1aq`W*WdJRWvtrM zd*Sp#0+I)}6&60I=AsbmJ4w^7rtI$x7T5dUVmzkuN*>1m;UkX~t935~BwsC17*OlPEBonBT|?LWxDrEjEfp z@3Ey`UQ$%wM5&->vJ!b8g{}PO3H8d9YD|b{^?`w4L%N6fH=6a?(5nM+BXIQF$9WAC zejPL(!3K+pqf9|JDxZf9jaN`Ym()WJPaq@|{(kT(hiksg~U{Zd9x91K#&^RVO=4 z3oS*2uDl(*cV@DJqTCz&5ZJz4={HB;mlgS0mHBZoSer^kDX_G~YI`U!Io3`}m#CQ9 zcXqXxO|65TejNk^oPBBpc)s5%jxxI&HrxLO)^a8%Vcbl2WUnF;S$L&foqxuUP1ooG zycFj{si_bupJJ|}!{q`{SoOUR?s%|su>`f^yb)>S^ndo{jZ-!6gEj6ThiL|=$O`{6 zev|Snc)ab7MHl}qXKaopB3ZqQW?w$!?^fU7?@JUwr8o>FCWc$lMA03I2WjhT>pW9l zLa5tmCTRYSjxFt5H`wa}?kaZlLo0I|j+lDO^4?q+DRLZAUfhVe09@+0vYy??5%ZuA#@cT8u50Jnu-2`bMN9gK6_? zG>9h>c5Z~!{F3?kX?14}ircVmmtyR<6nX(GuE>T798Cld$8y79F8lch%6OE>6F5F2 z#;{_m5i+6SwEPOv3QcMPocsthh4n?jq)S?a>i20yLJC76bi}ptbWlurM2rqin2P`4 zGvWrG`3nK5>#R@^E(+*~v8k+2B$FxiV+HfP$=aL*i+W8;F`C>6MqYEj`>IFX8aXy) z(-kp0p9mk~I-q^v34-~i;Y6u`|54l3MkRTM;U7Dv9kX=hn0<(ywlqV7W}Q}8va=*j z%L?a5p(rBO{9Jw@h~%ksI4N4?M;=qpY;Ac!J`+$dODaMleY6Pb56KpbOrLq^>`f+A+mVq1;9fpvx9Liu4 z?c1%`1{Kpivs!-59t3dQ(9eM9-M_hkIOs_~x{*)`E~l#PzCXwx7Ux8nk004_q$Fir zs@8BEh3?vx{^x8C6|$RHiY^Ce+W`j9TUyz@B7Q$CY92QavHG=`*>fk;XzwmxpP@!n zgGpLab}H{vq{f)gv%yQw^4zYi1PMCv>zy5h_6l$nRXuJRINDUG6Hl;&%?<^D27$~O zr`74M!TjCz7{LtIa699;9cP?LY}$Dn)MbMwq_Y@wwbJDqx{O)CPhGe>({QYEAPzcq z-D82;+f3M=m1-QxR&ez3Q^oCYRq-j+>7G2jt#gFAZ}^>L2|)wO7%6LQfE`p9ELrl& zxU!ZhEk#FW7O7s9CR`k`cl3?dON-I|c*w~5V<+<2;+5NkaAO~*8pI)CIX7Q!i$)+r zaSAnm4r4rKP3pE0)ta$zU|R7<1H;r#agWL8Kar2^1j7sI#@f58D1)fHO(ey{$QY$` zW3-H4Tw(5*ToWLWybfJNEjTo!?nHxlEZ#kAOP=&Bx=6GUXMOYYUT^=c{zx*uBh82*>0G+Q+2##ZAEU3A9v3Ve1&C*xJZ39 z%t{s8l>O_ok+fO6$Z}?S-n8$al}Mze?_hyXLi-ZN_!Z<~er)G}(+$*ajwc zB?YSrFS$qS@4KtY&@bhJ6|r1@aM03^E?i0{N0g->iuDw^?`6Xbbbw`t>D(%3bo0N1^%U+cst8yngA>7YPlWYd-lQDcWc zj0rcsx48i7v*Uv?6gKw#H6`L03j9cpUwsSq(lKqtxm&jx_#kBjv<3xqhhgV=95)fn%2#L zYLjYcG?#6-X*pjKj*mW-=H7o*?ebMF1O<7j`%pd%ODnVaA=sBi$XltOAAK(v8cq`A z2Tldl9DD{rzQ2)}XWt}+JYA!}!!Wds;!Z7jPimjRR#f%ce@{Ai^I;@@Rs7)vG{v3& p{M0i~O^q7v(EnpMr%ppGRxy42NDB}Tf=HL%LAr_%Kq&!2 z1cVTJQ9}u#hJc|%2!WJ0=sCyVdDio-_n+@u>vJuU`%Y$N&z`;a?0wBOM%*>hImUj5 zorQ(vnC=~I6Bd?(N-Qh~N)I1mzNxyUu*m#ppO=ZwO_uUrzykB(pwkV*8!Rl9aU9gg ztjy;lpgR^`EG(R@dw=(#Jl@%}un@U)wQt<_11{3s-T=t{6A+@q!Dpsm59Z5;ya}EtT zDk3rE_t>+I_eiANi7&6tg#tkb;#n?*9cO)VB*gj!OZdeOk?Pgw=8=vhv1XGJDTe1#;UuFyas|WzqIx7n}^Sb{`&FeMz2mVXd3#@^YNP<=Lo|4nNwn6 zxiTrv)B^L*moEjAzkXpk5EpXb*KbGF*g1dwa%J`Z{Y%&T8UyLoo5&Zq{NMd-9%W_w zaI<;eUJvu9**Wir{qDB^Di7ctJ1g7X`?pTwN_TmGk76z=6u5oWpD+pmS8v5yH<={D z6=9tMsjzkiOp}POw?-Yi{HK@8-n1Q3-RC-Qd|6%hyu1n!R)P___^0Rlv*Ru+4ftCl z^8trg{|KVK^(j}XBhv%1l)@VoQ*MkITlpiwd>(~M<72K>!Po%l=g#iw|7n(we`#jm ztxB^7-vzzB%mdgHzW+eL_8r(3_HaS%5G=g(e?J)4Alz=4Um^+r5xD-N)kKPk0&RPV z*_<{dz?jK*^_x$kB5WB=)Uw^!4jrif+5nLl;2l(t3%>D7Z*QYClJu{#IbebsW+%Ig z=1Zo$Xgkkq1K(W^*rkPr*!e%*m*?>H*jOCgq0OX#_?<-78u+`V>YU4ZV&X(1jIsPW zI$E1D4(lQt(Y2p#EUcej>#ZhZr}I9{FOj*~WAR=SiqLP#PiAa`*DNTbl^pAX0+?AR z4C8Vvy%t#9dekHxc9QZ|J?Qo|0mPL zbrS8KXwDm9RBk+>&nCfzcljG=q0`EJ?e2rkt=%K6sP*}W@XD3pFz=Y2g;Qr6up&CX z?6G`p*EM+n9tJo8w;9B`^KuaBm72<6@#Jg$_|<@y&PJjuaNYLeA)&G;ZaMG_U;1Kh zYcU^wcHR)&8uPf`7dgl29xt$*{#p?2=x8rlZ%CE}9@_DX2Dmm=JG8CLD6E9pM+X`2 zV|kG$%g9js#4vNPw@(e+*fuUqd45{x$E+9%d8y&{?O8LjrZ9~3#F!HigQV7|QHgC& zL{e>`=1sIz$FYFfmt4@f6wWYe+e()vaJTOz)pmU%*!uyU$}xqHq3$xsI`o~8d7sUw zavlH-c`lbz6qnJLtCy;pGvceQL7Pq9Eb&_RNAxy%E%XJ=efzXNU?bB(T!_;z3Xk$G z!20ckDGpt$DX}A|1T=I#uhZjakA>j%8xZ@?S5jF~C%3xaPM$io92y)TFRfB9J5Vxt zC$c+tV!W{F-OBk}Oe_0xWoMOo;;yuMqpC;t`hT^^Dq?Kw5f;k05oOD%XE{?;8l)jKbiOO zkW6W2IFYbgqP$$U5=M%!LCy7L(5191HuOeh;JtE$=tNvsOxgNs9szICfY6$gL2rZ$ zrj&W2*J!v!!;^4J2ucdTzTnxMH#Q(6uB6i67E&Mp@tF6&#-|T!u!eYgzn|=&H<(|P zms0x4n9gjEtt6HWY3XG>Z?m&9{E%S{`?9KDPIkbM zb%td^V?V}HB?Xj~5@VmLwZl<9-o=Wns9E%O&^@ex-UP?ME~&7oWQhFNZj%AdtgN$r zC+C9a;>wF3E4AAJH=56+N|U-0h|mT58o`F_7}8vgTV)pu%c+~GM!`10&u7WA5vk=x zsk1hag(DP1ylpZpw=oG=<(=x-bSal<4&&j#B+C*4rVg0M&$W~iAK!;obgHkF`hl0Y zRtpj@M6rgu>mc8KnC!n`EJPej`-W5Ig!02>=-kKdVQG9R}#`!(IKt|&B{ zCsagR?#LQPSm4@}p)0#V`e5LNX{_TXb)`YlNF^?4MM#7_cAG#Q_5*u}j-vY<_uJ%d zvT?hcvV7Il;a)M=Rlm^r^jcn=heX5DJUu4e6TSo%jMB9N72?PoDa>AuE$?lD45Ytex;jLvK=eUs7~6@PLLx5*KHGl1zL zKA#n2WR@l_WY%bk5cmh9zO{S=;F@kMk3kjA44i$y1Mockh$H0lbr1*Vh8Iy?sVe_M z!}zR<=aDzbXP#P^*cxwpUA&~#U4t5P)KA{@>E1$-Q9NR6Dk|940)g<7dBsA>6rdTV z5)l60yL$4S@r7>ff-6taozWFZuf>kV=o)xd6(qisL8pQl`xg!JGdfq2?=>0`SasGk zE)jNugs~Fm4DK4FUAPc0b0-q7UE}mu`dw5a#e3SF(O@LTphWDLe3nwmNWNrw$i54^ zWWW>o`c5$7@l$)8L6C2Pwq|ps9i13>FLpxP3 zj7tXH4Q;T!?Gt1Ll!RPtSC#3k^^NJEG2CuTlO{t8fFqObs_1v7ev&nl{ht-Y!fS#h zbGTf)^M5Z z@aG4gs#MCncWZvE{}%|-vj2Sj#|QV~*VtoQXz%%Xvej!U6~@c}R+0_@W}w2AH7w*x zQ0^;k1{PvIq1ZD~x~9TWl&6O?qmZAqxSKAMZ+1#3t*?yzKyp;c$*1}S_3YX0o57Yz z@@@Oscs@dP8q~0faYufR%y;ijT{+q~XHd(qeHKFKr0H)|=LX8)GH1zx3|-?U6(7*n zk-+<;{?Q2srEBsh>0@IO8o)51# zPsLaTG*7LZ9+2u0+oYIWN8xLVfY;62S`F(TfIdT9tvqb$O<%D~9wa}>SSjxO+@C8b zEdFux35N8Ql`+1R?}4Wuiy)07!=BJ<_{~7}2@Ww6Y-R11QzT}Hye-sOlo%i#&5Vf* zd=X!GuJ#Pwq;F_VnKFldIHN+I3R~%FCC7Ah40EqfC-?r?p28FG5t{uTrl%8yMWW)3 zj$xIR4A28nV66ux%!zwQnl(?AU9|-%L7woi$BL4x4*>G3%-x$$=<2g%2lB9U!sJ0k zw<3)0f)fi|!O4<+yeEq;CMHq~rOb01%Ce1ucXT(<&;4F&sWk&<&tEp=h@Dgj$Xf{2 zFe_IIZ zRH`B`T@~reoZ7t$R9!Qql*Kz|t2SMpfY1{Hhh5{MiI~}Hpw1)>Yy@RSyLek%P+R;#%!tv z=Ym~*1_hphO}?(Zsz~7yqc7x~8SycUn_GSoGxXQ zusc2$A}k^6wQ`_j^0iD9Qln-Z^4;IIni&mfh?8{bNT|ChNZW3)4}SA2WqhlBHZ>vF z%7%;O#bXo5y_{1+EswN)mY_GApw!*)__*>XJqn_R#Fszj8HvV$;34Vh!p0C-=Cg7sweqtJzRS7CUXI z_p(J-xj@&aAw*d6%z7t30PQmeo$P;O zWbU01FQGJu)>RtmUu)QysS3Fvc83!2%E*0l{ZXS>&ZDrILANfOWnLM>&NT0J9$+xI zmLb#MC6j*8_de*I_l2CL;vWG|U|A$KR-K>=?mvj`eHYpsLM?o=T5u=hu|ZKaeaq)h z;8rT+oheH85Rm;XorIPk*Nwg1a~>MS8s4c{Q;(GhOv%3s`nr-giCEzUj6li?_J5)F zzP9_3oB|*@^g=YH&s5))P>lyvkbZZY6e$(d4_*)}^Yt)R2H;4)rW1#JHB$U;2s?c zjTfpN4$-PDu-#{E;WTvfMb>y}fcN9o2p$KGy?5;@6 z!pb=z!Y&*<6@Z4+ZR40gf<$xpigf};y76HjB{fI4^N`gQYKceZRhjI*n1)TG)UCYj z)dV$0$pY~F(_o^@L?Qt?ScfPde|RLdyb+(m`QVlZGS|Ck^7^Im;V7+*O%9J@7guA{ z&*v#FE61uoGb?DzJM1mNF54r~k*Ay)GmeW;~X*BZ*$kkS*G z5$>gI6VWCQQQ_}5#f!L%7i5{Wp69PxFQFh&UAanKadT_aCzXSh?ZtBGO5QCvvl!@y z2OCP$oNwnS)1$ko^Crd|;Vy*SR41eEjwphQx;pH(1qNp88x{T`zjne{Tq(u4R*zF1 z_9{p1KJxr63d4cD5c1XX(`RDtQ-o&v7J8NSm8F`b}AN)P;O{NA?eajJI zzm|-@Cx3<%5J004?_d1jMb4j2 zS=6=uZO#(#>R*Xj{y(88EdOud%qg%C4KG|6vN!K}DR$0B9sY@)gS7wKV_Dq1?@8`| z;i98p4LL@0IP)3t3;s!(>XEPv3we3mM0c<})>S_j2Hs4EZ9Wx`;dVV)j);M?;g>9Ci?Api)v+b6D_*qV| zP*%St-JrpZP;~D_-u_We?Ac|adq>&+ot2#UT#jI}Vd*;eH^9W+!pH8mdq^w z)8!#{z}OXguGlvF5%yS@PvD(}BO^$=QdjIK9%H%`8a>X}C^#Cr=LhnMyk{)RZIOZm z1eu`9xu?jgO@xGL)p&YRbti}y5Px2s4RwwWP~yvm*HW}K#yHx$W?T4%|1$B1pKcax zZ8dLM}0J!|N9% z6>$D!b$B3N3ck7{Qu|q)``1b>_=X*sipg{UE7+LtV~@RYHH#HRjn8gtt$R2w0&#k_ zaG1HWxl-4dE}VMH$S;s=eXpKteg?+~FO}Dacjy);P zUy>(UG`N>W8)nC6P|UUsh;H7Z)Pi1V>7fFO>^*R}G*3#2m|TzG&`wQxik172o4N$a zN!K_)x#<%rt=z)8SyoZ~yj||dIRT=WD=p0x+i19@;NN{U0D+jQ-O+}Ostd0=yrC(Wx+FCrp^HTorNU}Q<`MA_sdNtx6~%$z%pXzc0=H^S$bx-$zzAbzQ=vXzyZPQ+VHR<# zV_}Ersu9rbv4+B%7&hmHmxK~K5xsii8^DN9?j-FSd z5unwCc6<}|B2`)$ByCYV$_EHT6Q98$vXTAV7kPobT4VMaH6rayBq&q40`CX0Cx*M$-ZgD7p=K9o<__>HI4bDxaU5w`*;0UU`ufNHTC)>K$(rCm(ohhEIwY*7gr zy%prBnz9XH!kjnk$)nrnGT5vGHa=M0-n{TD!pn*G8ds|x)b>qhWC7Sk&sV>nv<=d9 zXNYK=h#mRNaIG(-g>G(|U(xm9Ja!nhsFKhds;ct&(L+w`iRdFWkKydGhP!9tOcxjH zT-n=s1Xsd7RWY_68Mucu-apG!p8Cs3NIOqERzsRV0u%fpt88o6Mt|OFzPJ5z#I^5L zLgcLoLB0fO`A9MO>O=;R5Af7KjaL^lH*NC1ZoB|2=NA{Avhz!LyRH~Afq*CJd(_|3 zhW)m;14TZf8qJSr+An|)M|3R=IiU(jY<6L2;-#xo?&{~&g&{AYtmUcvx0Uvlu2fDM zBq6jo*vBfK`MUSLz+X~oL>y!S!;0+_sx!0Y)HHX4bpaI#C3eQo++=>`DcXo=IB6k0 zGhr8;s$=myRm~4{yVq8~e8k`yE9#K)-2iD|APieE^9~xE6vn;&_AI}{?Def;qD^!B zglXa9<$-DcfFD@p(P`~>`ix(8Xt4~|`W^ocJPm$m6uXktkeLOjkUepk@A%m^0~ITy zJK0*iDtZc2UhJ{hi!yjR$MbpvDdXm;C6T+5O1C-rN>&hQvx?piL0PyVw6c7QJ=sF6 zqo+5y%F=x#KhcFDNSbcqw-pK=_+hz;Wrf_irWbX$6mx%tJ+_#rViuEFQu(Z~L+R5yCcMj&g$tB^6cY*42fncnd^>rFkOfBqZ~ z04_V8t>p6%#8Z=3khc3#OdL^WfsVJI*(#Y0tYEugyu8a5**Bh%Ev6T&YUtEw^F*0F zwr6=tE}gP4?#B7pN=7xO<6*_-UhF#>`4QXC9ocIG%=t$#FJYqLHLnumT`%Z0-)NqK zLD8(?mhaFMrXk0wWV`%da+Fh-Q z0V)%x?rkfiiA%sI-&}>*BhH!z#Ia3K4rKPI6omHO@|)1SR{8mf2={m{7IVVMqWVV7 ziuz?4n{G4S4YPc5?`G2Cgiq?CVJ=}~#+MZ{aXGyFVwa@)4VNaRj=0ig(hnm~^u<32bd?Y5XRglRU$wgKtu&j4zBCwiDvQY}4NpfTvOu3EiP4 z80c~|V6?%|$1vT+>^_JGhGYg<=1(%D&q#;$ zp!HFr_OAN!`;24~qfDz@tSUj7xvIi!H3uOk2O&3jjNR*j?Xl0TBdWbM0&=1V1y6H# zHUgL4EwXpET&rbT!D97CSh8K)O;6gq!Lr6fa)5rf;Zo9BNXhIb+>)+N!`5N>U0s5> zN=4{EW@?-}qGehxy^(jxqTUje6||_?xwNyd=_gQmJHf(-B;!Dq5rIaJ(^a9m=o=l! zizkw$mB6;#nc~;hIC}Z}gXJ`YVk~lnhAzO5KyR^zTc;;1`S^!hjIiq1`{ZBQ=PtOB zrrMX8OOjKtE1|~|TGVx1*ZW-j2bk%D@8I~4%D#=jO|=F{hAF%L zAS6UsZZ9Qy8epQAnZSzraIC77UUv3j=}p)7tU6DYhjTbrOcPeGnPo04%33r$w+6Cz z#oWIJtJM}`4QDhwUPJOT3l=jA_}ZsjnnAgB8Qh^2To?rbH42Lb6KwIC@65)fGhc%3 zdXT&IS@54WxyP##t{#5oWZW@}%Vy?@$Esu%*LKoe8-qSA4quZF&mlgF4D`G$>g$mh zKlWoz)Yb*#_U2cX^)tHLp`oOt)1ckODX#OcvsMm6D!XN8O7SUU3LRT#ckS1QEh2n} z`tF;9-i>yLMh7_t1>LOmvDqA6Qjfr*=Udch5l`35njzy?Fj zZ_wwCRV{3lRk^H$0yM|$wKCO2cYu3IEvI5b&cH6l>PfIdz{FA{4pXb>u3tdD8f;5^ ztkb-!;&kG-*0!($FvNfm#KXBhkdw1y_DUZ1oW0-PY5t?t5igHMT5p5IV`X9);gP)dm|_7cC;v+j442uV2)qXak=|@r}$U4KTq}} z6gO9sMld)~)T^S|5uu#;6-Hd*a+S}5d-K3YY{yNeUH2cF=W5&V{cObFXEvb2P7r&_ zy^9-rc{{1c1d}Bp0 zfw7f26``||{N5~!$bIvn_Y3;<=DfWk{L7Q!kb<#^oP=b7kqIHjF0#oq$A2q)dDwB! znirmqJndb_Ddjo)8O1_HY?XPfQ;%0o|I$LmNUJGseww1#0-h0KKpE+a%%6BMm^BEc zsPD^l&)?sqrfjWAN<>1Lp1eqpQtZKpzIn_9TUcH+r|<%V0$2aC_Cu)Ja*dUNwT5Vk z(M`12Z#XaMIFlKx`-e}DGQY@j%6eq#l0~y;6NlKTB}aJPLNK$aId8Q0(NSp#J%&Q@ zS0?|wRck*lKQ65(|8FJz2o%POGIrv(1y--*$l4i7Oc*Af)C zJr%xA-(BgVaKIXFwSxcP6Gv+*CjDrGnR|x*2bOp#r8Y4Cz4qDv z_K;6XsYUC-=UKnfhlyq~4;kMp|I8JS){9-do4gnZums;nh_U^VFue+))RLgZW#(Vj z;>F~?{Ij0Pr55P5t+AC3qE{*&TgpFflArlU*%D?x@AS;U^UBJbV-IkR;0Myyi%aJv z{tW2gVg_!cZH>wKE*L69r=HioHGlR;$({TufDyBfCI)?X?YxAg_xzDN6Lp)#-AzBn zJuLr>(kd*eT!m0}9ms=tTL*9G1zs3*U;KXK7lN>7D6jNCA(UJ4XR>{95nY_>#wY=% ztkoF8G(xqvr%6=vd1SQX|MVs%p=`M{kVlxWaL{?^XI)P%?zX81ICTXfEjt+g6I*^< z$E9xLJ|GPD1`z!bA5nHbUyU*Bn2-+{~CS&i5FKTtd zrBq#~@``SyFo%_8t~^cVqi+=d+*Z#Gy5l)6O?%w z#q|X-SYcQFEQx=12x0D#8{lY5U;7r=)CFtC%QBc%Gwc@lHbyGm!`Cvt|y}=?m(~OlqrEzadY!k524P4i}*Xi z>&rF@*6iHF-r%ZjlzqS8P&4G%w#XY?+%mtG#QRBc>hgT5Ze7X)b@7sb3ld6}JSi6G zpHBi6S$0zQ^s$E9-5^nS-EzGWrJzvyfjytOX0afxLC*veVd^6ML%9QgZQFiKmHVq; za@CJ}*e@%bnhB-dl7zJGeYE>I=F_#TMmoykLQ z=cn;_2AzwmuF~$8dD%OtO4%-K-c3@>NpRabo??Azx{Pp)(hE!Pn$~)>g?_(yH%(LJ ztSx|Fl0>2x2cj0`6BaEJM21`KmD`}^wW{6c(?9<3)#?*HMuI-?K3PVH_Oeh@qNI+y zwpiuf9o5>;o)}ME3f@6`H5bCsKBT{jxsk2{FSX7u4!dHn?l9^XCoeH%NuBRkm3753 zC`SUftV82Gf+3%vvPKEen9qUqM$D~%@$G+MU0&=;6g#qz{5VdU9?K4S%jFyfh^*oB2HjZb|B zPo~j^l?OX)C;Sas(RWqiU85t)H|)WXH5FoFn(GB;vCgR(AsRqq%kkv5g$)cCVvOh) z;wHI*)9J&J4D9FNkJE&4qjN)O$8GbG=X1a@+D_dqcG$*bwe_}gP_{fn{f*6!I%F8C z4^sA1rG;=;ND-p$G$y)8^iuwA`?7bp-8u!@nAo*sm--Q9tr=8?Z~x4!7lF{7P-;l| zjHaWAj)^-}AF;?#K5rT$cIXTH|DmIykUY1iZ+Lje*aWpb@7nR;yu=SZ|Q!uhntl{E>iuN+~(j|`(O(^sZ9 zav(UgZ6XC0Mtgxx3!JiZbO@5$a zFAa_0nvr#YmV}pg!As7Fpr90PQ}@}epDYy#Ba~1xcjv`ZzqT}sffjXfYoLFg>t9SW zm`dhDpBIM{+wBs&T6t>iC?edk?Lq@1eQowod5FU+-*i*ZL8$#$S0g@*)DCSV)@)7` z7F}7BaJ2*5E~Y((;EmttG?$( z^F2TJ3q69RqQn~R?|#{Eq9fY9)>x?aj(bbC#-SKD$)LQ~{yaTR%5$-&I z_d68zLHt=>nV@#+J?v)Oyo$$#u|RO9&0HA<$j9(~och!QF~_ylvW-v7+zuOzcx2~K z52nPyy(YX8Q>lgGNw!YAM;@=IWsvZqkLU_>G8?(2<^hcH2x65pX&9e+4KdLpD4{wc zuafcZ)y}e~7mxtQ*sq^)-qCoyO&)Lb$xsWXVC;4=UO>4fQfSi?+^#+}mo=5SV7L`E z2$JdS`7;=+8v)LGw7a}4tzUb^8o^q2s9*auT8}@6m@j_mvZYY|$)wYjZ#U=Pe(raR z@F*#mF6s;A{yfPwtLAZmXp@o~>IbzaNPBtIqP0a+a$if=K4jJLe3Afdq#k*_kv1n- zVDH~G_7OG&1qh7cu_=oCTu4+n?61ZYk-Kf)R@4wlM*U^nibC82>ckXL&aZs53AMhn zac2h_!7aHEuLprtrdmP{Wk{CCy8^qLP$|>+*SrQ))A2FRmvZ_jr&gDca!<8zgsLPMbZlMGj(m-8x8#&XZf1=NC>qZ zrC4xp(NcgyEPj}v#t?JFvG6Vk{8q$ww9Ig(qi@^PUiMu+QQ8^KF=GE zQ~0-b?nEWX+bVx=K7YAcWdjm%5mVc>0eLN1;JyE(&~$v!YPh@HU(V5J#y~dp#93=# zouuZGrUs^UFy_{Hb1YrvL8fR4z(}q%IjCLa2 z?^B1vS;L>L1sq@r&o=hMziN+V7Mp80RtipQB55Wy+aaTCsA?szV7(L4Tji4;e38r+ zAkEA*H-la@7ekXa!nX&nWgg%EeVs#?A&MGg1_ns(k!OZ?L(^rv-%K7qIK5a?B*{&IH>j`!(dW-07eD**Q1an6&j% zM}0J=k_FDF7MC&s3Od0y#n|yysFbn++>_XT;xuhTKa5z@DG{gs2B;{hNc|QSDsMM5 zQe`Ul5Ge_*)3-Co0L7g!)f>*gKv`k4Uw=SQxwi~m41pjPd=-pTUXb`P?+e<`8J?fI8e2htclcM(Wo8*h05qFVl;{_MaSjn87 zHfiPoSfKC9T&*I?vnNk4iHO`Om~_U*rdISb3(3}B6nOF0zvbC1oa~>~k8Mj4IOD_> z%cQD}amSBp-LE2rr&f=4315=W;N$J}8S&%+*r)xvT;TAJY3J|)G74wS_2BV^m8ej! zkb%$I{os5WTt!7($v}7DRAQX%{j?_+)fb*B#fH2*%DjNFcLe=+co-TA(b_Ot%7FO4 zA6CB#o=7{H#O;`+4ks{Go*<|<$i#?wc-QL8xX|YHMz!w_bK0$KsWEf@|5N(L$@zyF z*{)$R@WLhkPY|CEjYcJ>Dl_*Wr+3ci1r`cH}T?`r*9$FU?m{@*n3 z_X+*~cf{Hm(ScG9TWIgi0a*3FGac+}M5{g(Vt(*8^*@u_yy~%TG`e>&WM1Sy@t?Mc z-+-O?MNp`cyy5k?F8}{}`pilEG1LFwu1eZp5=ub-#eK}`@qirV12XIQVD5iRr~3sj zfZraxdjQPXGVY+o*?>|KaoR#;wT4kE}D!gNUOI|t(mdh(U62Km202adH;Y(c;!8OZIKgDdx>PmZY zPF0SbELt0`_Q!^}J^iQ(2hzaoVuQa*?tiWN^xF_&+Y4V4*VIe8*V{uIH2mYlNRCyx zhU>({wM`XA^|b)6L{gzrhw*mn{^mTg@5y1{1i+Z;$WUI61qbM%Jse1T+QFt7j_;oC8Jh(EeU*5gsC920Fyf!=Z z^WN2%KdyJEcv9Tx-3COVj+?exb@S3m>p3aRaLe1F5Mi^M!(EL_-3gNVTOEfJ%3&7G z@e)_StUBvTaALH645y&tio!HX4>O|%3|0C+)|>~hB)Xtd{4yedNmjmV@O9w^voXid zwPh`hC@CfC*bsBB)x&ds5OCjt^TB%({ToHDo?_MMnm#YVr;_%rRzeB8e&MVsk`|bL zLaYu*3=tj?D6%-;|17;Yuz5;dTH&mkJI-x(T1_Ux6d?VwA!I2e9*?dh?yXLxNa z>}LsDnhuQ~Ci^5+E_jdVDSRXgupEm1XZK@-6!gr(Wv5mi<>PKN=SApqsxMwJELZC< z6w$7-t}W|6e;KEeKa5bAc9ZMsCh2I>pxQ*1kCbvcoCPxH&dVD^?Y;~RgzXCm?hpIV?9W3?fe5u;qcduUd#=DP`EGqZJl|HB^ zy|-Ek=Pj~g)u~{Dqb%1I|JxMDqzAz@KY9#%-tP@hgsHaU166`6#g+Qa#FciqSasBy zm+tzZ|Jg5&e#ln!?bM`*F|_Gh6ZEmF=foeIgGC?EQ+;!c3f!8u;VhGPAeTB0ny~>- zS_dTa%`s1j=x&(~c0T!i4_q9EoNnX$(=99IpUUQysw;}@aeQj+At@g%WQ51I&}+{7 zN6ROjtzO7y4oi2V*AQd&_RQ$fW!5F->z+tMSsKSabBa?y^x33q%Y2(Hvg59Tq8^TT zTY={d8_VZqM>f;5!IQ%uyJZUPx||i>4~}J?NnV<(`B6T0+0N9d@W-6bT(Q_Rp^R>h z-Ig7x^UqwAvaa2(A9^CCmiBJzYYjC`Ac|nB41MI~-d#*{8WM4n{0Sde;_O{Ji7*mW z<8z1mN~gJjxAi>NmrxTai`6v?bFSk9E}J#XGbCzgw|}4E5W&yLDAvs|x8%E=LcvP{ zlh;KZ7PvjbYNBcysOc`0osepol~v-i6>6|Nere1@5i^8oU0T=*(213LoNp@`opBLi zth|!}4Y2mX0~-QfkG+~F_qwNNEibAoXsQY)HWW;p-wLus_UYh@94GGVT`4>8PnP<- z4t={rgwkML1Wks&GI;hiH3qq+IIE+%bFbe1NVx%e3oGB2)sN^tr)pPg{@`O}rXXi@g^Sh(cMh&j!_pXJp~xO9q$Z-;Li+K^a#?kL zoa{rU*i{9&C@oyJ08#yNUDad-`--u=)&H+A>>sz9$z^OnbGmdi*5ke3^Q1go zZrtegeoA;|YUKsJKjvYej1UvQXbC9J7c+2Wpn}pWCeu=f8ZfFeqxNW49Y2!?G6VLK z+ZasSI3a;m=do3$)6B9cUh8Ua;j^9(KHNiA_A6csq^p>GUC0nvyrW(ntRk_W9dg7i zUJEYvGkTF$XOnXgT6g2_*Rn{UX*Qp_h~U`jHE;TLrF5WFL#%yVaOHLLjggW;^7jku zv3u;Y!5fd?MvzbH!b-9T+s&2gRT_04nb;yia1_ywi3^J{DIv>t){lcno17)2mF5aC zUv7ICeEK+c3Dt_Y(y6BD`LJtzrWtr!WQF{F0fmpXfy@dcZMtJ@gRMDjCC7aBv#9(h z!L>i`{5VfUCoQ_Ro9|rqdvsnIMe~DKBI@dtw)0EC>J}a8bKfV7^@jWjr7W7uG?jVD zYJr!Z2|jI`tvElabFemY;*MlevtB61n}eJ4EM&MevX@^qT_L!8ELXzUlNMK(H{d>G ze@|A_XiveK`+BvjT;1Koq21OHk+I!kt=_`RI4cKefKtSAjcr}byfT``u^qVS$98MD zz7Jg}m{X8N_*f}+xAKeMD%-+^2jbTUhqWx84Q%wgTBz!aE7_kP-KzM8-kN@mQ-teo zd|oObKQ!1&s=9XiXP1rm=dYcr>+_UlUK0`DQa4w<3dBN+?p`ipMP>BJ z`7mip7~9VSq+AK0=Ex_J>d=saJoAb=!em-pdl+j*lTWUGt1E@sN*!V-j>-*nt7_qXOj4td&k`nn9ip3uHrUuRhYI6*@u_DEO z=#We9R!L<^HO7td-ow#?86&9Kxqt}I>rFdP=+z)n_(Za8=hosdNlKY&RL{I!&ikJY z`Opnsrc35e142y1&vwtsPi0BUZS(gUtcAw=+%(JTD4UqcHOK?acPDUgt~4I&wfE?{ zUoS||;E()Edrc!%Qt9T#wf8pZ$wMfkj;WWs_BvOdf*D2ir=3jjya&TjUf-7kn(x*@ z!!Y6OVp%cjhU^oQrqHEfFBjK0mG>a3nMCdZ>c#3=yN0jK{I7kIR_Pv8zG-d>?csUO zWaDh*U(T_w-nP63bAnA)gdf2x!TeVc)_&Nk#3Y5vD?$iI7cd>p4W{nVo~5=Cc0yyF zdwRyYuH^npj@#M4=q*!wCvSLwpb8OGsh@y#njzCt_>l;+V8V#E3#_l}dufd5_H^RR zLYn$|6m%UqsK1Y8{Lz2yY_n-noZi(~>)TGPT(y;Hm3#XMq4p#!B0jx8Ec}f2)2yL$ zuq(3G;N~gg=uDW?C9?ksR#e+$=2J`i_pITH>8{sK$Rrt_ZBsimrC^Vbprv}MADl)} zS|3zl+R-*KT~u&Un7f)HE>F)Q1CWuhP&g^hXP;d}S5xWp9Kw7s1058bjefpfe<@J- zUX-MM^F8cFKG2d!9%{X*rUvhFdwSv-DS$W|oJ%REKC!fR4qoPJlDO)@yiDaMPNA4W zQ2Q+SyGg;Q@JT=q-Wrof}Aw(43bui&|o;1dOW>U{FCWXr=Iido(i4#k(lHB zjo#%)l_64&EM$zUxOLgqjtFWRJ};Pj-T1jr6{D9V3L)96TvCd(Q_-jSd*{r|h08vF zKbe;ObKXk#r$u>4!BUz*R0uP%sBn*9s!`KrG5y3`?18?nHm(HE6`{;4UF~=Q{)Dc5 zEc#CWyH16<$>Uyj-#PJ;Pq_Y$A>j}a(ZW@43gYo0 z0pGKt;M2Nh9_F8b3PFw~i{l8ZEg`kbyH?p3YqB|oHkkLy+7Q>h_q%&sg&Q|xnuDL+ z?Clduwi)RQNYfsP05Ow=hY*nV*f&?1i{H_+bxOsbz6nK{gxyeN+F_QIVz7Y%uIYi# zE!YSGA~w6)G?|&1QaU;B#}zvbcTWhB3i#T&$lL~KPEFU|z1(%y>^IV>1L5!{pe7_F_DUspmwcWN|Eajp~<8p?Z=}BlqM7*lDu-!{lE&A$4wGG32Ne0pk|E6>BK!qT>8m0P{GaN5+Hlk&>(^COa`fXlN4vfM1Z(rCDEV)^)eac_~b_d1Rb2*367i+qDLs z@eas9VcIo+(y;dO*nsbti$(hL4IWA3=rFd!c=gwbA+z9-)@+0 z#>TbO2mFAxM9D+8Q05Zuhub;L2)K41G2BQbSlMGZy@De}#cJH1MzDtG2nlP#W6Gf) z>o7g-qT#)DaW2~dGFh39&*2`C@9QTI3k|Iz#CkF8X7@l!4o}y{9z{-^Dv0d+bea%2 zW-=v^p0v?$j(IS-8?x?HhS)h50g%Mi+sfC;-a`u{W&~7GIB#dwjkLtDPB^cvS%qwP6o$ZN zt%YK`=nda!y*xlRw+rX_037nTl%7Bv^O-YtwcInHfr@8Q06%Fdd%kDj0IYI}0fvLqiL3f~0a#5^ zCW`>tOQyH2cOtFQQsH(Dcz3eDyAo29ieR1{XapCp?Zn|qnJL7^=YvQ#W`y4WZ^ymd z-wFtsKHE}7dObAE!ot_{pF^y3tL(AdVn!V@)E1eqx7u^mA%ptd0e*TqtU6b8qq+H5 zVy9~zhP?#mmvO+q2Baw=!Z_h(i7TTb!}QDSv27ECUJg!}Qm0e($0IpiKRIGM7DKW8 zO~o0ab?zVh1a#LS5=yp9r%Nc0_en|BGaX0p$8ximgI>*;L&ki47$UyWlaz)*SIezL zwHahxwGmg!Qa{te!#PvAQp)@fJAe@`PnHw;lDAxf#vE-ncaD*bteA9T6C}sOt{}FT z>Ut`OiIv84$c^2aufsC7L6xFruphHwsIAN{az~%Kx3voO!2y=}H~)$7Hzt`xGsZRw zZ%m&xo|c>Op!Xmz5&9H+efm9{Pta}%8D;!G?7eqXlUvj#9t##wuuug-q)RVC5CNqK z2vThHCS9qa69`HX>C!tW)q+%|7ZE8Tbd+L34^5gNHMBWFx!35u-+VK_`OTX7*8Ia- zn&iBvz31%x>}Nka!P6>T4NA@!|DqS!_D-;1wUyEno4b)X(@&8|_bFkfRf0uKOKIGp z4NwccQQrI0;=PzUYdj>}pB17PTab*-yeC>f+Cp383>j-W3Q&f}Q_yToXFcp6>)Wmk zel65w^>#HFK3I4L&f_gWscGBHz(J`pY{;Iq>a%lioScgrfXuxIYeo6+S;Br%|jw%b^m-;%!u2*>o7 zM=In{nE5_4tfc!uG+iBLvr%wyaoOQA|O`o?H^Fv?BA72fE5w>W)sqDCqJhUBz5& zL3&QbRqOnnfZV~&0@sAgPzjc-glMtWX%r{V7YZvAuFRottt_L-_L(kg-eNog&X)R1 zv2Vz(@0++tQ%Tt>DGoBu3a<)(IlBJpU4cS%hB2PuNgK(IQU%n~I1ZW(rBR6~_&tzs zvIBocMdbG?DNH&I@KIZ8<}c4nTy&ky(JclPZR(iX;n6QLvomUI7cl?HVdJELlovB%q8*8Bs*#IrCa8C}C3g(jd|nyp}fe}|GDdod{&_|*b9U*n@5!+6=;;ai{B6Y@j!PJVA-A$KNKmtCH;u2RYqB%+N2#r1BmJ~A8HLNjIfyAr0b#^-RFWdO$gS9K$p>$d32)u=6kKAAZmj47CtVMZt*tsfbAnHVN0;03Yak zM27FtUvam`nL~~9#|=B3<_}BBix5O&s8{~t>;5tkKN*;Rx9}HlvUWPoLk^o(O=sLg zvglS;F`ww>bQJBZEWyxU4U~91KRIqK7A`8`m@W}m;`pFnts+T?ili&cmIXxBc8Q1} z_y#_v)*}a$;6MT>W%p;VU2DQ3_c`_9^?k_qYl?oukt|w>XS1~0#Wh|e102Q}(Ipmj zR$~)sgi@t@!QHwk+`CY^U)FaTmDBZVXmUuH0~$?uM(wtv1NkT`%~bTQk@#te`wJ?f zFsb!t;gxJ!l&s6J^BlB`Mppiv#=51B4)05WhfiqJfkk*Y{24|@dPnjg3;X`~$OFF1 zb)!m;IL5Jdz`5e`jvLx}(}17IZ`;{gDJO9S}IS?&uv%hUCCh}|^-EExeqZFk8yMbnv- zgr-zb2eq$YiT$$a8UsRR+!h*dZ*86hiTm2AL#jxt%<1;&@$O-E`-DCZc~6;%-vh$n)T0K7^v`?eR@jv?OwLaEOPiNQHk#W-qce2!RgVD84yIUyB*mCqo$QFcY z-8Jm5vbrkCC*Xhg3j?55yPL}`NjxiDoHupHx#5@zJ5+vy;5(*7 zEPipZ4jOkSmq!%bE6&zQD~3xe7c74nE1U4MhikVR&oZ#VFyqarraB++)k zV^hL1tM*?k6$>!d-u4^pR1G->JdwdqdOS0b6qnQ9k|SroS} zO^mPfy6VCz0hng2+h8&4gV0- z;qRW~ledtAK0j>8(U*LxH2l4;eju`%n-Z2G#k9WhH2SzH2pLcnaq1?+=@JWAF;(@m zMb#~))8{@O>Q@(oOZ`X`>OpA`I_i4M62INf0S2luw~0bN^T zI45}oC6V2uXOamwnH67p)yBQ2BKEImJU1*;U6nLE+viogUF@%Ji&ae6G-)9Y87VR= zrl6BBIvsOn)~2iSxRlqkK%V5Ml?js33C~1YCY9V+u)8W2OX7Q@TO*P?%pzN9kOyas z*nQz^&ABb82r@*Xnf4+z4pY$vz$?xcQW6bgIkD!u*=?_PXcZ+ zuXXrW^o@cX>XR{tN~MK5-*ofwZswJS>_6ph)v7cPNWd z-*XChvy3FyiAy|kTC>CL8Y@jkp|P+Jl#srabkq!ph&^}FFA!JxaQ^w7KGmwBC#P)W zs&p(cDJ#WOp^VH7Tpb@YMQ!D(FdF5K*IRkhQEI<0gPyHUU{R`C9v`P)QBKqbX>%r(kn{F?%F>KLqK_cXT2QalXtTEVBC#TxM<>WPKGD-HWu_Mc zy*d@2Akw(faa7cm|LiRhwuseObQOQu>}2OUg9@_OtYA7fT6+$|de~Ge@soq0vNAng z)NJvaH-jRt}Qy0;{`{40nX%9H+Nv`ifLS zsOD651tOl!|GY(F0aN2KkFx01#)qau+|5nc=+9F=E{>>hX;d(d8IF>nx{i+qr}5M1 zFZyhLq3MI0Iq6qq$K*5g)<4$}rUN1u!KKs2{yAb+p)m?Az-8=q9qr2gavr3R=jV@D z&Gi=!Y`Wia5SwcB)`rDUjar^2+)97}^`Y|08O>H0W8dr4^#LZIV>b^CYz765u}&h8 zhNxiZv=hq0tV+L?rfuk?^Wx8r;tF5{&j!^sMhDR*+9h2XNwM;Y7X# z!>pS26ZE34EV{U*Rs)+5D_9AldIG3~a+~(K_1S$3`m`jx+#WtZ7r8uM22zuAG%9Xz z>yjoa#I&_F={RlN5;JKS;1Ko5Vg24WAm9c?AvWBzbEwYq|K4Swe_~u`s~A$ac(bkP zI0YrOn?!(vS~lQ#upj>*&iz5!ut-U^N7b+|@9N49RPX645SwyZr;KY}+17Yc)H36m zZ#v;Wc{jTdHsn<3?(B3gc!Zv=Jj5Z7vl-;h=6u3#+OuKTKE1Gfr7y|OzpGS(Oa9fD z3a7|Wg&mx_U;6yR{#x=Q`J^Nvc;vmX!eTDY93TLzyj2y$*cZCi%8*N9VQ9{Dt7{1q zbWXWXuQ)AsIx+~320kAGM=muNL0IB$B4EY$ppIYUj7Vu3RDNAa^TGb+C$@Pi#pvUK zJkT=}4MzffihwagZX+n{d2MAvITpv?=dy7KWHlDg^p~jy7$mkd{M z-j_vAr78I1l=#YJN;N=kC``DoW&0^P{OtJRwMQMTr-(xY;V>5IwD;y&gAI+BDO}n*F{vVj9yNcoV7y38)WNA$rg;lK14oaRG-foahEid(={SaW`JM$MHE+_V2MsH;>U?EL)A8Jc}XXEj@ZvChRBlB-5^PrM9h17+2e(ljtLM< z$z%aYc>M{M2c3@vU;Vb zQ_?`4hhUZu)NXt`_aje|q42|Rzn5Nm1eW*VJ|P*;+%Lc8HqcOmj~+$Mwm3^hrZiWw z@mAUeo8} zsyL1vx1OESg>$WBmR?$YMR3qO;+J8d)(~CNe~kE!HtUzn#1E&_v!l&wYf~?h5eNVL zD`1;@^~0e2G` z|1-_*Pa|z6TkhR$Q{M{99gzJ0JOwqG@f%= zIv7DeJyC#=n4Wlx(DO?f&LCAMm>ItW5`ogK(*nY}6*Jwzh>`qU`tS`AiSu2hjwhvr z4j4U=;N$E4U~lbyZ_{zTO{H4)wf5OASz;>#yXO=-0$9omm0ED%ukKszs&LKM%ieDe=7<~QLAzX`3 z_3dxnoy222TLGmrp^W0u>dww4ZN~vz=7+GJo+uV)^FvfQ8$a3Bd-wB{1&UT5GaiZ4 zVfV$kf7W-}F`{aAR6)jSI!!0vdeajH&g5SjrQZULZuKyTXM)uHW0YH)ML;EQ0xtJ> za{kVqiCO};{b=IF%?>1hX(EDb$mu)ULX+-qI-?e)x~!EV#=sjY)bgX3nIeN*dE0(Z zueCMhu$eEsS*ZyVMX?nek+*C>$>irg*jL4Yb_uq1{1GGakTne<}9c-IEbO+A;Do3q6$b6jZqF&I|-MSqu+IHY^e z?7hN}8cr8-ui>IXjtd~l8;c6?J)S&pz}p|3;18p`z0&slWBSjtPnGROs-(>gKP+Z?>OK84aMc@(JsUFL^X88!gCtd&$zws+CHPE@XX+EMk2~U) zCh8KzN@T4|>;jealz7dDvE~j5A|Xx4B{Qy8+QG60@-x-v*mhd16twGm~_*Jz@KH?*t%gZdSWgX{0opK2)87+UmoB!x5f zWhxg>jEq)upb@hoW8M1j>z5`Wetr_Gmsuh0RP0bKf{RCh@50*qc5#mSOsZRVft+pb z_r)~N2gE_p)yB}mTD1>eOijogSlRRhcJhAB!h;PgXA7~n%lu*PBZuA%wdYrJ47y6M zRJMd{bk&ssERUGy&j*)kR%2SGSF^gl;?UIBud_z=Y0EJVhF^I zsX?)aAkl#I^5Czt4xi|L=vt^G-$*zk=gE8kS@()%STbaULCEIAd}x ziASa94*Tt9Ah4_Jk6C$KkovqTB~hn$ zCJu5U^6RfnQ!LZ9)d^zjGt_*l8$D=rKH1^0$u%~(8F{^N#J8meOPiC`@=p+m%LzUc z#aU4ptH;GXUxh#9XC*Hdb8??JgCC2&dJl!}UC-uD{^gsDoWcdu#?yR8@t6>g%l1Ud zXmrqI?2zk02p8EuEHlEuhe&qO-a7ZO%ZFrMnlpeRZ6O-YNquJ8M%$L0_|(Ko_F9oQ z?0KFtr-r`9U6}xQ*rc#Y@vu#3WoYH6ocGii088^UA1qn07ZA-+$+4I9S!@bRb+0*@ zE%=#wlvm}gmZ>i~iu|ad!cb1u6jriS*+~)rBdiE_uuEOsVbf&AoTu~~qWO_lpBW@= zHfCmvDqEfulS1AX{Bj!n;B~&A96S8@mYz?B^mCs^3w>LxXVKV0ptu&)NO6oC74YPi zDmkxWk*HYW$GN0o-D-`yy&F%-`J8l@vDd=}T;?}+kQ{v05md>q6=v_>(Chb1DBM)X zvIWjC#81iAgr&ryk)9d{v25#x{GCcwLyaq1w&6Li5iZvZPYtBT<|Q6=*N_*g4z6Dr zvuPMu-5gb&prl(bIPa+$;Z@tWf-y?A)|aq&*|8$b)M^DT_QQYfBr-|9@LKLfq^pLM zP*S$Ds%@{-Id*oyb{RRvTA4kYd{X&pSUHzCHa$P2b!Et0-PQ+gdwcwA@t7wiaZojH z+Z@g-ao{_V>$bWCJy+nOO*Q=u-}2W$#%4SAMyh>`n6DSl>dKsX4JY(cWwP=BZO`nC zaN#t?X{Al3I<$P9iEpKH{t&yR+#Mph*Ra%Ct80lMsP>Qh!oy(APyNLQz0-yksyzxd z9qdP!c4m7+fbzZYTh+WesnY{R@u&ckmYXCYSRA)vOmcjTef7?&_o=kcj2Arh5o?uN z1$lvPcYqkQC!6{;m(#9Ek#Z4ZwgQ7vRYQ5QR}aU}>2?NLr#Sa21){C&^v|G^s}VXu zKJZ)@S*el%jL8@YsdLg@uz8^%La0Ii_kHt&iB3aZiF^O8>7kOfrhtDN#eo`-U3S{t zrgA}#TKfwD=UYJNLCp+IEiJY<`#mmJlZlfVd5&K4Fi~z zqGFnbdayBw{@fU$5_~YY1-Xx(UOJ1M`&vMKBxK>BKCdF%y0U_5HNqC|>s31tayEfp zD;$06<7mH=t)_c**9Je#mbI#q1xR#ev%k!m8vQ~`LX{lJU`@P=ZJfZ`h;!JJOi`3& zI|CtZ2o`mqdPttNaX{}>l~m11jzq;&2}2dOZ_6eF#=5+`r7@2KRzI~*zbgsG;UawM zq^$c(^E)nGfXc9hMR9008-aZtRk~A}dJv*|@y~++GeF>JLbb-B;$qoW%JPB_C+8; zJ#gU0YB;slWgf`G#Xqk>VCOL1mQ3`4rR8$#*K|O$A1SyqOUy8d$uKJntAhNYFMl2) zcm7z&dP^Jr`T8zM!9g5YYul^dVmaVtT@5B`zmr{_HR2=idE|_oRk!BddBZ zclh7py_Z4yiYCJgpr{nFiNL*a-~btN z&bU&m)q(ck?C>9%WG&`kjC6QKh>3hY$x`TR1pqT{HW8|k`(*M%SvG#tg zT6-A2)pXCa6m$luV*WpOC~tAHuVH$CF z#`h;m@E&cM%+>U1jD3^tfGZ$f#1scVy-FC5FVnWIaK2i#+AcD-W?~jMzW8h$-yc9WTH7#;FUl?OC)itNaMt~^dyp*hMg35RDN$MPh z0ACg4l7F_;lvr3U23{|&;t8X%Xy;(~{xmi77n21Zpng=J=Pf*b2Z`Ft%+-}VEcYDi zQmP2@>$yo6ePwyHgg+X62tS{aKV_^7?mO|znSi-U27m$IrFT90PgQmn?c(IW90Oue zpdHmcr?x91B53@2h+DLVwRy$JGejH*{nr?iF<%boSGXC-TcQD&Viu&P_IBdW)O4Om+A~?u7b%|v zoi!BFD&$G8=KH-cHVWuzp#l{M&h$K>1ztVzl(Xi^q4|uC*l#_GPfIlT;2t00kFbj2 z#z~qM&seP-&%;(5j`1lH1K#-6i1C4W_Gs^ z4L{$8B|uPu)FI?)bZVAkvh?>FwsW<7PKXZd56f++laWfAWg-~NlfIIsS0yY)dC*J&Bmb)q-Pe9 z9Gl;Z7Y<2TdQVl%jNaMyE_+@6j$JU=>IOMQF0N*NFR%e|rtsZ_R*F40-TRI$*QKJN zZ_%fv+>)v?O|GaaV^@vM^=+Abr8X)VN6s^!>CsRxNbdG~$dwAjIEtgnxANL;i9;;m zuuwUnR&M3Ro>fI)z(5S_2!L}?z9}_XY(gf7dh*$jss(a5mx*GYF^pF*Kvu@w4phS+ zj^bJus0Ad$HJ8}gj3Lm%6iVaQC`*(uvgSq0AX15n(c;)1&8 zvN~+4GXwl1&~En2Mc37S=dP510U-S6aty-d`zzXg3R1ZMrc(>24>?qKZ=je>B{`dl z4mW6G5vKO~GuBLUBd!AI*e!cW?`+hPNe0C@YB}{zR|D<4sf^=pnnj7>2j1T#2vvc; zk<+~&(hTvECJD-RFsIDT{^tIz=J1VNGt_Z__CCxY6li!R!VY~{Q%FbTH&<#Hc$k-j zgk)-R1;_-R;THY?OY8b@5E4%iT-*QS7hTAWyKRNfWv@lgyHAMWJBa3a;H*q4zLXvz zCDjlq$|hH$Oxtw)w*;Gm8frNpyF;)IRb2JG#C`bv=%SxWa%5cJx`W|6d{02T!kmJa zZg9S7^2@`vM-E5PMbbjb>Ie)28Rd`xW)VzmTdzY|UT#aHMp-4(;fc--{tIKyPv^w@ zh5PIE$}Vk{VDcY?x?_t2OBYa~sNuk*`H}wP{p?WXtqwM9ckl-GHtu`CLjA1*t5G)N zT`-ZW^QDK!^4jG0ci4?jBFZTB)QL&X7J3Y2sK>UQi*(iZ2e?bEY}EtCN?qu$?as+A zH=VXy=QAX^Td!Y$R!r-c!b~~_fg(aQ!6HK==0O$7&Q+F%M5TeQjm~GY?Gt8DBF;;wdgzXTI}UOCkbhi!FHyl_R>e*(rss)L6yhC!eFHK&ZGnG z7L}T@Q#_Qcb7H6uV_)-j zce41umfXzQyjf({kYj@!cJ3q+FT#3Bvpw~6a638%A(H#d4n1W>5+cuLbjbu2oDoeI z=sI{mEQ|ubo2S%k++=-%lb^i3Wmq~)!HN_7{XKZg4xNiTQ7N=BAA#GM8a|irpb|Qh z7yaR&ghn!_(g%|%E0!~Gv&kY8BLHTByeVUV88_S5pVw3w#R-<)OovJch~MWy6)~0S zIf?O~H7jD|(wcFa-kQ^`S$O5X9BARXfQFAbC*No*w)4=-(X*O)W4C}@aA>AquajKY zpUS9w_X&*V;erqEcF&yc{^=VMEzJDM?m&}oMnkA(zUU>wmApI$vm&A^N7BbE=G^}+pSYMYHu7-j9qR-w?!Za=+xqlYHsH$I zT#I)cZ!im0L?qOr-#l2p>=$ablxS)*sAPr?-==P&-&m4+-Q-ovDN?|diPZ@4N{h(# zpLNI$TpfV(I*V%?`>-6=KTTr5L2%x_2UMt|Zd&pmWv>XSwFUc=5DN~gDEi@Ks%>LY ziAwZJBq1eqc|A95c-bjobytTkA*r>wuq1&FXESdj=j5D{lu1HtwIi(fCvZpT12;YV z(@o@6K!_aV6eOsE^T-u}FG;ZOdUEHQkY#YpkDjyX;ovW}`qPcUiQB zH57@>-NFhcGJmD6ev;Rt$XXige_wd&&7hvgseTRh%lRUw#{)y>1&eQCihu;$hx638 zdUGbLE)Rf|U8R9hRP$Cy_ZG$X-a2%$m7;t3dj24?h%xc~VWZlHbLi;J?~&>y$~dS{ zPQ<2Vv7|d9AaO#}{n+_oE9Wxq71!pY3=Gme{TiXS^vH9{*MPonblOmR?d`YN_DUhk ztIz#%CVOh{^LI?S3NEQe&)^31&Jk-aw8S_hPv}R@|5TA0Q2&|fdm0{bH&E*<7vxiviJ?77g2q8d1h7+@RUyulO z9bPnD9Sq{k=N>jvRcGfovluE}Ag-Vgo!RohR+M|(#tibx zyOQ?QbQ*4Db`c0y6v08o95KJ98sN5AcP0ObJll5Zbh>{75!@atq-`4LjjjIfd&NaF z-#iaJ6-`y+h?gfspQNWZN|k-0oxPMd#OIgXi&^+MJ@tgBbgg+b*xvTz)G8pf%}}tW z4`2l=^s-J5Zu-2{1UZe#o7lTOhHUvOPCy{Zina5NP@FMUz+;!hzAD_7;+%F#WuNd^ zPK4~dTvqXei<}2xp&6?hZ{h9^uH`+C1=>bai|fpbLY}DGe(E``&&#Er*rVa6MW0&m zKY+EVRk|$5eXb+-3o2qL#nl4X;#xmmx^C1tc|)RB z;U09sO2S`9t0v4ckely=KVrj+De;@r3-8pcJ7OZ&awEz;FI18(&*q^gY7@&*>x(qR%6k`Nr0_}FN<&=(n5-}(v(-W8dvvWB|3Xsh0)}LJ9#o1 z&5q|wXBVy$%?of=gtipb25B!9X|zP68}xl8UwbSKR=CP+iZ zn`pGRKcXot6<3>4!;+-L$Lx;;I3GcEGfnx+!7c4hXWWfw+AJu^<~zN-Hi2@|nmHMUo zU*z2=o0~Cyg>)k+rp3&wt|d~WFinWs^A;wKwH8gxX&c+2!>Mwa*kc2xmr;S(h5L7U zqq0~UZZ;jqGZ>Qyj3qBwO1cZllWZAR6K$39E<4i>JKDp&9nywW6_8>5^}P-e)5bVt@G$pM%C`ib@4itS`k$AXd9kECdt)yJHdso zZ)9&oj`&-Y$Vo{f!sC^$j2=Z?KFO_os!+k%I>`bVrpqfybDU)Vn39B5%}EQ4a-{i& zgV^`eTlGb(F(L_(S<^2<9|$hA(C1ytDl+a>S6C z6SL8S{rdUABElDL=@ZMo&)aX68{$w;U`;+8Fi1UkjDDaP(oREwU_snQQDpNm(>*bE zRHq;rlN)yiiy;qJ2<~3UWboGD+O5(}(~J5FBnDGUTd(G|Ay?o8w+dvb9`8XdHQP_A zKyXP_`pX_95c55!dp90-^x=TZ>7?MI<#tM$>YVmoQHnF#34u|0a|xZTnHa2hXU;+27b&^FCs~Ps#s`JU2VHY zz3SQ#&Bv1)DuaGF1U8Wtk_ROi`-zV8BgseO6g_9o;K>e<>??#H@A3j6m-b@wxauJn zpq*H~a2ocY3r~PwrVImOm6ui%VKK!mOHATuVW~snwR1mybCn&6hg{~p+~=R$G%cW71zN@|`c~W3T*t)CGz*U@)!1FHCq`#J z$DWh%eo}Z?PDcmJlMt4#gX9NfTp1%J#`9Ec#vk#b_Mr0`kA5z`5*0~EF?KEHTDZbi zWhl8~2&zlK$wpvm2OE<)cB4GI>(lDf$%f9M$e_M^AISxcx}4}3YiVRan3U&25fElt zng}}ElV0&;71wy3jBsB57K6-;!08|jn}W4PLK-Ji^e^ZXrvW?pD_q|gIqTceTYm3f zkh|Bt=%wh>0yxYeUQ7WvJ3pXZ`c@E01hEC-Ty|8(Z<$HvYQ|yTgk)OJr50RhvWtLqg;6sW% z_j?J;oK_m1mdpY~9CL@h1^D1hG+hmeLvRB$nbZovuMDZzV_aDweaFky3<7vEM`*^+ zouWKLhtH^k2$}rM?svOsYre=L2P#Vh-?FV(>^*=qDXqPJW=!@b-Ajq}+-BH#0#0X)knm8}C3`~Z(W4KyYGka#;z&RFW0WC>P zokAA;At*dTkTe%dp=xU$z#_N3Nws2oTH6VW3XlSbRwUi96&pBB(;dM){f!w5YJh|w zBN9>@QO5Khz}fpBm3kCp23V|dDM1hZ3+P4?%+de9!ioO}&DOIsI7GR_7~*S z(naSvo{m}NM1NiX5L1t>i$Q!1dFMKnRk+yLQ^li#n9nOubO2>N|Ec57r?}ZZNR3XV zH5iYV3YOaGm4V8Mvpd7JI~i%{**gUrX}+Pw?)e?dQ*Mr11B=T4+&8;&u6NHsnkg6l zR^lSedfuG|G2|nEo4SQ)lcQvYNMcCtP`lTNJnT6<$QZSZ^R(NH!?nfV z^=owLX$$bS)hwa!r#$Pqw82K)LsqQ4BgUy+utB3I7c*t_yf|$qMR#x@N1~{2S!kAi z+Vo%MCc^kMT+E^v$@;C&N4LRqn5=$er;T-6)88;=s!enFDaHA|wxXr>T0;l%vh03( zx;HtwJzX1N{n6JN`mB0VtdJ*ic*`Z7&JKHg>b)u7@byw*123&j;IXq2+-*FZw7)F+ ze;A*;lx56?DFT-ng)cdrdbR+A7@{ryfJ79 zs5@G^`n+T@zUbVZVqZBYO(*gBZMQKW>on`vIdU=RO7V(mmuYr_PW-!;v?&e1$E1;0 z<>_{xj$%cpF>>xJNGYu4w0uk6NW72xD5z#w|8-0Lv1qz{{5_JrGm4ox5gQZ5iPs}crLFng;k{L+UpbgtpWJ0EI56A_uG>lo$l#9eI zc`hn;EoSO=TVygQ1bWX!ovFl&Nb~Wbugg;ae0U(;g+Jfq>RsF3qn?HNE7jV;Rz*3= zK==vwCK_n>9LY6GGs2f=o#g)c-gSKzhwANo=S8uNDtM^EVqv4*!At_Ui5TLZS$1yx z6;GuJgBuF1$IP0R&1#S^5d(%jy@J4yx^TgId9uS|faXb77|PsyyZH)T3qDFj~aD$WqEBb7 ziITPPKWAI{lu{^ljuX06@J%KKH`v!U0E36CaTCoH@V&{I=O!Tu2B_G~ws`@{(lr%* zY5Ak`=uS6!8l>blME=?xLc8aMzG;BpzgRv|?9ek~M;UABf9ytoWlW{LVlV%t;bNl# zWR?1nN#lW#<0QV>Pmc6tAg#0R(6oQW4HtYXvWn}NDX`p_9esvQMMu8r;Q^g!q-O(l zzXt?U2xe!%0)Nwcd|?t~teGxK|U zqM&nkIS9|W*dL18lQ&DB+YyuQRL~?*(A`+=ed4*2+vOVV<{@?WF8*ZZAUv7>Qqo>e zy@~rRW~fZ2mcLLG_>__K;lLl~u$!K(!$rNCj<3vV%5iE+ft6RA5{=(hSzTSDq>vhc zOdhwnsdQHvFtqnB2Yfzi{5@otq|IY-osZFH*9!oKV}5DNlpIKhO*0xd{?nL1svG55 zZCe*mMz9j}BG$vIHHkW+CRC#M9}el!&ZuGxlAmUC(w^iWE{3J8<)+uU<={dq`TfFs zoDPUST+R>>qEeJ(X=w77h?%MU`vNW2gO3WZG!Q?L@Wbf zfj}C6yM(~4-lZTgm?Hq~n7E!Ih)~}Tc}jS>;?14^+Ct#}D-F6U7xl{59$)rYDw)}- zPicx_7~u8%7PTu4ZcLMw(tyKLi*TaBe|pM(UFy}_Yy#rn6G5q{0G(=tIG(o^9r$ay zN80Z}#_qIRD#(k=79h-X@i1zWUi!}5->Taxp3<(dVhZIcGn3Iv3`6GG9AqK zytX~;p*=Tw^c%=3KNO0mqCw+-+leAe8_VGN1|#+rdsK}*IKo>p2sEqX9#Z_fZS~FX zB*@MPY+Kk%ZukKJf|q)mZ$HGqc0qI?p1^=JkS+a3!P1E?-_IjtOrUpEDWiL-3O}i% zPHb{E;k4FEf-qa2v+u|Oi(e(s@kZ#i;){5!g1f({emQ*E2MrZY;t63fT8ud!`noF= zb+&w^Q4UcaOIy8JLRVGtG$i|wC-puEU&$Js&0f;NkEuDc=qptW5QN4kDu4qptHX{x zsL4OaE6L9zX+{#<;jzdo!C>-<95jfcO0JI9%UWHlJp$IUZo-9-i`dR*OC*;b!Oz*h z(I&wv(xVu3VDU56gQ@V3pBWJ92o7|iQBN`Uo7j{W2u%OuSg(3(+or=6K9P}>nn`_l zb#HDcx_*&;-4SSRbiZEw%$qq@XEPr)=qfBeSikIA>h>^}2GDq>_Z zbzQ;x$RjOH{v~UTJoDByYJ^p44+*BPK0f3c_f!^Q|=U ziZA|%f4`T8lb|FP>zEc{Zp(Uq?DN=d-XDtkn?9H?LZOXsohxOH-Bik2fx6F_$!==X z^cRG@o*h7ZEU!v~{CB9|qe*J`T;Q771aq3iJRQ11{m1tB51}(-Jakqtn+7;(q-OxvCP0yt`&=iv@=P2B zc`%mb@d}Y2arONomr2FK#q%7u!)LG8W4mwZ7kO3wN7yz8o#Q8_Ki2ziirmd#DRQ`9 zD00lx^Y>nM1bzxU1uoXF`|kSuAr0nE^vApTH`r!+8m|4PX{+<{*)G@X4vHttEyEbOI2M1g zVL?I2Ss8SU6({h&?H*E0Z9RZ3f4%5h{Xtw<>d*Q4l{n{>_8$=EKD`}ktZyh*02OI? zAZ~x2-UJBTr|LJ%|4exMezO-}q!I@Fi9b72=p`KyNvC^3L`WIrDQ7b)n*p|#xbR5I z*7TZ%U93{#rnhn<-=Qlucs>zq3nxI&1b`^Y-9$dRmj49mCY=UQx0Mt4RJt!jS8R5# zbHFo7m&8}1f1Wak6Ac;PLu%VdLUQUs^}r~SpBCoz6ys0K=)0t9jLg6obiqy9#U;D) zYysTh81XLiTWHV7`Zr3MPjNppz%Q_X3xl^P+yT|;0|6gfZjZDCDz=2kHc-+Hz@+4J z0fw@q@3}qGxZ0HhXj|1?ZB{D-e}n+h-^;;ST|84=Mdw-{ zxSAKc@buztJT2L@?Jo-^mJwf$5p@>wx!uThnT$=GvmCLUh^UspXW>Tk;#{*+P`LGG zQIRHsuoWJX{VyxA^S=WXoHFB0@!U<2_IYY@^fznj|4r@>(+WQie<_*$r9<}L_h)Jh zpgSLxOW`dyV70H_!3GBe1yc0zp{3gdrW-QgmKY~nTXTlwZNqEz))flY=F#}74dYe? zt3yG}+(l8bk{8Nh)0MI-$qF%e2>ma@=Pou`korlvvG)=;q#NZe_v(V^7jin`2g0cB z3Ca#wbIQ}h>V1xQGzMa@PJo|kijHI3DYf_Cz5|P7hYH~Z$sbJJQG9WhX6yt7`1)`9 zXq-(zQZxqL^*kV)i3@sd%(zSj6y8{>X+zdy789^@3w;jYM-V<2f~aFQG%AJ;ATOU3 zH-uxy)PMrwr%n^_wfD~m-s6JvceG${d7;K`pSVInwG(D-LA=5YYPpQ$qNsQkw7lwj#t35nOB&mH$%k zrnY>8>$ut28eWiL!%b6L-`P#qBb#L6_(IVQ>{2hcY4crC2Nqq>qlZ;{p`G0oHm-Y> zjh(cv$#-sZ`~Dr|+s=lftVfsVwNGG}#gdP#9Dga!BG$Y}J4YS!eZgyGf>g86M51gSKu zgi^M0+?03PX$?WK!d+d=mGdf8TfvB)@e)A7n)#ID*tOQpffFq&@*44!M1Fw9v0Lk4 zQOfS5$!AJYTh^pWyxxm@DH!4=$3*z9Rl_YDj_+-J%xS`n;QqX(*#^+vYS7j ziE7-H?AU(QFSJ~F<2;F(ajq_<$>_>aQSlf(PeZ-?Z8sWoJTxB(avq+`8+C57>#Ax# zi|KR#z8xrw`>Q(@PVuq;Chb_nCKDZ;CTL0)xGVYMQn-1S$ggpIYlS(pxN$&m%1glS zp$0nU;P6TfA*7b@<$m|OOZ`l;WAk0{No;Fhweb=W z1af}HbuZsyRFf#_UYm5~q}BL~)sEatpmU;q(hVv@yl4Q`NBU8<(pNyelcsGeXC(KV z)+|Ho>CHzir6vfP(?^tr%Me^v`ml*Z`E_{qGA@a5AQ_7=>32L(Q2FE>8c6*N7wXw} zWR|>mAi@JB2Xzf)Qs0p7i`%f?ZjZYtV)OJyLNU_2+!+;uF=PowUlP5~+ty0f+3LQO z7+Y&BQ6;B5ow0&B=ccKW0^BT!Lj=LIqKtqbOHLU^mAkd3<8CoAY1sEs=eRLkRQ5&D z&Axg^nBT*L@H-fBCst<{`Km^9%-ywMZnEujy6vs@D>5%=vG4mfORs)~XwiJ=$b z`7Jv1;`KEmMM5!ywb&}TEaPmwyk7gq_|{Jlwr&>z@NCcx zKE86ky?vvr!Y36t}LD&0usc zY0eTBsj6BH!P=eyPdY|Q5P;Emh2VgGsJ(rLgKmGgSdCdMDD|U$4{I~MS(68`6VT#< zVw)l@o$Ck0B@*z*^8055lw+@quPI*AJjy~VK`$mK`!;mSDso(^!nqz4OS1UI0~d{- zmp531ln6FTLD#ViW1|gDn;=%80tTXi0l|oCZZ50Us8Lg~Y;}iw`Nmf`*k)lo>~CJm zE?wv8%NG&7ozVvpNr5=p0kNW{%q1N1l5k^Vkp~c%ju5oRDhr=6nT{+O3?RWDQiRyW zizXo1Ra&cEq@renAOCrR@n5;aGsjbKfF^;cM1F zLiFKPf-~^oWE4id_DeQxR76kbRnP!6A!Fj9o*hZZ9c|-qo5vuWOl?jO7JI0Nq@V*L zH~nI)Se8~!kafuSjo|D9?fsn*@PAv8yZ=|J@4s*U;4PK^sk)92<9FpY7Bb!HGrRCa zg)8rW4U_(DFL8x_={qe@3Qq{aROxlccMd(iIBn83n_$wAV<);as&%PMa+hcE>=wb+ zyc_xDD2;a3>80hxp)eD6(Vwz}oW${_4y=_oJ)aHXpP5ClTeIoxVdjAxCob@a{!krU zSwZjW)Ikmqh(jX-1jHCu$F4sPxE}Ihc7XYT^+qCHY;x2W_e{i5f!Ssb*+Av zxWN}o_zdWs7&;O&P~c@{#X9_*b{2M1s?7b$KMouOe|4fjJLEi(-CAjiBY46!8OxDYdji1bLnsE=z&^J^I0^NF0a@+P)r+Z zO%ia;WStNLnzgBRD(LA!(EEXNXgM}4DA0ya+Piz1;C$h{%fix7K{se39Q2U zl}6I?tyQITqK2TLI6J*=%Q*JAs|BhN5oy!?3%K5ywV82@iLcivUZrp1D<;;x8`VpO zn@%tUjknVhF49~3QGruRA69puy4@5V={uuNTlh=MK~3{&O}^)Upa?nh_z=ep0)}};J@2MYFP5?$|S&CV}Q;PoBifJFe-*{3Gbo!hwn_~oXYq*f=%PzG$Z#0q zI}6Xj6Qr``3Fj=aX;*Yl+gQN)N&N^3s0AYRsg*uz3q2RE4TGEbfMzDhux+^uLu8#q z*ATqNZ`pDsK0VwrW@WTW2j18B0R*KzjAilGQlY>)hhS-F!L&SL@CYZ@Ni7PxVNoFg z`@t3l<q@oG-8eN(*^-B>F;)dQ=L6X{w5`hTCZzeSJ z1VjIY2VMRy6hC$ENFLGx<@Lj+UB0f0JkZveuw_%Fsuw>Dl~}ltXL-Vkum18Wy`CJg z&CJ+0u*vIXM?kC6NPJ?fWoTo33x}(|2RYsr*g7 z3lFSmqomCynmt}4*Qbus(2gBU1COsIIOC3%85rIrwc66iIXKA-%1M2*4b!=cipMC( z-Kb&28+e4o@Y?w00uP7ldS%@s%xQOLv+3vuK~X;K2c#Aq8}IHo1v5m&Kt+Io{a%&8 zBKv=E&ySk-|G9+o&Ne-Xoilg<4Ipc${=y3X2LO!!=^GsE=f8_^|6o|-|LZRy=>KoH z%Ks7FGWgbV7IR(%<8n(JP5 zT|h;;f^^a>19?u)bIv}y{Pyqc4L7hKy?$#{-uzdmuLS)9P<74R+1*fNxMjW>DBKF?Jwawl zehg;)2LhA=$&aUq(2_Zqbg=evx!SHQae0S9y!Fb(ak+-#(?b@s8~v5byPe*{qd(T( z$#}?9hv8zeOIxjN8^~&xY3B-Wmf z3rJ7yGjqq~T0{(mE*qJx5W>=d0-B_DmUbknEWN~W%M?3IS*6B)b(2y_j;$q8>Xoxu zmmMPJL|=&@Dl+_Sr^#IazzJ{vegzmB=(Cj^lRhUcXRYHnvr=OKU|0Of{}V?kOfo{b z>k8w&B6Y`D64&>0?=dY1j^g4GpNqi83cFt_wU0F>jeW*S4~Tie?*$M4QfSLc$r+A5U%v9NnQZ(8>;#6 z&l;78PF9;coozEx7GV9z&I3>7W@$4-qn)$q$EM3HsAiFQ<56Jlad_aisD_D0>}u6p zmiU=6+I`jGOk9{NJsH{YCJF$UmNAnMKP|azH^w@eMJr$@CVFGkrDazVT%vs&ojJV} z9FrH*0};`!gn%myRMB$NNy#VOy28_Y>WYC?R=k6ksPYL!)q4X?P{x}AGWehROH^Zb zW{^#`Oevfb?m%P9gU^(SV?QuiVKwQLKQ`=#V|~KR!9Y7sv5H*w20M>SBP0t*vCq0c zv*3Lo(F65qu@s%>%|lKC811}%s=q}SoKhTP-KOq|IrTOboeZ^v;8F^h`!=guT&k$T z8+**KGCDo(s&pno1>M*Zrw;g@Xyx}&;{?0ik;h*qIDnQ}$05zM6h`y`mF1nchtQtx z!tJ&F(2)tLY)G8FukqekZnMIl?wIDnONgO9{}F5 z7nVkZ`E+Ltsl2?rCEQa!j9901sCi|YhViajN+&EErOt&ri6aU{L|CL!3!3MV##?hZ z=h`6oB|#2E?wN4B)t?h>?$$T@>#g2_m{zpkfW(p;8xM<8_ezPwD<y-cJHxP_oG-nSd&j~yFpwx1FcQt-6w&lrJ38uOTcgAr&Ot9HI9+dtF(*0$8hvuBK%&?Rb=zRQ4- zpgWJ$jU}M2b1LI`Wki8<>lMkVmqtY>QAyXSA3!T{5=r|+C)9?ahL8? z@}95w&xsH(EX5S6Qz6F2CBBhz{+*;p$J+2llb{TH);0xs^I%T%jg#v@Yt1pcqWA-U zACH~UW;nuQk8h0%waQHiyN^;V*s6EDaq_`Ay+zRS>52=X2B*WR2IRT#aSUqzk@-MY zi##^q^vhqb&U|>9CjTHmw&0bpX_JjnLA0WJNnyW{LapeT#Qfs1FpszSB4b8>pt?W2 zo=I#J3SxSD7x@!M;rYDoN2F}{g3tE0=Uk_4{Wme=Cf_B7E5>K2wMQ1nF{^zevx4&x z@hPXEDO@|FcXqmhy^9XtQYPO*L*OlhkT=Zw$va)0d?I(A^6P5Vm_N^21YOCrFo`qDL?$l3R$aW~&&>~Qwn z2RO*Q4-xFPv#*2eNtIN;s_aI`JIfZIy{ELLJ`VRH;t}9MoS0DeC5CU?PggJ;df{-$ zL;o>PV*9!^w#x3*C~v*Hllh%r30P#RvL6>RY~R<#l*NSiWkj-z)KD9bSf~n=I)3BD zI8PE6a`U0jiksW*dpnU=Ae)8zdZnMlb)&jCVT@QjCb+&R3f^I_AM})uTw%4=f>Vft zswf?&d`295DfoUHy>5IdKUMe(CGc)@v(J;`Z*WSqy%TKyCQALBJ;Y{@hLq z0^9yzdj9??p4p#_(`ZxM1_6$U_#cC7e~?W++wl6LW1qb+N^&x4GjN{VqE}qVdV@x& zAD;SreZ6MtgoI1Vc^FIK6qhM==-d)xpq-66;-1gu$lUzfs{EF_A|siUN)%fQ^UjXc zy9ETJ9i5$f91?e+C+ffu*hOEK#voUVHO&LVrh$dst8;!dLjp?PwZJ9Q&g}u-txNam zT;2xj=ZmB`qz-2!kl(AJ$6)dR!Y+b^kRrgRR!ppExO-|B*X;ea{V{`2EWAq;tD5-- zaC-`t`YDc)YgYuw>0IFZ$!*+mE|ZnfWZ}fubA%t!PN5A*^FNxNxSp1A?6o=*#8KvT_&_cKCyhn6YE4{QAqm z30(SEwg6q{*;tng|OHSh*qa+d`#YHe3XxQS9>6UP+<{Kk{0iCyQ@` zdUuBzcD~$Sv~;YYS;O&8vi6MQxL#;^pA1kwSZ`tdWx?2!o(hul>#2m|l=kO3pE^T~ zWfUGTRkW6(@m=mg+S0VodsIK^AE#0chX{$XC;Gz9=9EuxKD9Rp&YEh3PucV2ov&cA zZ0PZ(i&Fx_E;Hv%ip81mwV$Z#XYjmQb)uz3*RhmVB&RKzX%J_t4r=TEL2Ui>PQ&AZ zxPR&9BgE1z>*2ycE1h4`d_uq<9oipl zy~h*JX<=v}+>#*fl)W<(v*v!)o9M@QuxrovT}#Q%hv@4{<4PSL_s4AHf_gc4vwaduVvxRVqpJjwZD`1BA;4{A zeSb`>7NSd{ZT-wj(_egLO3rhD&pvIhx070Q$nxmq#HNG9{|A958^ENj1V^gzLSs|g!=vgeRvD(~dDHt1Sw^N-TIwUWJh=QH5_Z$i}`bv)qZYXSA?Oy=_t zmaG$d5Tg8AKH(ArV}31x5tWmtQ}_bJZcJCa3q1I?n%$W(1i_T=SWNio{VKU1QrY7%{KsW=gBr_xg^kx{4- z3EHfc+)c~qn!nak(B-5b*|niHBQ;7}S5V)jG8eTrU**K)4R+)hm?R)GVCAbiMG6fK z{0C=6?AZ+Be&r>1%3QT0x(Fx56g(JvaT2J?vwQa`x2V>J9VzZL{*!FyG&b{=<-M?? zgb?(fWZxwJ_1~@8ZvHndgT~;?Nvi^6WOu*KQyNr#NOK^uG1e}TeWp+x*Pd%b+SYR_ zW!9U@W9=W+M5mnQ6V9DqPrlOln2c=o{xPLVM#l2qJ*053&w1z?P_9eu-~I`7L8z=* z0q{?=f1L_hO5E%xcS|;6q2Rnn7K8sC_Pk;bfLjfaYW~^8k@{VcMgPk@fj=oe_?O=z zBfCy{%*q@F(yagGgGob7=uirz;)4%b<4&&qm(Pc^p8q{p>VJP`*K>ZXi+e>@-xxae zdd6u>F?R|L?Eb3tF|moR*W_&7R~O%-V4-Gpk)q!+bJ1*GQEl_JHwecBso@i}E6k;T z;q6tnIDAR@0K~~-;`Ea{&ZzBd-UpwDw8nUVheE^TEf3l9;`B}RABed%+}YLExf;D3 zB%_jF%}sS;*K$##!AU>5(N}ejB}~zsZ;wO`kXAf)3VLPQk>WY$C+d~MS%ETR8Md`l zh{diKkO4Nfu)twW_ zgLIgawKMm;)tMho^qpfc;e5%s^TRWOxwO_j#Tb>sT8k}_C#Ld#qF@|WZ%JFZjFFP$NGW94c1Y)-b zStX@zn1ywyotoWBnG_G<%h0Q_|LW@i_pQ1;uh9Hmhq#x|YVcF3%19C(g9ML$;$bwg z8EuMVD=X3Me|I%~grJGA*0SgwErY#ll7~vvCM#f<9vkaeWr-C-A8KW z**ps+!lx@vF%qQx?NzDmhA_1<(Opf}UfEa`qe3BR0Z^Vofm-&Ja&x%@sT@0&Omj27 zIY}^QD_oyj&Y#$?xSA{u9v7-Vt5gnv%L|u|Z??gNa=1IWf_AyZMvFu1vWwX&PhI5j z$d7CRhSR5rF^;3}a+k9dmPZFQ_)hTxc?P8|C6`HudJ7721up~Il?Al0%YL#w4HJl5 zLq(po#L}8el?o|AV{~xqs>^}4c=zMBNVn1TyM{w3Gi`ChY77rE4}%I$d6s9)&>BB+ zwWp()brb-EU89b<5gTPO$#+A~!fqjdiTLJ2naCB&SS3T6pG(%V2JPPSsRpeV-Y83* zYHA)nIWXkX{h^ARyaga5MF99o-=v$N`D0K$RrqxTIiX)N9I*V4s+H;E7WP9L{Ki_O zfId39D+U#BEuJvT=g$58k-o^S zrswG|tv~sOPl*rbqPhvuS~fLKbWA}i&53LcmJ^O-ZiSgl@);g|7QAYlb1?3NQCp zcm{da^tgv2bKsk14Y)6xp$l6L#i54JuIwQKbX`WKr*>~!SYKp9#Z|gV{IxCS$G63! z7S51huIfu=9ooN-t0yKJ#V(IQW-cM*8=j^TFA%^> zo#-)py9+J^_a0+(+2rzPE7uPI-u533NrdTw$%c_VNBFNvS6y1^J{BR~S7Q3XXD5~D zUgg87A-AMxs?I^B%v2Pnbb_-28u#v!;%57JPO)HdyBp{iKUa0iZ=||#!P-|@2xnQRcnVMmc+o>$fWpoV+$uLwq93`jnRfTv5bDj9E2(Fw*VoT> zwyDlMx>OTF$0Q$RT0bw^^Ch$DR7(`(R+HwK_pQf4D!b1! zs1Jyql{Ze6cQ_L_PjHIZCtdVJaf9vd_bz;5G0NW<*&Ic#jxbf$0Nt*?JiYA=R$Wxp z7oi$4(o&^{3{-|FlMs~TDE#=~rgDDhwje(zN6Wb%S|w|vNRXbvZM z7+Pqe0iuJbphDV5%^CVCP=1;g$OhbdBv_}c!Jv}dv0Wh(N&Ud^Sb_CL#RDE_Vp zC3wcilfcY-VEAr`A?41uZtDt?4}~?a=KM zVz%{)>?`_^-QI0j>S>js4go3vosJ!xahh?@Eq{nGGr6OkNzA-9mv|}a>{)qZT|Tjy zJ3F;bOS*T`a3{b*!%E*YYTJEWm)^1x~Ih z$src&Q4?+FTbLxc#Q{ok2$cE?63o>Mah;eS=RB~Hojde{8!m@5o+ke zlzO64QQL>Akjc#uJ{Q3QD=m8{>R@E6M0}XbD*lYN%6!XmVLcY_LkgVKQMnxdNfQIQ znJn_E5MdD)BI>s&ovmILt4y9>-VyuMD==k%b!6u+K*P{0pu7JCu2gF+L!| z17wMh{(%04`UGjbimWPb%Pwl1%@|BpZ7BVk5+%ztG|buWD_>7oJJ z;Q;{RUsL+@|LjL%!H%ygbB29u*^3)q$x_iaJL??_P0%z0QiQNG-oHNkF1As@yKv*d zoD7O#+2e`58gIvx^^ObR5_uf$%umUqwx7A$j>fm zR1cr#Pv@nuT4{8LE6!?HFU7}HnylYLE*3WvlrnACiD6TaD^Il|96Wo#EHcsYo~L%jzOfiFxJ5Ig%o}L^^z8R5OsSjM zlX{4LzbpY#II{!!K6gg<5WeX3C`8U=*G7WvPA3EXe)Dys-i>108LqfpVX`_bCgqI= za%c}oP(^gTs~npGn@lFwMOg%sM8)UsnAi^1ZZ8@DLI}Z+MvDS>?s5tJ#EyKjp=B&c zj1BWxY-&fYW$v$g4?D6Bqc;#k6+?;WI=(#ia>S5HACCwR^dXWIgYg~jcwLL2u-;?ip&SBtLIqI~+0zecuFR`MrF zF$$ZQd>ERk7O|#aJ^Vey-j0^Bygx+P#Q-|x{$bkg;8C0dsAIYA!zv*o+(W*8>*Vu)2V__qtPB^tQ^h zZ7dWqpP}b7=}fLL%)@6R_XJD+j+7YjnRry+=sjI}Jx{a8O({(vn5m4TVBM1fut}X2 zox}>}z=FEc(4Xi$OH&OImCVVSi|h6MPEu4R<+mH4CM>aQO@VOXCu8Ia!aL)b2>2uU z=H40&N{ps1RX7z3ZV+9{vfQ!D5HMY*eg**$p1hlXZ>oEA-{9vb3{i0vQ)c5^_8??Y zGv}U#I)9BF>e1{S`X4qP&z&-T$b-N)6L1}dJY`-=U)ZR^O*?+HTg}W{R9%Ak>X%FW z6zx_<3JhC#4pN2Nu(#BtUYu4Hm=mCn)yjAjVgd2|s?L!BEn)S+4sOr!iUo6TmjTxl zo-hY_DE-uLaLSps^Zoc@GGXDsHe)nC06=neelK%D339nJ>>&lBO?cX&qb4h%kD^5# z40?IK^lbjt3!)?Eu5r;hnYb`f^PJbX3VrG5FbAHFDZI>JsYzg?x})NK9h^SRt-v z@yxg4D-sBOR0Yqy2E*~YbHhT`x&X>;Jn{1UK#IMBiHzX47CNRL+*8=&xQ`29$p()n zOZ>dLj)q&FNtm20WM+|3uk&yWRuWJp)os5eX}WIg^c82pLaYOX)7cNU#6UHdmYBJK z$@lOc{9;Z;y$*{gdZ}5xwr+K!FD&5JPQ)`vanIZZ7I4W|u{_qn;XtR1JL;=i z<61mfxv{2d?6`mffLK?=kyRn4a|MO$cZ3ZZ6uQG(Q|@=F(9U@@QjGDMI3_@EWjB1f zX`uEFZEf_acpU1k=XjD@Xe7l@tLjpfR*SQ>Jkxq~WP;GitDQn;o}F5;auVi9l*h%c z0zdEnGoaB;Nq($89W|7}_Br!RxC)B{sf3>No!>7T^P_~5;Y<*d%&h!mn7XR#RhXg> z#l{Qq;hrJ-H$7nijkUfO(ukqg>Z4cb$GOGQ2&u7Md(YO9aSy5F-kmrgF1(`$Nq{eZ z5vyTCishpN(%lNqx>2gnL}#_K@vad>9L|lcVLeX7bCDLDR4ixb+iz>)5R68&2eNws zKYrbr_Ce(L4?Tv8cLZN*L!ix-CCw?NwzQ=+*~v_;xlVL6>%9q4c%z($(jFA#K>~W= zzJ4h1cfFy{R@?99_~A7i15b{nVKQhgh!p&2%&6B+`vkb7I5qivns2vkiyH@SM!ev;*_oS6n4_i*MP% zolc}9Bl#3FC!VHgXI}C}i}ZF)YgtZ+?2N=Oh9<2xJn?OC8lHYkV*UgjY06860VSpU z+UAzL`p+Kj)7F;Wj<{81uHqUQ&fA}pwJ$w#?#F!RR0%WTDm~V?WYa~YS1=)1>z5|n z4rB=`b-B978`^*p9>Ha$V;j$&M2BpE{D21Zujyv_ouk8`81vyf_Uh1xSsz>8*t|?* z$e~)miL{i=CV(eo0DZu9qz@b^eSTUsm@-Vdf&8iVy*BJw1}el8m8>HwzS3t5UFy}rw=YgvCowy|NUdk&I!!DTOOTV1V%JjnUOzwPp*O`=?s-5>30N|xk6``FLg z$RkI+QUkXx*hfF-pl7c_$oVh{gb*yhwe)jtO;GFHW#X^ci)|x=!o&;`%l`TK-&*0h z$s8G`Q*U?jvW$=HzdlWdS|(Spaef>;NPb&Jn6$c+jh0E=hKJc+%1K?<=W65CeCtaJ z1s8|1DuHPfO0bvAylMu=zQwz%g+PwRRk(@ z{}IN+jSpltVrIcyNT`bioD4D+z9Z$gJEEk@EPo1r5$we%J$P%JQ!Kz24ks$MsK*iU zqg!@nz280DbZKvzt3m%ts&M{(bPx=7pOe2S>q|OlmQ&MGz3M=}%$Q+YV`?=njRF*+ zB$%o2kqEDDl{<`ocMQP&zZq|je1^5v@}|hhc&_aC!mw5I)_48+uHo^XTkoqdebG#F z@vJdflfWeJSstmwpDMaq_8b5e6P-%bzq#x(BHd0e+D4!qyzdb;xNTdODL7&6Wf~KY`G0-To(P) zf)aS!PByL_gKcw>8gBDJIzVpj{dsh>HsZK>MPtj!6*d)hR(?{wnusl~Nf#8V;TWz` zV(3X7N~UIgEB)ezzF&=(lm`nGKZD`7qVV{l6GaoeJSKIsml>yZVF-dB%nY{~
  • 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 E`C7XV9j`(UJ)gAczntR7KuE>6S|B8G`6}h_5 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 literal 0 HcmV?d00001 diff --git a/images/Selenium_Test/Create_step_6.png b/images/Selenium_Test/Create_step_6.png new file mode 100644 index 0000000000000000000000000000000000000000..b13c7f19fa119956c363a6cbfed3963dc23c0c59 GIT binary patch literal 50764 zcmdSBcT`hb^e!6ZC`ZADN>xxH(n|nEx{9=bbV0gwkR~9##EM3G2Z00xL==d0X$eZ` z9i&N#2mz^qP(lbKZwK|9^Sf`{@$Puz{qr0{B-v}Nz3QCb_szM4>*=T;JIZ+!1Ogq? z)VO5;0{sO6ffx$@J`8-rkXk1S{Byv^K>a4Dxcl5Z@Zm3~8@F$OKqWCuyEcb_&qp3; znEHS~#~bN?543o`vj>5irZjKeFbc3*+N1fLBZbaUW|cLTJ=;zcn(Z}wt5F@AG;?13 zdX`kP@biqW=$XN@CGUCDwvMIbT{&tpccFjb0RsX4tgwWwO*Pr?B$t&+L{b`)$;ovQ zb|zMlFLAt9{ci<}53*|+J~}UIlXmcy{y{+~FGs&dI1#-!KaU86Dea|+AL|Tx#G$}* z2lXst5zS6qYYy>{U?*EJTY7}*m_0axQNVRg)o#^`ZSon9-zNA=JS!wP1quNLeq2A z9LQq&T-sdK>HicUeu#>xJES_9x?Ilm@7LucC|JE9p^k*EiXFM%xz*|CFaMvXdTZ0V z?W7uKzfQldEq|&1Jb5X|9)edXD@%`H{?E6Ms=wykak}>jLK!VeN&a`pS%+SSo`?*B zP{yJJAidg&?DRhO+IQ`oiLV=tLYm!#m&otpfu5+N!&IqLn7xwSr!Czbp47=9JA`MY zU8Pec7t8)gA6?$LB*P!Zo zv1B53`StP(A*o;UF0Ed20dsfzamZo}B^M>$&I8j5`?$&^cqRcKjAi8F3F>&R2ch6@ z3qbt3?QqoEw~1`DbtLr`b@#`y>aDHt-JJnUj2+dDTdJc|&QaMBR#aKfVmI}HIEL99 zBaVgkw2!r^6hH6#*6}oO-IV-9)>zm&>AAhv!(8Iv&l2&@rR}(bz_8ut62_EM%5;_W zg~T%y);3JZIppLt<-q216ieS7JA>^sOVA)IA;IZgal%l4tbp`D39bHwroLtAXq3rd|| zxtLVUQc4MVMr(Ptd}CrzSjtA+?tablxV=(>m`qo&<)TxN1CDo~Pu{faO{6Mi1KlFu zP{$MM^q$AvYK`EPiF@8Jx8o0(ge8t989crXmx4yykhk)zH7+g-D+#uWi-nqpQ+8%Z z{MN}b=3Z*yqb;~F69lztl!$G|gqoo#RSP3#Gt;_Z%c883JlQ(6AQ&4A^h_jo>jvvnn?E_Eq zB&SKV-MZZ$PwfMlq(cPZf)H*>GRu?j&62t%m+e0?V!s+$6p%S{<+_3sdpt zrE70@uZcW0t^5;KqNT)K&sI7M z4px)u{vtuD9uZm}H%3JD<+AYZ`BaL$GqX*k;jhB2)IF;@EvQqY#&sS=p9|X8B{w*@ z+I%+Fl2Y>Gf4t3@P^iO;LZA$R_|nKzixqhcdr!!;Ho3gVrpn^x=Tbk{e7jopVW`(b zT)3X?P7JSXFz@XhM3NSB{kYJTewN0`u&vbln5v2xRCytx)3#IxuUI)b7S}YC$S%dS zMo`@!w`mVnwy~HlKyo}O{|AH zkCQ{~P>H)Q2M840TlCzsjX>IiXVh25DcFvE@-wF95=eM+rmA@LO2W{ODtsGSi6fIz zeTK6h*OY&VOdfx?v8gDCvvQj(ajqhqsmr^0SyT+t>9xd~4P`boOJrO#9L{9PF*3ti zJBi({<{OyY%6fRDJq5*=@&+q-zR?_qF$xTuWjR|PhL>eEH2aB1urvlK${szpUXq_Q z=Po)Mo@wrYaILh7&N=(q#5PrY`T$nSA|QfsPkDFZO}4c2wiZL}`06onj`tD;N^SvL zrpwxq_Q64xI9HsacOv`R@K((l2o*lxKYU+9?8H{LUQzh&_M-DAok8WYi%2t-;5yVp zT;C#>;i72^K2Y58Aw2HPU*J5+H>Ex08NK+ZG93njd)Kru+qoc~QBqA>N?&egkN@tv zN0@&orf0Tfn{;XKyoT1(?FbgvK;v1=S*D)kFj72DroN~@)I(^DxaZ$sVtW^pvqJFS z*et^jcENJq7n&~y0yabw*_y5#WVW-T_Q6WbR!oLtc`+d$w&CcbgA}9gl`l zL<7moA?CX?%PDwsTBR;}!vrO56*lvc8jUe(&20jQ%SL~D6CUCRKx%iB;2K=LOGl zFN{pv4K!(%^7!tqE$ZVn>Y@(!e06TlatCU{6aGO;L+1ktN9&uEvE5;T$i@|CJb_Jp$1xm)3am5 zO^3g!g>;URN`@#UXJ?(z8)eIg+u7)7nDu)$CclF34-g-!#{^4a8mppF*j8#7WosVY z98V0^o4$JhG?Jj5EwKll=aS>SgJKn|yW|wUGov+dTj;n_H8=vc_H5%A%p?p!dJjJl zCWbq|lE6>3)%U3Qei@0r`I!qBrKp(KY^=qc@NLMUn6?tY{Zlg{@>9dlXdd~m%IUkF zz00l>QHlw+7p#&M)88zlu`evDL781MKRx=`ai*T9Dny`<;vK`A-Gg0ay*hjMeI~?~ z!WdIcFr=o&=uHT%Ta+F1Iaky>!@|pP?yKF}gKS2sP}6nC)(2Fu^!W>gHhBw`_X`p^ zhOQg>wt7`rn~9r0;TtQun!Egt^J(dozk=IeKI4A%A&Grx%lBfI_~!=(z5zW29`I~N z7%5;p{z6cpF-IIRi9K!DQ0yXSu&14Gw0NyYWq^w%JZ?AI9P_k|P#`~Uj%l1Fz1<<) zuj|r=I46domT-eCq1r<*HWoBXBelM05BH>ewVcHh^=%yl8p+WXT;&h#Cuv7fw9nuY zd6Z8Vt@E1;oUgk&!zP~EakF`bad>?%Vy#&`>?HCmk-vxb2Fz3YP07jj*41I7I4|hs zJCAKLGfQrZDxYpN6k!(?hA5z{rr)u9x-V_!UsW=XX2b4Uy)Rxs>vygNi)lzwV$M$Qmrz;O~&&+mm8nqeb7A3~~2Gx#<8JhNhpQ2S= z-&xVbnJf?dIC@5>8`xTj`|_gCn{k5Gy;XPTWngAvE=jG12%I}0D8 znET)&`SD{+6+^D${4!x8y2?ZRp>|IAIe*TvAN*C;ab++^r96A>?l}=<&OtvCR!>z; z_$V{427Idet8G4%8FzJ=rO`)C^)2=t(TuAB&sPzk6{#WlGyMRsq3!mo1E^ePh|0?= zpgaa6m+CumGX|X3mp*rnB1m_+&Oh)=SYRj*mc6NP%X7^;{yjLnEXMeqT)Fw7S92`M zLf}WIFx@ltBlqFiRr<90BL5J;$WkVQhQ=<}Vl^;fSIL&z+?|Q+d6zEk5w3UP?%dI- z2|4uK++!Phk`lNH^AsLyCE=164gt&{laNrwh96S_RzKfq5oxpbxd*?5R9ieAYR>92 z+46;OI&hs>h1Ux0yUK_WR1Ux=hZrn(z5>8Q7m|7%?Gjx<&>|Lf+^&&%p>7@~r|He1 zNiL1Q>>3E4s?We$o0V5$1@;1kQxfiy>Q>Q+W-q%Qv-e5taoeyF^$zsCSAQ>B-&1tB zadz$Mn>i)dW7p>&O)=|LSF7C40f!5jd<)OF*Qi!`uv<}IEZ^Y7xFZKv6vQWm|RPWsYfFB0A6F>x2h7W z5dmE!H2~l-rirKCjNm`G9(;$;jM%{lufQUHpcWI^`{Z_9KWwb-RxK~5p_0+Xn+hP% zR{R%WPErLA?brtp3wO8sWAOM6ag!+1FhB2WR?14jZ#Z}mHtp~xLVKz#@AL_@XhfCF z%#b+ipi)oA=zPAz$kM(ub&wyYzf6flfHmCV#iz9)b?oc zb?eZl9xCAQIOef=L5GSL{*7g!`G6-FyI(swJ^JR;1HG~61lh%lw)K@iw>Q#`uPpjS zJbq133A(Ii=9m~C809-T_PT{_59bEA86gyzt_b^90^1skQRyb2QCJPwFefK*5GM8G zojX`nEii4)Us>#QKfaIpgQoLU2r}+2*OE&07b>gkrk_8l6~Ks7uL&{|XJdL=g)1Ce z6y8j4Z($-T$@xw*j8eKCgy5}VT0Sn3K>c|(uuPCN{cd?5a-Wr4n;4O5r_HHv1(}QP z5~s?<-WYTI6IA(2@iB=-6Zu6OCUE!^_lGicT(SrrpSJuB)q<6amV51`*;XK$ z5oLq0LyW!G(u`zHW{s+GDqQP!JHOE4K1DEzU-Yp<)}Z4t`B{G+y^j+W~g#)#)O zZYV715hoP<-9u632nZyN3oo<^_$G7~f&R#;`0XeFI8xApd-G_WFo628FMl|MycTcL zn37m7P%RF2fj}cO*G8&n#e%A8yiWGHPWMvx()KC=;`wM+80n(=_yDK@u@3OGom$mE za(_qZwttnGnUGr{`jWV{RU#6_Y8Hfys8ib8F!ZcGDdb42Jpyj-b}^2#S@E&)7;#Yw z#D+Y34=0xec8W+XJ`<1ts56}iJC|C!hs=nwo1HJiO@y=9Ii+dIcPa|K)_2^tt#qx# zwQFfe|1SC1e=-ZeFT0 z?k==?_~@iZ{j*y+*y~ciUvi;q=WG1Lwjkf&zojo^=_>CTDUEFFc}xWMnClrunBo+A z6fl|p7Pl;KLtV$cH`pcj+HT&^QU?sMg;XpPjr(|4}-&&eas7eCp=kF23~V7f#?T zZoqH+eT0SnskKqYM9=o*%_o1+KM_~E&L*-yi@iYa`6Go8pF`lo7x^^kkN#g)%Q^+4 zkzhP?IX_y`{(VnKfB&Vfd}J8sTw~0u|9o#S2#xqc!Ni;UPbQ>$;*tktaLJ3Vo^7rl zJd;)a>GOk*h!bI(+2iPS#CX7B@*QI%rhmG*WLfiRdlLl{C7e}?mBFExMTPD^XL)*( zg^xanE$-0SrrFuIbtLLgdxZ3#p*Boz(kXj7X3l=wiD+CJGF(kea6gChC3|n|0F<8G z@3u(Vr@t%Uouvri90+*gYNkam6QBKQdZbnxzP8W#2M-HCDsLl0*F2{7wl8O*4K8^K zK>ogX15i~S)km<{5fa&fHezyQzYob1f;wInh5y^e`xN%P$JXM(iQZc~bE z>2m~{p(W{F!35CmyOwWl&mMNkzK1dtV>eg}`?|iE%pSEQMfN_C#9q^|{qAmJl}G)w z=%q?PRlBJX3yk?5;eFuc@GCRv2d^icajDK?dcF;*=r&hQ5dYxbLc(41RV2SR68O1U z6pwvSm7i%e* z2WoW_x6)1G8$9|vHLSBrpW@i)7`;@;D{HF|C!8%B=&h?XVBz9fX!+QvRpEOPhm3n z(1m&T;c-65^A@(bq|XwEnkkrXv4dP)WcER`{|xsvIGmd}-2pYaaZ+5~bArE7jD4Kt zjnM^ZD_g#?0kBGti`F0u@0^l+9ah50CWP3=PaFzz^_ZD|I}dK&Ns1`lu5lWzMYZ8m ztP-A3u3fa(r5~_hlX)VOOy51^nZq^qAED37K^h&A8-Z)D;lw@Zcn8OcbKr3OZ%(Dh z)-7DQxC6J+(BU&3I@#j9fievad@ireYzq}guvP~D<&;oH^aZEl0tW)MD3aQJW0Xxa z_3ciKr`?fwvQ^nrlBr7JN_Kecub&u-naWqP?EB9!jhy(4zb^XOq|oG$Zu<8FowB!Xl9k_H%M+ok@~XGe>?F8+{yT z;?dSytw=|hkfzza+=OaoS9N+9n`yj0fq5*9bYN;x8js6eX$EA=9tcEpBSG zFw#33JdhG!H-V+td^*&uyocGtIe0J760PgPc*{I|#Q6i=)pQ<`m7ep70u>{vKhJLh zdjmz^8`p!iv?62nS8FgM#<>}sFmDJT=X2@NM??56h0JwQ9g+mt5#_p20h+rleT1De`IR*wHvA7`0v zHeZ~Kw-H`D%Yme&(4ed+sz{mG|LApq>z?1+dm}pIm!`EEd5H_+Ry~F4`~KjbNg9t} z)$Zj`r=bM;Mp^9xH@EP>M5+jNDT3^kT!!|Mv^nLJIB{B9)gOEI8uiiJ)KN`W1IIAo zt#NFIQd5Kf$@`C+ff|AAUI?>AtQGNv|aj z*S}G((9g>Lay@bXW)U}V;@hF-Y^tg0gmyA74;_R(8Xr#&4%?o3L2T}t4gGqb zci*&Ws*hMCR8v)mBl8tAj~9$}N$vHwML1ruy~x!%HbGI6y2QlQ_N8b0I37I2Y4TX@!QBfHMCs6nA!6KB#LNr!}qx^{Dr0F~3?av_CH{!RfA&1Hlp;K_`YpB()#wbLR%x?Cd6zd6b8N>4pQLif$T4d8$4LEjge;;Iy4zFMmLtf-`}LlQ5OCH7MINw zdF_R|Lz~pVT$#ver2bgl;>!#xO;$XFH_5e&$C(lC?1f&nvb_ayD*j1epyRuSY(jOD!y24f0lQ}TR!M|6(jYjcgRL*A-~hBGsTE_rOmpPHGKaQ?d*@% zHQbyj&*j_t*N(%L zwC|L2?E)eq&sGnW9&CJ|b<_v;(q6x?kEK!Y@VM0F@ebo4ryM7CkL(AxE?Y;j@g0>M zMx~J2wS!n&93Q$ZFuy9!?&z~BKP$WU$V}<=ZZtyPt!q7c8f7!#4mpZJBh>8=Aqqvw6442rP5PX5>Wxx%^8=0(V3^u@TozTMq? z7qb`rZ@XUa&vM)rmx#QQMy{(znmK_#kzNX%_$lMVdemGDB1HP|pyNqRftjs6i9=Yd zBiA>fzcz2~F|VY=HKEfg^+S2U?ggf>^UG?f2R8wEq4&1!(wK2)}ct))3-jj@e zfLMS)S=Ae(?DMykm&dRa_wA*ev6+4O$A*`d$oT2|KgA{@8fg#|&~#^h z#zu#Qw@>G{N`2c;O>Iui4h7jU8Sc4Qf!6AlK{*dWpFuIb{Q%_ajzsnq2k_h00F+*= zj7R0HorxeFzV`QBjY!gMa!z|A66I(9v`SDin)*3WsO&aZ$dQWR6`oe}5m&Ns8A&Z) z^Pd|<`5HI+L7C%z{CKy1s_>4j<$VB7PE~iR%{AOuJZ-n%oEfhoSEHz8XCBz|Dw+G2 z2fC5q#%k~KBlVmCLqONLYnSZUmKQBvnY7>o>M!NM!QmxATWve4&8*PK_j%eIHT*r^ zx^&yB2W$=khW5CwBFwxP<27IoodNa{z>|9Io35B%lM;H`60MNFkw8<#AAG% ziU+jV-}J3_bYZ`n=t5kOy0Iq^(-PqP7YjU8s%q6x4%^I$QFJ1C$RElF= zeVF-Vh^wNK*7VM|bfOkevQ>u;ZyF{OSUD=XJ0(b+z0cLm?vK~(MHk{~-2X$)#4PPU zIfN_8tE6!HPlk#Ezr6SdQGAz|Qeoq)`6^IHyCF+BI~nsY9n`3H2p5y?H<&iz;z?fr zjJo>cAKm~8d6=E86?H;c$noYs^wIg2nPZ62?zMjy66iWNy86jKuZn%)S-fwL>BI*# zGnFp<4=@4+ZqFY5XYl{KYL6r)>&TUL0aNkXRJ?WDFanXNOld}*2I#mwqa9W0Doi{b zgY3c$IA?ekJD0Ichj%iE7_TgPNlNgef`@UIX*{~o{=2XIWiMu)0~I+@Tl!=$o7VPW zYwyRy=AuJ(=JVSC^8V4V6W20Ja9Agmk%PbOhDJ4S&%OeH1FdgGKLL)HO$w%)jzM+d#@_YFm`Imk z19ZhgD^Sw8u&Fe+IIm!)WbO5&lBvGpvV zBAeo(EBSA|4+GYFxpBANol2eM=BOagzIuy0&1-01S6P3svF3ytLnFrgUanx$nIslo zt~;?twGY9gFh8C=mK=l15lto*D068FL)Mi}%#T!8H$e6ahQMGxSJm9n)o;KuTjj4J zy(b1~Az5sTfQbZu(ufj7fPeR-z;#vWS)aGC~Rh=;pqj)Bt-W9;X+7I_m)?{{pNDZ|x5vz=<*WoHvfGO@UUyCHK?3|_8IEaj zUGF+8Dhkn75^xLP={Xx3{(MuDPv=1P(16U>kiBZB_zopb0f>Ubt-47rAIW650duu$ zDH+?{7XSVMQ4OJw(Yf9B9mAyb04Y3y4IPHAIXY}>eXjyD`yA$c=}XEt?w zQvlLxb-dT>YD6hIL^BMsch;1X_G)*jnuZ+zq@UPj?l4jYvzO%18{ z-Onqrte5nW3d{GR8MGq(n|s`zjcEi`0uJPL?+ zDnTQG$@`_QWp&21qSb@)#Qn2B0tkCQ_oZX`Rg9h7HzCf=&oGLesQ?@M<(Srrv9>SH zrua1h+7hl!TqfQ@w0weP8jUdgK@gZsCWMw4$+_iWd$qIsGA?C5)Q;lr>6)YI>4dDE zz@x>{7mjU&1iv6pt|LGV#n<8b>3^)8P$$PJyLEFxJ|LxN=>6^l#t5vMp*}OX(SNE6 z`?7QunPL_e6X~ABZmj^uy)!7~+;3UrltL{$KCAJ|>L zC{4Qs)Ig4b7kwrd3fHUI;JuCN+LjD~V!9H3lI>9>V_7s$0J zc_*7xBWUDU&wPh={B9Yl^}dT&2OzNr+$dHcC>v%QDToyGXBl0vZ-06Cu&pQD2Em3r z@waAd}AFh0f&d zD{9u}i}O;}(3aIG;hnqCjv~9(bHVd>+dDQX)=tQ^VEr(KqbV(*hUhogcU^x}Rj^lF zEbF1QRb)L<)#CC`Z@Vx#(-t2f*&mG(|nb|Y($+5>{)W^5pYd+<@l54YZ#YTQx)-`XnahvcV({VWp+>FHr**}0MkWvwsrF8q;m zMQL{pvz~Z{)X`JSn!D<8V=}c4SGH^2AwH>lwf9n&0Ay*({KWRkN6!;P53+ugrERVg zPe8oehY&$k$KGOnC1=FN3DNWK2|3;&TVWfnRk#W$r04Cj@$j_{INt zv!cX{2nB)s4uk3b<`?|Xfc}L8t*{=u!$>>~Wmepf2Lno{nngKZ%%Ec9XTzI!W56jd zj4Jy^(%3hl%p~o|dy{*`yH(nnYcVtYjn;8_Yp7OX+KyCrsQ`^=-uG$D?6x4JGi5%@ zO>sr=Sf@A6l=I3qG*S)eba7N-2Iq{gN2phEFM2ZT8yDB=(A; zWcIwdVG(1q_X5MTMrH3;ugp>sc6rJ3CywSl7yViYWMl0F8&7@b8tVFf{up+p!Ro1{ z?N7<919y5@3YyO$2`nj`l%h2=p%xEiWijRPGQALo$F-J=CA;8o|8%p7P&EY#keI{# z9}~KzfNMaOCMO;Cb=~&&SaLbGhF)%VGTa!df0*|TlD65oUUuk3BPnDrwM=0Wqm=Mv zefJv>bqarA&s+a|^Tu1YEouO15~EHY#wCrl4VV?UfYl^(#~40h zq+h;R5Wngt2)9XLj|+HL84;e|gM^}^4+qyy%OKeaxLY=Hs z3SwIm4-HW`O1Q^v!sEh_g(Rzb1TeYVLkB=hfB$y~a*J*e%p^&8ZtF|&D-ivsVG7vv zmiQZ!hJPg@2}|OJwmd2(ATvj60g{McupwOf)TKYVeW*3KsR&#V-MW1 zJ`4uet`0l+?%>*VYkbpA?UCbPqRO>(Vi#dQ{AXah0f*gh1z3YXvii1P0YCjqxAL1( zj$jyc53{Jrm}$K3WcBF_Ee6?d3cAzdH&R9~P5y7`2~@~D;~_QkBP8W8p_B^}@6>;2 zN%wciLfb6-05Ed?Kf4rwOw^VW0Mv>21$BNAqF&Dbffars`m8JHt&QA$JZ%DiG|PWM z+Ajui-E|+p1H6aN`T*#WpAD6I6&8~t_Xj?Jiq?KS*OJ5pTp_thRNwv^_8|c}Mh?c!FXkq8-!K#)GM1Q-bU_9xVlrCJ) zEWxF_fzC31wBRMrIogt3_sWXi~Hy&E-bmYbdYe?oBn4|vg= zWoYCuG8nqD7)ZzO;{4B+y6M&Eoas#$G?GhFYBf;-vT7RmqnZnW&%FX6P@EjxCaWT2 zn}J9fh|aWLZ3#gpQxo_P&(3U;oo1BQX`zd;tN@~PQ>K@o^EBrVEI>>EfEm-TA~!#& z_`397?U-v(7AC27+%A;5s!i@&kL*mB2tc}rVrPGqPVmuOQM7BYpR z`hs*qBIl`Phn{IVC?BiyM7VE9C&ZfliR`KZ5PURyR7vHtd}nQp!>bc>5S;gE%cIg} zws%#ZhIRU9xIjCgPR7?XD@}^9AE8G-U7%=W z?N=^rm)tSt>8M0@9rDTiL*Vc`ej;v)v{+^*2zAr&Fh=OVB5tZSP-G*k5G; zG$u2-1ok#aSfPLnyfbZb_`R{`s^{hcD*%IK3LXrnnssOsQ`pfY)%?e#uBsEl2-35Y z`vH&rP4JW@XXs>c$`y&oVPVJ{EcnSCmQPNSiIww+18)cw`Y5bG60@J+J>1BEAoCkL zZA`bd?Jc-P1s$~#z4Sf6}nm*(7O=?R@VfQ^e)2@eWkeIvny2O>pQL3#kCSW7wCm2uycm#@XYLv0N%J+Br=n62 zr#~RS+_I^t1U8i9Ch!cd-3u~1R`{*4kNBp*@n&z6~eF7;g2$s)5omF+% zM6UVi8heSD^e>n8Xn8lY&GhwvlQUcejoiKxQ0b(IGP3>oBlqE!MnP-IwBRjzr&x)9 zIwe1p#vGNzjxG~;2-g=pDfC>mI$$;PfPQ5YOJh~N8X!To&|m&+`uFVghjl)}Im7!} z@qB8fUBb!I`0UEAjGisKX517`?UK^KXEBjdho`QtKqgx9WtXKdUrcP-S18%h zDf`!l9{;HfwDkXh?)D{MeRhmUcf#Zp7}z>E$bh=U1=IO^^l>Uqc|F)UjHinL23=78 z*JC?{=Xr)LVp?~9+^OE{K2P2l&`kh?Zc1Tbv!vc#rPnyEb;=P?Ys()3cimM{p7Lb3 zi_Bwa0jiB9*GprNv!pYi-fRE1X-9oN%&Yd!8vt49MTI=dJSlryeV?uU6E0Br*L z)|SA&OAJE9kvr{>Nt8Oxp-hGZeJ z8?!rCo%okC&n#(hcXD>K!M%1#4W1`H}GOlTnTd)ak3zo%IOf`4v)PulDi==v4< zvNhhGoSV6;9DG@=z@pd53wublG@9zOyXkXZxjH%l(Ck7$<%hwCd&4-%^;bys5)P`b z3892wJWJ!QsrU!~7-pX|4c@$`ru;pMlH=|RdiOxihv_?M>TTQ{mg2f0@)9Zu4)?TP zs7PhWS#SUXNx5AIA13NXc>9pglDkQW6jVl-6?K}#X75#$D#9GW!r-hNwLAG1xKLM+ zXZ-m)E63%)?N`i4nL%AY=(b{fCN$ai4L6#$z*v!&C-=58gMUcZFekhbMX^-m#00H<|0Ub ze;l{=X)^4Fj*)D!T2o7+691@G4vJ9%?Y~8l+)#(bhg4k2G_u`Bz~;I$MPUm^K+eCW zoC!HC3gHYzka_NJcK>+C3Fx-#kDVIOvZA52=+?U_Y3gRy%+gw}T9LN{mzNTElf^{U zblPYecmdw`o$QE2R2|ETn%`|vNV!l4mk{LPs9qKJZoFsi;#DKtjCkR;lyF&uf@=63 zTaawp!D%G-4$rh(eyj5gX{bKK-p{Yn;%=()qC;0r26p_T)CudyakKTLNv)xSkBauy zE{}uB>}%`y>&1j;dG8IXR~y*IUS-;4*xE_6+Se8D9f3M(_$Qm^y{r`(HPOV2F!{L6%Ox$Fi17;MnK-^_)8+Be1l<3e zxLK3B-(KtP%ODZO=>GNoJ#1&t0{gh6Do<75M3FFLGS-voVxYH6IYQ1s@{usx zx$NSPSyFzyZ!;dbn?geKQ?1{t5@>|XDxnH`a& zh@O?$^64uGIi&Ww=nRLvzO6Lz)Q2d9;@Z>;9ILr)^6D5oN_8+k@`G-@$PL!ESd{<+Ic#H?bfozr z7W|BJA;C6Vq0>oB(=;VbN)vvH4YX6;M$I5L2r)|b2o~jZFw`b$RA#?Q*znEmaVf_> zh^crevM|Zj9c+V1)-VVFWdFNVS2Dk*tPRl|wl!S3-OWWzu@(>ABV(!!%{-UYiT7$I zSJ(UeKWuJ=0M{gvGk~iOqhhQ-?DTpHENv6fLnuP~x}&A;=#;3@qh`9z6BC4}hRcrK zOgT9#d3wF?{o4@d4JFpu(u55%x=i$8TpWqzET|VS-@$YeTzNtP9B#;-7!IR^r=frF zT8RrD3+d2;HeL5i6THzM>d5qR1M=Za30h|hnat?Xcd`sQ@BpsAehu1=k}+IKG=eEt z&duVCx<5Wx|2}U59Cu8ga?Q1(tB<8%cy(yV3C zLw?wm;T(OdlIk_IB7;Z`?^+Viy0m>9O2N@dt0QaV72+)};@4hNV zJU-bUnI(O%B}FmO?gVYrMww%!XpRp)?9<);(a8L5$K!tFayBkh#QgHl=?&I1-9DV6 zkfrGd;tu){hZj`}E;jINvD1Blt4ro>oax@{_&H$`_N5BE?=>I?2G@CuEKoU*hjtEX zMK1KjqybmQ1ZD%Ha4#5^QL}iyM&35Fs4*fz6tqNl)l&5M_mdq4zY3O|9iI);v&Hv2 z9)A8lhNh%iVfYMf?>gzRZ~0Wx6&ka`Ig|4D*zKSF{zkHKjs{fkqVnB|h=HN}FijL~=As=%Az~ssdM+guuj$p-TJmN(z;mhk`N2jY;o(v9C#fcD1bIIPO8X-a zy8`YQ8nWbuG{WA0leF~M9`fQ54z(=8t|CuOojHm4@;R(1>fDRQU|G$~Ik%Rg6g*Q} zysbqTaJd>UoR3V&M=QmdZgIhatgN&Ulh8!=v$G?ml(G)^0+2U1XOcSidKfXMc-^T) z$<{aGQ1}fX`zfk#{h6QywFz>5}UjGI$vOpiqX-`7Gqnp^yr5v zRgXGFRG7o{D+HVYSp;^&^380u3oq04j|+*(UuopI{9{l29IUxf}U*pisMH6{dk z^LQefvwN%rD-nO`&FtrPvenR>pA_lVP9Ke+F}W9gT62g zHl=o@_{PO`DfZNfph904@_-ukG&Wb#4@igO%t7=a>}yX?>v_=`SbsIm{O#@Jx{Z25 zD`B_9(rVY5`p}Fz-BA^v^u>n#D8Euf&Sct!>kQlVhaNTm4BS_VrGFZ2$4lK`>X~t(HHP9`ZPHMXr%FEZ`l860Ax1ps;k?ck6ig) zZ~^2E!JuYItROw)@4f+G=rWCnn%R=KQR+V1u$6{0SqGYYr`vOyZbz~JG%0TNiEll^ zBmo6l^4mw02SE!1|Gcp|9mw0JqwEKoM|ux;5(>znS1?teM>`t|`@O2~+MO2!gV_f)M+2eeBVY z6zz+v&K;TI@$_^?180zY%Putyr?O6Q4ilGUU;q*S^riRaI&UeV_>`#z8awF-VDZLy z@&>~?BpS9Ar3`3N*ELukHu(r1Q8tu_IYm>!~E~5fBB0C zAN$k(*6(}iNpVf~@K(UzyPD$C+`6WeU;vc5_rF#S=*GV6II>s*q?Emi^i2!oGgD9E z_VzK`c^F4Obf8DabAM04g&)c6UL1YGQZflB!=QShL#iQLYG!W#YlEMF15CUqCIgLW zad_^trB?X(4V~#ZJN=odOTg7Y6TMI1aC9P{>aSP)nPuP=tQI%!o-Oo-r@dxsS`){EEDF0}oEDSW8;68iM{vp_3_cP%Y(^~|{s12t+a z>&G)bPmLl4RWpX|&YPDb$UE>k555j9R7*(F@COmy=!-#_>kB~KZxa$AW&@AOEA4__ z)OSLrb%cIW2>&f-{S17g0*!2clv#ZG#5YaNEZRBPUWU*$A_8u+EMJS$z6eoHVP0RU z0m5=*t;p?wO$fN@$>zAT`D}@I+ewt6;PL)TdAk|*TtVk)VP8wk!MFE9-!1}NrvOlg zf6Y#&zHO?_H_=O9-Pi}n_eB7c92Y9FRxuEGH~pXr zDO+q`y{Qy%l!LS_L@C1b+#kDe3rGd{wKVF9?DM9KqkIn6Em%@fch=%A18MRc{Ze@< zc<*EWsp35OwaP$rM)|`wl({ywgy(~?t$mE*M2b&AgpP&9S6se7&$DZEVd9a(hC-h# zSdBsTR`so3r_(cnkRN+;3}Gz6pN1EAn2s#Udcdb-5qe;?&4X{KO7)Zr*kAcI*>mt{ z0m%Ez`tLCuLxX9jWucLu*guNpYZ%zk{K#2vte=L3?S2ZDg=0kC-4U1(hlGrMEx_m! zl>YYmB@_d5E(Khd3#eoY7nV%6It(ce53J&I{sb!UeS6bkbg@S<=jh*xGx;qEA_J6) z=!+DyekqOd(k$cbSPb?h3(pJ7EF&x3z0jTEi&%QZhv0?3T?Xi1UFW8s(T_h6UHWZ0tbgZ~@xDhMx~U;gPhzGY zn!mu!#ai=)OdoE!tTyL7D_5a^|9?ALzis^g&mLW8pCv61Ws>ZdyL`#`Z@2poLvX_D ziqn`RAO!NSk8nCXHH-`BkQYdp;90Mi!U0pD_vT+80o?An{kZP{1hD({fCx>u+~=7e z4NWmeb{}=J{~u+Kty5GV_XR?5hSaemppnIY-(f>-nw0q~Ve5pG9dOG{Ex8*m4|z7gEN5$z?S5{1-B1d_sbsmUy7~%e^N}Xi>~1Gw2y>rl~96q z;lrVJI*9$OEB8}3wdvhib(c=DvWjh?Zo<9M#6bv|TwxtFJXpQeaV2oJ2Lr~@KFbok z`|E&gv6T5hAn?L$UGQ;Gy0j>0(a2N>enVprkWg^n$27DLOeM1dUR@x8Ro?Q!KMA3&j!D4uTr2-qM!>aM(`{Uw7R;j0+m|IC2Bt zcbA@RIl`@|TdoU`B!->-sC@g`W3*C!L~S-AShe|UDWw_pbu#%ZQ1kV9P|*}u2v^(u zJOR5Vsx@up5r3QvxU9sJG=eg>AZn5I+}lD4r?A|Pu65YMc|39Wa)p@Fnxe8O zs!eIau&b;z+QUz}5l8DgLo$<(y3EIg6-6BLnSV7JZE8%=jx_6$>5)S5PNcw1b$M#Z zW^6}Rw)%&2s;1Ctr!99=eY>s>ki;#mQ_ceU8G$=@Cx5TWvQ{M7i_{sRJF_{55X$t@ zFM9@{9DDwQSyw`ydgf>{dXlssZ+IzwO;7dh)I*BtGVX48)fbcHCf-uZ(g9%@cyCN? z$N02N&v2gF&fOga+~Vfhle6qyC9juL@jHdba6Tbptz5r$ZFwMEf2YRV^ksWPMjdz2 zX*SM<#f32sY7RqpiWXx3ReKf3f%8QBAI2x2SHnuoXlFq)8Ex-XwrX z35WJ}8(@c7PG&;C1Z-Tgl{qj` zQoQ-|V9_-s&RxGCEVh2j($$2xL~G~Ja_}0(ua)2m19h84bI2q8OPvbwfkDbGULVdvgVXh`zsN^`PL{*l z;V-6C#k{+5#7+IrAh@>p!v;d&WvPA%%N)?3XZ^BuJjLaeLXIU7fjb}Y>Vu^yTpzcM zwsUjpbqtS1v&XNCna8}eNrMuHR?@rnfNEmgd-d=H3;_uh@fY0b+0Ko)RU5SqLL;E5 z6796hzK$Wz5w_JjK9NP;ejpnM>wrtFsSa;(+MiAQ3(mXm(WKOR$|Lg<9D>4WX%^lo&grxL8Qm;_TD(asw!dOD?4zVsvpCDIT2n%3z2Mb)8<6GsYjrJs=1s#o=nI+ z{0zd=W7=tG-TDB!@8@2KL%DLxk{>hix>N1`xX~<@4OQ6NsZddXdE|LQj|RNZPBPk7 z$_$91c+u;|31tnN7__tWy_-?&vYd1d40b^UT}msDsZGaFMm&gkJMt5`zzfODS`FV)!${Hn5QJ7m) zpDCxC=L^9=e1@sFCp=dJb1!CUhrj9f*5oO1d(+NmfrzJEuRiFQD20Pdi=%D21oYH{ zS${M&o6-ztKRu_<*Nm%GewtRc-B%5m3W6R2z(~^I<+bgT2KGBfr+3~wj|6?J?TV5I+*>D61&W5qN-B+ln=`5vh1#2c!VO#qi1JN0_Ldak{Rt^Z* z6Dwrb_h!gZ{<=)ZXr-KeTG^S5wtE_ppo~Y{^e{(s%ke`8S4p0M&cZNq?ct~ZZjn>C zl{F)?7T;w}IqbD;JtFqKox~aP{>aoe@+|^ z!>(`G_NJYy^RhRfh-QmL-haU3tI>0e1i8{66w+l2P5=JN>=jGgBg%U0Ex)mLcvnDL zU33_J_y(e7`8IAHGoEHkzG5F?sLr3DL^;rKPw54MD;Ar=UYfT-W7GtqvmHzfge40} z9?~Z`P1RaY8rn+KG`~FPdrKMk(s?uZxN$d6*%=oznn!h_kn11 z@uU-MgPwV2k5#pZFxY-`{N2^#pMsfRdiN-JsK4BUb>9Lf;CRd*`In)!gyf{>YtW7Y z4N<<5=xW!!@U;c`R6>|-X(wSlk8_lsIlhDk^Xe_|`Jq`eZ;weA=A}_j(x>?%C}!(t zRzI*qq!2ZhA_*Zm^m@ibgBxF`qK*0C%RkY3q~ z;*3VNs9Sl^=PrytY|TOoId zBTggV3Z~F+O7?0y;v)*OU{Lj8=KzJDdZur|E9=hj(B5I@Q%?RW3u z6YkKqg)Fqk912pFD%1wAYf(`=DP?5)?Ymv_qESyT@fAmG@#^#pG_8o9^)|gdaiE%p z#{t2#>9W95-`PqQOjVxvyCQiz{ipEdNEMC9C!StgkKq-XHK|uQXWt1c0qY`^(DdAo z=L8Re=ZlXW$CKq&O2kv%+Y=AWP) zZj`&_O_QqaoqOutMO&lcGT0k1)J7`i3OnD#yNW?93+{odA3E z+L#VB(3nimlVle7Ri@~?)i9v@tX(c2KVZe~GEevmd`lO2rcguB#Ox!JmdU4)`G$%* zvjr-);A|MqSuV3tYT_o}U3p=ay+p3H-mFPl_WRawxi^29xuL-(Hkh`fJt^+^hS`7= z2lQf&(PDsiLJwJLcFmMrM3XZUnf8SWk|!T?WD`A8%QBx>CvO?6sOXevQ$+>DY;Wgv z>bqR$le2VMi{b(&Ax2mvQ%D8xm+9Vs#Xwqh@6F_k(NI}I8!WBzR1Uk&-$veBH_ttqvzmI8l9(P1jis!=TT<$My((y@B|d4_?i$QgtF4* zbgShxF~OlPIq`+vI(a(0d8Hz*+q-2Qs#EgD_3PyNf9U|x0!ZrzpCtr%Y*|@xomiGZ zEy)Si1d)Q=QbLt~i?FmDb31~`)4`BJ4#%EuqG3qB=7z&-E;Vn+X^u(hPZVeEs59az z=D}df38&TIj$e-_7kKJK#$}kLhE1`fICe3);XQD6BU zkI$Yn`Wi^6mAQJKc=v2Rd8rE?7T=ENa5lHSX`mvVq_9TW}!c3qbTd)7P94Vy{gSJH*ZpJV-d6==2c7q)#| z^pi3?AJY+WVcw#{ILQ1W1Ec+;%0#exA8T#yEYIh z#G^CHc902u<^zHJZS&U8(A}@NDTGE16r<_ZgUKtgj2Ti`7b-wh^OJ=!GsBvEkiW#{ zS#gk|0`ghLw6db!vRJ&?y8H*2cAR{X$knf9xL&%%38Z`m#g! zgVLE}LtfZgv9ED0+$U&ECC}Xl_p@wLDSL^~t-gJ392TqLpknuP`0V_=dOEyjUGB4} zO$A0TSNC`ECA^kv43RsT~I90PI0@e@-={>w}q%~2VaT?{vp^!8dPK5PWIE$M*03HF{sq2 zb6IVC9odSg=&ZoulQqpu=aUqJcB3_Uxmz+K^ELwK7t*?sC(2eii?Kvf5rkNowQ-Y0HmzvfH) zYfnRVe0G#OwBbd^nsc^Z;H^7nGWvUqb=18-ttTWU zW@u0ogPAF@TXWbB4|Ay9Ipv9IOg4Fkn==OaBXIKxyfyq&9-R&DNC!D}?Q0E8iZ@`_ z=y{oI;w<4Qt+u_#OwaUmt1tF3J-Np}vh8tIv}*#>X>CcLcQbT4ZpCdMKVcvvB}n%u zZkVz~dCdg0{3ZRxJnQw~5r<&V76w?htkwI0X6qi zElA|YizzG)-al%~9Jc%Dby%SBPhzySTTd9?VRBOg6x<+|-c(e~Ij#4WaovS@UUo!4 zQH9_*IQBsQCP_paogj2;u|nA3zAu`+J}Ms{TGJ}7{CXl*dPKsqMPnKdxastjW}1-p|V^kT|o32wPx zXh4jNa!q3DMhQnn3!5f|4BIJZHyg7Q`Q+VH9-z(q`ItJtm7kxySpP-?yy6BNh}c_@ zyJ38nt%q`c)UvPQW%#1gEHoHKtIe&2qBUwvT1B{iWlXr9Q6kj8gY?%qLY@EEGH>ZY zrE(S=ZWG+>1NQK3e<3nRFG@lF{M+}>?0SxfDYx`0yo?LMh4k@0Y%VA|FcCnF17A$- zo;ExFmrL%TH@}bc*KKc`oFU&GIsDA2WA4!lQ$$zB)tNsy?Ej<0eRJ&dP>ZrFi=`!;=m$cU_u<=c<&s75-Og^z#`>W;U@z9F(nK=4ct{e z=tJNh*3>!l^}ltlbd6}L z&@V__9<}Tq4lKVj2E1ZieSs~0Ia276ZbEjrMIGVV`lJ_BsL5d{4j@%?cmF+?qKSf~ zD8tgz5$zv>rTw?uB#qe<0`LkKgLqYJ?dx6^QcF;Bx6r`IfJGfh zFtk+p%@Acx_Azsac;Mk@^2sR2Zfoy}^XruyJhjb*SHS0v>dK(4laG2R#}Xo(1#h&n zQ{Jg{s{Q>p57Mj$3qx@g~Wok>`eOfJAveV!+m^$%- zmMcA5EC^vxMR3vOssG~A=yJ)_`lfENR@zrjTJUyd9>%MLDkr~AYC7y2u3NEXa!CHm z^~(?Rw0la_Jj7wVdhhBkCUr-)4GV!|Mu206oZWbpVIU}0IJ7KGW~@@c7A?=+avr{V zqsIY@&Ogv8j9s5;jdzW*ToEZr6NJpLj{(wT**qx*l@vu+-!@EkURoe6B_ZEX>D|H} z|LmN=v`v<1ltMu`)(T(wc53^>P@`~?TL2GNQ_ zda0E%2W#S=wl`C6_UbBUD_(7RqIW>}m`xHiTSKtMT-U5YC?_rDwa(m$?$zhT+Wm?DQ^Em3WaYtUyJ6P$s^fY5^-vaOa4w680lNJ+9=ZEnKi zN8U7%AS-$=(k0>3LlHCb)T$k=CiU|;G3M0T3kBZGIi0P>D<8nB%Y_ z(7PvmHL#?i@B`SVGCFVI_j}g^+=G39wMjdp(JG^V$T?|;Wkrt%t8jZ-k`P;v*G=u7 zfXUZ$0hK!$!ItU@O2@!bz6T!MHw5FzdWYt^$>QqA_*LR990>?8Rlk&H{mGA(5wwY3 zz<)dNpE}R6AIVk`TpiX^cyk2|j!3Lw`$U>-#%s(wbdlUUO1CF&8Xh}xM-V*b-*D~M zf5Nq;|A1@b6OMHWikKvl(=^wp#F#Vl#){7)Gt5}N5QjyNRhTlJD%Qa~^j<>of`|); z!WxBSuL<8cR&YB%OIl7q1J}EA+f8m%@;;}(q={e+TR25wNH5pkQX>3TRFu6&Oy{jV z>q`7qXz|E;q>w$q{Do|1I$B5^wKw!doaNM`wM@@1JIosJTcJGxo6c@>rudc;%BZ$s zjXlL6tE{p8)H#QMpDQ+lHk=xf0~I=h?>ID#@RfyEOl)m~-P3MN>0nxbWsCt1x>P;c zlO`h8t&FeQM?H^%%M-=*aTc;r6l#+-oIHW@T$dR#30L`X`uMD1U2eASJ`#-IckFRrrCtFcL1|ARLjIYv9n)PS0E-Nlu&* zOg{Wp*=83E>b`Kb4+lD#CetJiUhNJ`JX3tbk2PS}SPA!C1Z9>+H}vnRCj#A|SNaHyKL+w=@F zS!7DMjxD$9vEMgt5#fzGsl_whI5at|(|I={{wm!4k?_<8q{5k8W<|ky8Vyrr@9xo8T z)uB$it2qMPp`?16j+I^v7E^rENC!5y;Pbq6W`ZuWg%}U?SA-xlhPZU>2IEA9(0YIY zvGLTWL>RM|M%gNQf+WvO65?^s+9sLQ3FYj6O%O_C2dW8;|4^NEMCW0>&*dXUd2A59$Gjw)TqX@5h-3d-fw|gIQ9#N7yOX<;O{~ z+#Rd6UN~&`CY6Iu?(875MM~|`Ks(nUWQzN0$VjjY8!6D2Pr=`r8>Xj+tCIv~hj8Z3 zzFPKe%WsmAVgF?Fjs$w!V#|_D>3mF1XB${`A4C5wb_nD#%qQ25YE z)uN*U-)TaYH`BgVxftjq7mZdE{qxNpPot$4AdlZE)sgC*bEP{S2m!0vwu&FwBL_Y& zBW|Zh2eZd3zcO9UDskDU3~HqEZB!{DT*4Cv9K*k{8=-h;m`!k&Ldgrj0WYE(WZBOUGZQU70M*qlcMm4{uragtPXc?h62LOHnf{Ekp z-aD1fV^!Tkx~T+}bgfulK0;#&yJXn*4zWlkrryE27H?-gAVZhATC%E@?3A_C%yHqV@>t@NT%iapZ;H+8)!4%1b`w+&%kZ9 zcCQd+NnpP)5+FF-I>TN=3~s=j7Zw{QB8LfoImO9hdiN2fnD#ywxB_z<0clu+(}>)F z`DsFziS9}>@m6x&DkC7@>AouU&~=>vs%D@Z^|}>q6(B*{6#uUa!EO*Rj&-0MPt0Yl&yJI%CUz>j|l*FwvmLPp#z7ef^bb4&Rk=rmsl9 zcG*kOP%7>d@@TQc_0y$GFl$?dv@9cSORdR*xge9qs{*aw9`LVfxOib8i)ceY%u)K~ z3BlGkJhVh!$lpDcWj+%xt*%kwusA*-%xkHs(3O3GYI+l{wT|v8El66DmAjY}_o%US zF_>0!nmcqnIq@iJvADtRj&<4U+Ijv-vsgGCuWfm(`-d(VvwSQG1$!`v)^*t#MYJr6 zE7mV_#7dLKtrZPtbL{Rmqw{jUF*r>$we#YQ$5-bqq?3b9v|tgyH-x0v`QUsXNAe=? z)(w7qfcXqXCSmu}IoQxtgybx7U=9yZ6`&~mHxNLP?!JO&rGFu(N7q_!+5qjTbSh^) zr!m@0^_A%!MZd+!pxGWDAu(Gne}#ex+=s457PIy_Gx0hs``eJR%{2b=i(YJ{H52#3 z&jxW!Xw>F&uR&Km9=r|gP4Dx7SC>t(5gerS-p!?cx)p_f$8QQj=ug@gs7LlCi|pAH z#*t(G&i8Ezz=U}ovJ#&!0Xt6ur78=H%=ow3`x^=C-rGZ3HhYQNakAl6uHk3Jq}U6I z!4tyA^aXqQoLn%pO~Al26knpR;7yBVPWPR1?0YC0mIGjw~-8c&=b&$RO!NB_yC<(C3Fku<~g zP>VQ3nRxF5sdXD{5NI8z>FCuZ*!Ukk(x&=%>8uDpH^g9Pzy5R``q><SIb5K;PK3%q#rB#4{{5RR>6yxV`@APAJ;G!8Chq@y$%@K>jC05Y-k?xrteJs+2^7|`;=jX;B>n4E}m|MjjI;i98iB(-~(`p1y<6f zqF@<@7b&76-G$mCU5cY}x9f4ctd|DCYPq;0znKdu254uWueE{wOuUBWf>_dk<|*aI zVy13KP6~Q<%i)8AxITBR72j?!YH4}i`C{F)b+MuM?#cj+IpE87kVxa{ zA|bIz>-9BAv4!cXSRSS~<=Y+&LLsz@4>y}*yVc7zGF9+_U%Ezb>BXN1Li}MHK&{#4 z96REu1j>hGO;z5B^XNa0e3m(cO^&?odP)3A##IFAKo$sw{~f|0fK}vNa}thDkE<(i z(Yxt>=j?-yUc2P02s4I+nGgIhEyJTnF8q1O@f<0o8ffTsdexaT0#Hr=--o}$=$zG@ zyXgdse=1)d(mqFqLx2$p|6cP&l9O<@PLTA@Tuf^5PM$LO5c2nj07UU$FY2jCK~?YY z{4(j6r8PKI<%4tk@2|l*fC&Ca0-~6qg%M8a$tufDP{>AW32BJ=k*&Z3p8Wlc`aMnx zmY2Rm2A=(x5jk=0)cWmT_&?b*b2RM-|5D+7#n7T5-x5tBUI0rRDdjyBX|ZMBgSF74 ze5g0oMxMTH3zP<4^>#lOO;+FieEy3kp`eMzTwgVI`-JgaeHg5zB_Q?>pkn(6*#u!x z{SfAuHBPFtfSQE~KtQ(^&w)3b^W_MLmB>CHM^oD%nEvx^_olumFN~$Zlx-}S`Ilqv zz#*g&RenV{8s>1~DIa8f{%g%5_{AvcUK!@T?nH4NYySAwXyA#eAPqKza!~6D*$++k>Wd#3tNWn*S5~IbM@=_JEVGd zO{aj^lV!C0VhUrC9ARWeF0lOvPR4Et(Zi!7xE8iLU1TmE<6`_CRF74@a>~NrX4Bi- zQ2X>IMt5V+djfuAM>{o6!@FAd8Pa94HIu+9gl||M=ZCGD3&I^>Gr(y(eKe`Aa%QfK z4ww!TpOVD~U#55~mNU5^;+9y4^3sd5ohXg<&4&8SS?czAzu7R(o_g>gv<~IoUWIp* zRZz5;TV7XAnnw-srNV;hR5=ULjW`5r*pon>|zdaiRdxxL9k44(I z>mph>iW8`i>yc)NkM`yDvDIn%TN$1WOHugzZIWqj5($B>hb*DL%iR=iidPiei7j*JpDk>krwqd7CPak)I@cs5uL*D^zpoVhbHg2zJ%+U7 zshP!o84_*7arh%{YnURKjBJIVVEQY_1`E5q>m+Q`i#`v?3K!I0b9_$m{INt>dIEfq zxA2v?z&Z&6UZhUXdCQqDZrTUXOA`y*^USQ9KOfxSVHE85+ZD^V;et4v+LwHefb`(5 z%3Yf6TN;POUw@YZR3m-0@X(v#5SoqC+2THg!(jCm ze0bF>ROJ$R8evZceL(Rx9Mb$K%x>|!33eN7k7|w4zCf&0a94(}RaF$Tpi(Zk6I^7$ znp8HD6;mtidd|`O^b11~m%0j}_#NnO=lyxoJ!FOZ*N`93X!;@St2((^13k?jFh)Rf zwEsWCf%Hd%=^`Qwv&=%te2up1Nx%t#71jGNa1}su4aBKPWC6uAu(Qt4VK@T=Xkacj zGyBaKww-`b`+`ZSOj|+jmL|_pBBy|)I`!c!9=tjdvp(@M$>^hofe}ObVYFl z*debkK8$1m#fd+K=oi*?{V@@-zLX61V($l3x2^92gu#F0n0~p5iQd4+Qj`5+uG=S( zCj&_SYNDojp5Zr*YN#VSJNnY@_y1#=0uTZSxQ1RC0D4q|x*?%dPvp$_#g72nK15uK zXt^eIyaMOT^sE7JdLTyq+YL04v@)JHAlfbbAYP z`FN;q!-cl-YkCi4!eup6G_F>AcFyp;W>m%2qB%ltU;h&f02_kexhVp3c)I0^YQER; z2jOMOXtp{~Q(+)hi5dgT`?_Tk#qRIxEu(Y>gC95Sy}#R)f-vxPklvB)5t+?LEBFn9 z8fKUR;BR223P12)2ciN{AjcRxYM%*eszZei4I1 zFi-1GN&Pk9JB0FF&5$*adeeM4`{To)6Iw$gE=Wy=eAUcGerN^mWB2~EwOc#fE7Ofsw8Z~Nm8!hwdnOVldcly;VpxjV@ zQo}OhQTSXy3_@atPSL_3UHdyd-wKwkLNHP1jF{Ag7n2dmXRD%9Dj1=sXuJw8>2ss5=cTS20$8q#HibbN=fb|EALmuKlEE82NIw zfQ#?~db`gC>j{7caAH7ocSP>)=`nLu1vc(|DpaqgtxeaOb%Br?9>=d2CjnZ<=`GXZ zj`jq}2zVeX>V)VfufG9W(C(W*5j@~M{V_tORf{ZR;t4|nEUBcF^Q|--d3v=8){NY} zxN!|hoB{HFtYe?#vbTZLL2Y`z{|M# zWOV^(jqsd3&RiL~^aK)UaVlAg@u1k7k3IqYmnPf1$ONc7>3E~sb*tQlpsHE;=G@Ls zVgY65!4!;9bF}--RE7j5G4Y=|fZ-x7gvPhyk^?=oAk!P5+Ol)g8wCbptYZ!ss4*LSYe`C-a8&^)MZE+Li;+xv5zMfa z_%&}#`A)Y$n)8-FJif@ zOmP}o=w)lC&eVF#kudz-=#Sg6Z!LFp1Hd!|D@0Dh4*F zAT8KS|4?^mslrkat%VhTUT0(`Ye7c$XQS0Dw~c8!+9SGL#TZn+pfeWRxCNQJ&uE38 zHI7h^6h|!tn2;OOjs%4Mu2y}@+xXsHc;fu|yqvh}ghGbPoTq;GQ!w7}0yz8Y*ST2`w22vKBiM(XGSe%EC2T~@ursP=shT4^=6;@KW~w`LI?K&378quaOPn_a z)!6#9)0h7+riu&8jVOR0agW)7qG-PHx6MS4M<`UE#Z>xh-}X&UnTkg?_Lrha^%#m{F?O zAy&4YUR70F`$>y2VbMS}jJU74dtP-mVQl}^Nzt^p4`DRi3OX|+_E`8z4g~J85cFC3HhxA%vYF$zgM@w2;pl& zVGC8Yk#%9iab>g3=JUD6>`87L?;ed%2u8j*Cq3al#oHXEKlt+ehrz(cOtNrCw2s(= zrktGt_gO&{V4caPrV+tc@>!GoET!VRT0HN{vg}1iiP$fz0pEH)l__G_(#3W)vJ~l3 z>z6M;TZQ-CloY-}Tt$b@k&rMABv_p$hmH|s%JU19U$fqBb-)%@F_Bumd0T#BQur8! z=$0t|$TNznt@zu{*?!!iru4O~*vZ$Gp4;!QXhb@8k$I_Uw@22Z3Y@bn^Ovs-*}kpm zepsjxY0ZWAedRVwXFN{$`q~Q?lAN~OG$E;ej9|gPU7ZH4236I+8f9f$+!9AVPapIGjmmJ_mJ9O?k(8hoP~pe{^GVA>=I?u^`b zG!QA`4iF$Sl53)*L2lvYfSBF8$vN%}8HDa_3zd21`U|)jV>vsGq1?T#iN$IH8+#la zYhxN)cXW1klx5TfSc~>DG|p6hA(wgnjp@ua!Gq(EKlF`*t&w*fN0* zVCcLFs+1kHnHEF#6_Mewn$XP!K$*f{PEKcilqd4+FdINWZK_8up{JI6zQlWKPib6& zhsWU^fGSZU{&zHa%*YfA6mR*PLr}Lgs&weudz3Er6-o5R3uI8~1Z@*^IWxZf(z2Xe zk_fOP&uH8#JRfLC;f-Uz*ge8|+ZEJbSXX5a^{mM6$8q{Ln?dqB+cz1UmhD6n2~x8G zU)`ppxvVYmck3K;8(lL8Wq=1#h}FjZi8)%%(P6|n6#t(;hUPd zc;nGokFb&*k3DYx;ARUq5+=|alz#cCiq@wymwEGluzp1;-OsuY)6TEZQU4T8auS)a z(PlPyVS3Uw)J*jW&WNpJ4NbYc>9X87S^dHUXE0VnO!arN4li3G$UX>v6Acm&i9;8f ze(C4s5-jNVZNX+vHf8c2O{jNwwmi#USA%e{j5^u*(+CtlM#y-Snl;Mxim^55kov-# z_41ET^@S~PW@X7`?D^Y!*^Ql0@z))Vr!r<7*QhrVG-Z6TyYFLo zDis}|CsEQ|N|+FYS7at?XnIbh_OdN-RO5AHd)uHasTBr==gUKd#L5Z9my?LbNxZP6 zOoOQ!Vp;vE2VSnWrr@oeawnsIKIac_^go4?#tw8h@?@CmrSO#$MUPX@-;*!i50K9@s2Izemdn;QyDab2ocpkCjx)HQz zyxr59GZ^R10(bo=Pv!8dUXf4BszqO%bqAZ;zQm^BvYrvm{ z&uErk)~8~4>y$u!8Oy?uP&S# z<6eH4-10!@x&K%vy4w@dlylRnda9y$cJYb-l?;4{__#wRTH#bt`j2btas~P)Os&6k ze$$1OYa{Zi@ZQOA`N;u}o}RJ*xJhDVVJ?6q@TB6kVEak&9x%D&;oHNelhRXbTt4An znft0b8|@VwA3RrC8Q^E0)5C~+gxan3#!Y^>%=Vo{Pz<8vo$3r?!JQP$bf1l@U^t%S z;r0{ejZ!H*C`efP(!TjD9cM1C3r;8wmL@G+5zX_k)G4N&R%1Tz(G5|HXWo1vL!5jT zY|ox=WV@w)1g>*xe~m>zEK;~}>faXLscM0M7R7BY^#Tv~dvmhW?*l(}91M-h)r(>M zH5#g&aVRzAuF92PLaxG9E{E_~n5g;ySclbJ-wP@rn~uKQ?A#vt33R6{0dr%@0ozh@z`%Y_Fsn~4oUMSxxKwaKZUs+H^sUX+ z3f&MbSw_2ybac+0n3oOo^-JrMSH+I2i^0g=N4Z*uwT&^Tnk0aIdSjA`@4B2$UMb)v z0#5r6Mgy#gJ)k*Q6W?%E;Ud&IIR!0lCE5VqmTSbrC?+$y!9QOSy5W`_Ci!oqCbvSWmRl>f-;?_#x^hJi^%iCe`h@_=@qxYN%F zIuWRGcCEH8OP4RY_3BRgCSug;$%R`gHcq?HvaXw%YbX5dO4aD(zU2+rYYyQIvsEiINvw`@`l$$l=X_pNfCuNK4 zbm-zNKu6OLW$h;L*=sI`yt5<6GU-Zwwu7y1?q%?Y&jN?r%BU)dcKS6d8~Va=w=dwW zf5>q7#@nK#q&a6#wnM=EyK<=i z@Jje-$1Ho7qQy4es|0M zQY}b?3PVoLhGn&~m=uK3W+If6=lbwNHv70utHsGp~_%fx=~B3oA6XtC!P%QsCB!=dgDk;B7l`0u@h*DJQH?qUwd7vh*G zREaU`bqCdt15?Y=vEQHJzZ0wb?&>9T|2cU%5e-xR%Ve@wmOL&sK}7Lcjqk4>PvC+w z(V*q<^?|KPXMvEA4(6v)n0l-C*BDlgRD{bsiRsD^w(lT4^~6UNyD>90Eb^Q0j#)I` zSEuNAO_>e=VpD|6_#)@%)W_tr%(V(Z-NDjcTQ8}#&0=ojoZS4rsd-YHSYaP)BCqm5 z=ehZMaZnbv{?5QnA}aXp(CFlF;QH4Cl~hvtly^@P`lfn=3*va62*r6Cg%Mj z14TQoA981c@?(5)aB>~8&=SFxz?h*pA#l5ol|3Z|uWGw-%lk7UdYGL%LmW0hw~&+Zns%?Fdh z#oaQ7;Nq|vxA55gtqO&H?F<{RPX0RV3nPP8Sv@T4zd$Q}AxyKw`et;y<|I*SGPMZ$ za)A{%M=W3JiI9G>`shhj*!QN1$yN3uEHttoOKD?vqY2Uy<($JJbK<&3T4~9Z+Vppw@@MsdzOE0quIkgKoMvrdT+_q znVDGZT^&_le~%yYF~S>QhnIyqnw2&;qjj=RY3nkmEZ@ce>4IkYR98mf{zi;f!R#sI zfI~?wabuhgbWz^c_J&FbB=xO+?Jn1p&p_@cd%)Bg>bP6b$4+Bz_@8L$qVnwXQ&{&n z*NrUINS&**VH|j2nu#CCE<2m-lGQxiu_D_uBK7kzeP4Rj_j24HSQE^9q@_hVDFjD)@W+YI+sXR5`gIKD0UbG zrvDVYOzr!1Fo{m$j$Mby(NIxdDhUGmy!3LzR~q#4=B%m!CgY0`-MDLOeqqJTVvR*1 z=E68Z!jznZVK?;r8pmn5(4Z@Ei8TC9h!+sm>@VX6`r=sf8y}d;?g=EtzdT#H;du<$(#V5 zP%x+v2~4Ni%cjY6dVUbDHmU5srI92sihi6LU?w`0t?de?e2))pZ_fpondm7Ud}J`|+?D`V8{h4u^Axa3 z6S)w_aE}WC{d#ab1@vZ;Xyd)G;3-^wzD0Pfa1;y4cuY8nDOu+Yc)!MK`hVu`p+*)~ z9L8aYn0Gwn)ZuqPIV8TVPDZ}mzC;rcBQgI=16>m6{|O*5zoc$0_Wd4%Yx9?s z7;U||V2jLp0X*yLtfkG*`ozzmO4MQjO@IxQSVTcQswz8ET`z+%?Mq2Yq#WCC_0Eb{ z2B*bOQb5vkt)|xd?-G6}JG3<}q|RH3WWO}e3p7#PwGi#-e708^vvfd!r{X;h`0u~* zBo>laToLR3FU@nZ3D7(<^OHBJ-@%70PVNTcWSyh16rYZVEYflpshmEXr2<%vx)Hvx z3J->PuiqcUG(&lG%Jj9jH;OQ3O8ANU*1B#RrQ9t)vQr z9qIGQ!^G>AEnI76@9WJ?`Qyl84m%bS_r1UM#{J&=&&?dmPcH@xHlibt7G*$ z|117Jn$a1Fj6qY@V+ga)`Uix`bG+mAD?EkuRc-)P>bK5k)N`|JSLqcTRzIENzb_gM zzW=4Gdtux7&BpahA(%H!t+w~RmlqDzd(GOf2D73Y%8Pz@Yo!8yNC58pORMX5dSa*s z7Bj$jAj7xn~&}uxJrCI%ukL4 zlfjrHKM$+oBMJwV_157Y|B&OL^4mSkq2EUzlo9_2WjRAD0q)!XWW2;=dZsG{A}=pu zx%-_F*HY*(NckBpZ$b=7l?Ai8Ja_!IJA8vLIV4TRMaye3{BbSpu#yJWkNi9q{`1*C z3PwBq?Mb2J8N>~n1(9vn%X7Kiv^6XX2)#ZGc0&I6)|q%wLTyOwV$Zjo>JMZF&gMT#c#s&r( zCo#~iDg2ZpdccM;c1R7YNu4i_&t&N&C`=A5OW z^IuajS^`gevj5~y+p|=EORuKgBPtvnIF(j1}m13qK}6^XA!F^V`hP@r5A}zkMhfeUGJySlOBXYRUWu z=9uNX;A*B^>ZkMY)T0J#&{<7LO#N7N^D(dOt@Bsk+OoOatg=Y5I$e%cte0a-Lf{@j zEpoIu4Mw9#!QIWon_)jX#I^?6^obFcH4e8*cIw6PO658vRP<2ZCdo&#w5OBMw^sjs zx|DFXWSZS*V)_eFS3z8Is>arGkkGX^DYeR?Zi!p6e;~g=3<xJ=NV&`?zq{3 z`%$u&TfV=!b-Jv&W79m_)gft~vvyC+u5lBuf4XM*vvX}z3DMio$GGI@DOC66rE&_Q ze@VmoY-hmiNN7W&|5UUIzKTFhAJN$i3ZKHT0*i8+^?TKcB=iVAfUD$9YGai z4iz=8Z_tvTv@g7(a*~p&uLJ?z3UXUL@ml;JE76-t3S^^}xLz=nlyBB6UU6wl9Im_M z@OF}jSS-*E*TqXptgh(}sT%#5%Js}J(@PC10CP`{&kv=W#AWRVzNutAGMajbWxtmE zn84(Jb?sE135xRy^M#2IlPuTFt2SY-$?VoR4*i`fc1=`ko&+SzKFmthY|`L-bm@=xbm?5mcg1RrY6t=3f2KeEJ1)Eci&a=(#sHMwh5m-~>4(MUnnhO_yz zK1f>=IUVL0jwq^Lp{9TIb9=6Rj*BJb0zkig&wOxQ^r7d+pHtOdm45ats-^kArQVy0 zef`(%o{5V1NYJFA!XcBspmF4xl0=ZE*_O+{M_7v0VuyAYV#s%AO(6 z7i&7n|9Tv}QTnS9znJvrS z{hXH6zRuz3?<;m3&-`WLGJjdo<~lc>fYcLj9#8IczpOW7cg14c(nETVt1_Mv)GuG` zus@$_wDrvL?6MP2A|8p=deaAt*O(tI4>=d9Wn#5fZ16aL{gMnBTfgldqb;|x2*B*^ zSeN&#aO{D%Mtj@t>8cwC-52-E4vGu9@H*K0oV@O#w*72 zU9G#KtJ!&D2^*G#=}q1mbAnwc#I((FI-ygJz3!Bl60G=MJAp;Zi*5D?e0%>DQkrRe z^SW}kv3`_w?4y#;V?DjoJ!M{iNxCb!fiel+S6t4q^Am^G!}|zECc3rgmtb^B$)p-M zKbp(ddo0|#q_m>y6Z-Cpz;x$=ljiIekQB%rqeVeaoSaQqS-H3}-PS(yiSUQdjeja% zYa*}4p`Q2L$;K*aeA|DCOW+Q3)qa50Z1G{8bJbbB*XgP!zW?hJpiauc>8+=o`ATdG zytc9W1iN2{ovmK656D>9zk+)0GdxE!t;^?!RW;(u(@vVO?WcbI*qWcRjITB`pU5~&-Ibmx#vdtr1Q7_ zYs{^Pf9aHRkhS&nN#hZC1>>lDWW_gtWF0-wX9Flz>4;qzm1$DBVTM47+-ib%zpCx9 zCIj&GFz?Tk@z1pSSBm|E4`tr*z5h7PXhpa7611)=cz#}F`d+xn{vd4831{rj?>g6A zoA_+u##;9sOp~IBQ8W1Zfftk<=37c+)m|L&)&5%F#Cr=xMdavqf`@l_RpJHD%sX?LM6ZL!(kJ_3Fo|2rOsXQOFv z+r*Xd)qT88R?UAOf9vFFZF*77C_od_5+6u$gzV%Uf{)?Hqtx9@;U1uH`!flyLw|~} z7gE=oys4pk&&UR%eJ7r2)MX!aELjIPnwPxE5E`C_qQ^uDZiMO>aE+67iV%OpqBliw zG)nwtc}^DRhh&|8mycRc&cYU#5&AX;q?)^_G!yrn8lC`(dI}gFNvwH4G7C<9!v4E1 z6VYq5n7YUYYq4T zx`aR`szwwn5_WcmRzsj(31|@N6QZYy_AM_(@P2|h5=yOoFtZ?FrLm%O6sULxD+rHy zAQXt>WQ4jNYq@+%AGx?V9yuzM``9=061fU`u|zPO5$L0uiom?shqvWAP9}q>+>u;_ ztX%iV%M_i1ZNen-k8xxS6gavb*Q#@FK6%4Iv$s%n9Z7u;WOKmf#m=QwV8hMVMmfYo zbh{qPp@y1&SC!Y-?Oq3)4I%k!WiIgj+#?2kUoYnKPkX!`%F3>3g@85<`iIwV&8dHi zz-8qL32-%>yrU8FEVcO4SP`cSY0rj?bHucX5 zLT&ukdQe0xpYN5(hNd;QEV7J&+Tfe<$U#Y{kg8D|mjwq`#VmF|g25}~J<02Jv8{V% zN3c8}TiitUu8j*%%9ph}A?}ppXo;zR8166cKI?F6IDBM(YM!RaoExM%_h84n`M-M( zdwW6ssXfDoJzg^d!@OJ*IxRrPJ2wu(HZcxP<(lObEqJmeUd`H15i3I*o+4^Da-X^jiG( zynoRVd}=2+_srG2S}I^aXZt1aP=MZQ%G%*HRG_r!<=cB_O+9S5V((yU(YmtBBi9_# zDb@{PyMK)+-mum@*DH5cWmjlBr;kI4%W9Mot$+^VW3m>ce)vwIt_8@R2zWZY8U=|b zNr#`+_ggb2F4dNn57RZebwS(Ya4WP;@o=nk5NYgsTjk<4E5&8Hg;72Vs>>=&$AEpu z!2Fis6?!KB^IF=#6O6ddAKliLYKjXmX#ra_;!YJHS3xfjW})? z957GiW#zD%-@T0PG=?MObrNFNzP6FBu6xa;z8bu^)=`;+778G)bqq@?_F93uf4g14 zk^0zU^O|BV@}(jWce4xQ)od?m1|uG{?}T(sT*6^^e69o{C7Bgp=I7+^=4XX_vIy?=qP-c;GAT}Ld^ugjg`}<*o87_5l15@n(Cpd`bdqdgHJ|r(qPUh0 zGK;^iVpn{8kybV_#|I^P*0jo53h4Bhd7 zbr!S6{2$=nv#;}`J97=G*neTr!TH*)4L_)uML_D4*}pqi?fig`f*LnPrW$o677hcQ z>OVN||1FPl-zC)xs77=I8ZJ-&eYTj6)X*-3o(1Jww0OrZ80 z`3HJ7e;Ok@Hd`2-X|jD({iDroWUGj+CMdq%bG)kPe<7bA*ncOK;#hen+VG>E&X&g! zcH0WMt2?&>Rb_I&>E84;`-|ph*IEK$s>*uw-_lMRu@~Jw$}^+!ydjpbyDgTXPR1F+ z?s+n+@}l=p4qXNR#lO2KJ!XyVE32Q+XJMsH$_EBBcH-m?ty=W=Npp|C2ire>Z?Xof z{T0(X^Ry2sS{C@@j+|&h6$kNSEFXXHhrkJ87K}^j&o;PF4t8Uyef7iz$KR9Zkvd6< z{*||*i=i^$^mSG2V9pC8_^+y5ys-xJ_+5h5=kb)Dcyk-^)+VW;1R*5?Nv1(2>;zY8 zObgM4)PJ|(LkMwlmkkJ@TTWNcTqW01ggAW&b`a_-sAZoii=~#yyT|{BNbCP1>?`st zKRRjkb*#uTgPNdC*WcGxb8Y(ETW|5M55Hxj5-&tpd~?}*$%56?_AW(wst6st6i@x< z{QMX}h>*-O*{#aEu*uv$OBPg8%%tE9p#G9S#+}rxmVb(fmYs9M+R|)AP}-Xjv515( ziEDcRo9bZ|dT3aDX@xHtMb1FT8c;KqLtNW_pYbQms0O5R& zCFAPJbli+w`Itvm8Z;T&_-gmjX^B(+qgzPPH!R|Hs}}<7N%7|Z$zpKilvbA@Q-G8qf~>v7Ya*4hOlEbc`kINM9KYeKEj2boN~szg(@mADt|Gb#9G7(kG_9W9#oTx12o^a^`} zkv;;sS<*hRAasv7YBumYMEN~CBwfW}d%)fo`qj4YdNzvax46gBU|C=0Pfvr5i3)!?VmlXxm6V!T8sa%d%gxL%1Ek<3nC{QuPp-wv^!X5|; zip8>++-@`p+E7b+H0vv(_g&z%cn-4|iViVMz9kHoo!iqZWrBf&mNP(Y(Keu{^T4PL zX4cLd&QHM>ciJ=if`+HycMlmNSdQqcMqSe|HLIl0__@z|0*+Tu_9Mgmt(ez;02n@i z)M)39#l+rre%%~E-Soh7U3Q}{DGaM6in^o=8}ymdKOT{kVRQ(%T{ zAx@@uet!~Ud8xxr}OZ_o0G?`%k_qi zK@HEYwdfdVGi12i{Je@v!LczIxx>u9a}u7&;-@?DbS==%koG3QNv&Z zBBOyU@j*1fzDLgRfTOmFeVW>#f04G{=ve7~;hhpgZ)0>$N4baAYU#kH21uuc$3Rsn zL<`f0J3Sx{BOqY*PwKQ>z~^o9+fIr^;P)~ij=pxsTtG|B%jRMFd*5b%rR-&nLE0R6 z7Y3yO4>#k9gq;xMq6a^+!lw#~?M@R{NLj&BVmiHRQN$dc64lJx$D+t+UJWpsr&XIq zkvy}N+iJD!FAwDv+Z)q97UhC38d|Oraq?Fmv~FU zfdYO_3mDy1(ZDO(g?{~`6rZFkhzYnFx_T@ObawbT+AC2%gW$(1$Ot65j)-F=?XmaT z+C*Y7jyjU4v71(gt?ngeIO04nXxFpmtU%wwOda!4PSWJu2@)FzZTMp)`(1ps*$_?xG~>N&%vFlAx_iVTWU z^c_oF1-|tD8@1!>{v-?J;LMvxYh{hjfuZucz*#nBW5JR8-UDr}hgEgtdU{`+Ha+F% zWXc2YL-H236uM9eDIXDP^y{k{sT<@-z;~WDey+8?Tdb?$WoyAlIm;e#c8oZkQ3VE?_SHG{%12piO zSWMO>`4AiPK$gU@8MGWHV&(Y$Cq`W_=MrQ1&znPyy$C=7i`gSan@G+JxKI*c&8}6j zZg|0QMdBnXvr!67UG`YG{nOrGWrgjUZ$ykY{E@*T<$#U!X&MF|B&aDQzD^X^Zd$$U zvB}cDRewP0GNG>%&^0n}_FJ_gqfcwqUbAG?hZepMJ~0&)3F%teXjUDDS=ze(|M6!l zEEVeu@s}wWOq)Jiy6>a;Xu+#8bb)#wC@foHXO~;z(o-IYGW&#t>MK>E>Kfq&39YAg zzniUaH2hp$D8)K>wDA`Bi$;Ir08}o`H*qe1{7S${iY28vWQl024r)xO0}}}_CSE&j z`HfJgp^HPYW}jeE0gxi5dSETliU1iZgImzZo8NNa3tiMZyJe59;&nsk*i-v#|FW*{ zm+}&7YVR&nP%yo@4LUGNsQ%({mnFicrnZ)~j6o0x3~`LU6rS77@kaBTFTQN=`4cP}9!aHymA_G>H3bkXPgh zvr=^0^6RCx@85&Tkhny=1WtO7WhUc@H9c^eR1y2zDes`2!64BWEY6XLf|r8MtL;A_ z_!)o$KtTh4N@H)Xj@D+-Zx(F@E0YR zYJAr8&MSwXVSU-hZ7o$1!j z(j(;ZB&%P)vIMDWa%rirK9DUMTldxb_^OLs!}i!qPO7YM8@s9BUhl{!qN5V(yo|w6 z^_INFsWxfn7u}}_UPb{nrL0LgnLu{9`6;)ire;-SD0?qtQb4bz+cE4WN~nSRSFe%_ za~_Z<-0XbxthpBK1F8w-{pH`Wim`ShU}k2sANWeoj8>cJ%=xSMG#^cA%bx+ z;2<5wlrY;XstQvK2(LAEQ%F_al&IkRMsD4gp8msQ%>SHd_fJWb Date: Mon, 29 Aug 2022 16:00:49 +0100 Subject: [PATCH 268/285] Small change --- docs/INTEGRATION_TESTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/INTEGRATION_TESTING.md b/docs/INTEGRATION_TESTING.md index 34771dd8..c3251dc4 100644 --- a/docs/INTEGRATION_TESTING.md +++ b/docs/INTEGRATION_TESTING.md @@ -9,7 +9,7 @@ Integration testing requires: ### Active directory 1. 2 Active Directories and 1 B2C Active Directory -2. Deploy a **B2C** LTI Tool using one of the AD and the B2C a: [Deployment Guide](./docs/DEPLOYMENT_GUIDE.md) +2. Deploy a **B2C** LTI Tool using one of the AD and the B2C AAD: [Deployment Guide](./docs/DEPLOYMENT_GUIDE.md) 3. For each AD tenant, create 2 members: * In our primary AD that you used for delpoyment, create the 2 following members: * Test Student. From c7e85bde2980051c4aa47cc97aa9e027fb4777b7 Mon Sep 17 00:00:00 2001 From: DuyNguyen19993010 Date: Mon, 29 Aug 2022 16:04:09 +0100 Subject: [PATCH 269/285] Small changes --- docs/INTEGRATION_TESTING.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/INTEGRATION_TESTING.md b/docs/INTEGRATION_TESTING.md index c3251dc4..06aa183d 100644 --- a/docs/INTEGRATION_TESTING.md +++ b/docs/INTEGRATION_TESTING.md @@ -40,8 +40,7 @@ Integration testing requires: 6. For each of the **2 Teacher accounts**, sign in, choose the course you have just been added to: * Skip the tutorial popup ( **important** ) * Turn on **Edit Mode** on the top right corner - * Add a new external tool (Don't need add the tool, only need to click on the add assignment button) - [Insert images add tool button] + * Add a new external tool ( **important** ) * Step 1: Toggle on edit mode ![Create_Step_1](../images/Selenium_Test/Create_step_1.png) * Step 2: Add a resource From c134785d9fbbb48fff34d01263028248f8fcf92d Mon Sep 17 00:00:00 2001 From: DuyNguyen19993010 Date: Mon, 29 Aug 2022 16:04:43 +0100 Subject: [PATCH 270/285] Small changes --- docs/INTEGRATION_TESTING.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/docs/INTEGRATION_TESTING.md b/docs/INTEGRATION_TESTING.md index 06aa183d..a270f849 100644 --- a/docs/INTEGRATION_TESTING.md +++ b/docs/INTEGRATION_TESTING.md @@ -34,10 +34,6 @@ Integration testing requires: * External Test Student: student * External Test Teacher: lecturer 5. For each of the **2 Teacher accounts**, sign in, choose the course you have just been added to: - * Skip the tutorial popup - * Choose add a new external tool (Don't need add the tool, only need to click on the add assignment button) - * Skip all the tutorial popup if there is one -6. For each of the **2 Teacher accounts**, sign in, choose the course you have just been added to: * Skip the tutorial popup ( **important** ) * Turn on **Edit Mode** on the top right corner * Add a new external tool ( **important** ) @@ -55,7 +51,7 @@ Integration testing requires: ![Create_Step_6](../images/Selenium_Test/Create_step_6.png) * Skip all the tutorial popup if there is one( **important** ) -7. For each of the **2 Student accounts**, sign in, choose the course you created, and click on one of the assignment you have just created with the teacher accounts: +6. For each of the **2 Student accounts**, sign in, choose the course you created, and click on one of the assignment you have just created with the teacher accounts: * You will be redirect to the LTI tool page and asked to sign in again * After that you will be presented with the assignment page From 584ac30559c5bcdd9aa9ef5e020b44cd64c715e4 Mon Sep 17 00:00:00 2001 From: DuyNguyen19993010 Date: Mon, 29 Aug 2022 16:08:15 +0100 Subject: [PATCH 271/285] Signin image added --- docs/INTEGRATION_TESTING.md | 3 +-- images/Selenium_Test/Signin_Signup.png | Bin 0 -> 250556 bytes 2 files changed, 1 insertion(+), 2 deletions(-) create mode 100644 images/Selenium_Test/Signin_Signup.png diff --git a/docs/INTEGRATION_TESTING.md b/docs/INTEGRATION_TESTING.md index a270f849..fd7bdaae 100644 --- a/docs/INTEGRATION_TESTING.md +++ b/docs/INTEGRATION_TESTING.md @@ -21,7 +21,7 @@ Integration testing requires: ### Learning Management System 1. A running Moodle LMS instance. Recommended tool: [Bitnami](https://bitnami.com/stack/moodle) 2. Sign in or Sign up the 4 accounts we created in the **Active Directory section** using B2C AAD -**[Insert image of the B2C AAD button here]** +![Signin_Signup](../images/Selenium_Test/Signin_Signup.png) ## Setup @@ -49,7 +49,6 @@ Integration testing requires: ![Create_Step_5](../images/Selenium_Test/Create_step_5.png) * Step 6: Save and you will see your newly created assignment ![Create_Step_6](../images/Selenium_Test/Create_step_6.png) - * Skip all the tutorial popup if there is one( **important** ) 6. For each of the **2 Student accounts**, sign in, choose the course you created, and click on one of the assignment you have just created with the teacher accounts: * You will be redirect to the LTI tool page and asked to sign in again diff --git a/images/Selenium_Test/Signin_Signup.png b/images/Selenium_Test/Signin_Signup.png new file mode 100644 index 0000000000000000000000000000000000000000..d23c14c55e8a486b76dd20880010214cb26a5621 GIT binary patch literal 250556 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 E3omSx^8f$< literal 0 HcmV?d00001 From b2d61f12a3d7cbfe73cefc3837ab4d036a207a87 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Tue, 30 Aug 2022 10:06:07 +0100 Subject: [PATCH 272/285] adding soft delete and purge protection back in --- deployment/azuredeployADtemplate.json | 3 ++- deployment/azuredeployB2CTemplate.json | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/deployment/azuredeployADtemplate.json b/deployment/azuredeployADtemplate.json index a1d4fa8d..d8878534 100644 --- a/deployment/azuredeployADtemplate.json +++ b/deployment/azuredeployADtemplate.json @@ -400,7 +400,8 @@ "enabledForDeployment": "[variables('enabledForDeployment')]", "enabledForDiskEncryption": "[variables('enabledForDiskEncryption')]", "enabledForTemplateDeployment": "[variables('enabledForTemplateDeployment')]", - "enableSoftDelete": false, + "enableSoftDelete": true, + "enablePurgeProtection": true, "tenantId": "[variables('tenantId')]", "accessPolicies": [ { diff --git a/deployment/azuredeployB2CTemplate.json b/deployment/azuredeployB2CTemplate.json index bca7feb7..2186bad7 100644 --- a/deployment/azuredeployB2CTemplate.json +++ b/deployment/azuredeployB2CTemplate.json @@ -429,7 +429,8 @@ "enabledForDeployment": "[variables('enabledForDeployment')]", "enabledForDiskEncryption": "[variables('enabledForDiskEncryption')]", "enabledForTemplateDeployment": "[variables('enabledForTemplateDeployment')]", - "enableSoftDelete": false, + "enableSoftDelete": true, + "enablePurgeProtection": true, "tenantId": "[variables('tenantId')]", "accessPolicies": [ { From f26dd9f10d87d21994abc9f067b889dc9f65898b Mon Sep 17 00:00:00 2001 From: Tianchen Zhang Date: Thu, 1 Sep 2022 05:21:40 +0100 Subject: [PATCH 273/285] doc: secret renew --- docs/B2C_Deployment.md | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/docs/B2C_Deployment.md b/docs/B2C_Deployment.md index 23dc1363..97e362d1 100644 --- a/docs/B2C_Deployment.md +++ b/docs/B2C_Deployment.md @@ -190,3 +190,39 @@ This document will explain the steps that contain user interaction and what is r * After clicking on "Grant Admin Consent" the page should now say all permissions are granted * ![Application permissions page](../images/B2C_Deployment/10tc_FullyGranted.png) * Now simply return to the powershell, wait 10 seconds, and press enter to continue the script + + +## Secret Expiration + +There are three apps created during the deployment process that have client secrets, namely `b2c_AD_app`, `b2c_AD_webapp` and `b2c_AD_PMA`. +When the client secrets expire, new secrets should be created in time and several operations should be taken to ensure the availability of the service. +The detailed steps are as follows: + +### `b2c_AD_app` +1. Switch to the AD tenant in the Azure Portal. +2. Choose All services in the top-left corner of the Azure portal, and then search for and select App registrations. +3. Select `b2c_AD_app`, then select Certificates & secrets, and then select New client secret. +4. Create a new client secret and record its secret value. Notice that one app cannot have more than three secrets, so when necessary the old secrets should be deleted. +5. Switch to the B2C tenant in the Azure Portal. +6. Choose All services in the top-left corner of the Azure portal, and then search for and select Azure AD B2C. +7. Under Policies, select Identity Experience Framework. +8. Select Policy keys and then select `B2C_1A_AADAppSecret`. +9. Select "Add key to container". For "Options", select `Manual`, and insert the value recorded in step 4 for "Secret". Click "Create". + +### `b2c_AD_webapp` +1. Switch to the B2C tenant in the Azure Portal. +2. Choose All services in the top-left corner of the Azure portal, and then search for and select Azure AD B2C. +3. Under "App registrations", select `b2c_AD_webapp`, then select Certificates & secrets, and then select New client secret. +4. Create a new client secret and record its secret value. Notice that one app cannot have more than three secrets, so when necessary the old secrets should be deleted. +5. Switch to the AD tenant in the Azure Portal. +6. Choose All services in the top-left corner of the Azure portal, and then search for and select Function App. +7. Apply the following changes to these function apps: assignments, connect, learncontent, links, platforms and users. + 1. Go to the function app and select "Configuration". + 2. Replace the value for the key `AzureB2C_AUTHENTICATION_SECRET` to the value recorded in setp 4. + 3. Click OK, and then click Save. + +### `b2c_AD_PMA` +1. Switch to the B2C tenant in the Azure Portal. +2. Choose All services in the top-left corner of the Azure portal, and then search for and select Azure AD B2C. +3. Under "App registrations", select `b2c_AD_PMA`, then select Certificates & secrets, and then select New client secret. +4. Create a new client secret and record its secret value. Notice that one app cannot have more than three secrets, so when necessary the old secrets should be deleted. From f1df8c8dec12f9a024e82e5d9d54acda2caec803 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Thu, 1 Sep 2022 12:28:47 +0100 Subject: [PATCH 274/285] Docs updates --- docs/B2C_Deployment.md | 2 +- docs/DEPLOYMENT_GUIDE.md | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/B2C_Deployment.md b/docs/B2C_Deployment.md index 23dc1363..677d2632 100644 --- a/docs/B2C_Deployment.md +++ b/docs/B2C_Deployment.md @@ -6,7 +6,7 @@ This document will explain the steps that contain user interaction and what is r * You should have already created on Azure: * 1x AD tenant - * 1x B2C tenant + * 1x B2C tenant (when creating it on Azure portal, the name given MUST be in **all lower case**) * If not already set up information is available [here](https://docs.microsoft.com/en-us/azure/active-directory-b2c/tutorial-create-tenant) at step 1: "Create an Azure AD B2C Tenant" * **IMPORTANT: In the current version custom domains are NOT supported, i.e. your tenant domain must be in the DEFAULT format of b2cTenantName.onmicrosoft.com** * You should have ready a **list of the tenant id's for the tenants you wish to give access** diff --git a/docs/DEPLOYMENT_GUIDE.md b/docs/DEPLOYMENT_GUIDE.md index 4e05a875..52793d9a 100644 --- a/docs/DEPLOYMENT_GUIDE.md +++ b/docs/DEPLOYMENT_GUIDE.md @@ -15,6 +15,7 @@ To begin, you will need: - [Git](https://git-scm.com/downloads) - An Azure subscription - If you are running this on MacOS you also require an additional dependency of [WSMan]([)](https://www.oasys.net/fragments/powershell-on-macos-wsman/) +- If you are running this with your choice as 'B2C' you will need to create a B2C Tenant to hold the auth resources with its name in **all lower case** **Note:** Please ensure you **reboot your machine** after the installation of the Prerequisities @@ -187,6 +188,6 @@ If your **deployment failed**, click [here](./TROUBLESHOOTING.md) for help. # Next steps -Once the tool has been successfully deployed, the next step is to [configure the tool](./CONFIGURATION_GUIDE.md) on your institution's LMS. +First, if you chose B2C: set up the B2C Tool on your LMS as explained in [here](./DEVTESTENV.md#setting-up-your-test-lms-environment-with-azure-ad-b2c-multitenant-sign-in). -And, if you chose B2C, set up the B2C Tool on your LMS as explained in [here](./DEVTESTENV.md#setting-up-your-test-lms-environment-with-azure-ad-b2c-multitenant-sign-in). \ No newline at end of file +Then, if you chose AD or B2C: once the tool has been successfully deployed, the next step is to [configure the tool](./CONFIGURATION_GUIDE.md) on your institution's LMS. \ No newline at end of file From 901378d9b4fd6d086fec8bb830667e9f7f3fe2ed Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Thu, 1 Sep 2022 12:42:20 +0100 Subject: [PATCH 275/285] Added code to ensure user inputs a tenant in all lower case --- deployment/B2CDeployment.ps1 | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index e12b5345..670ee467 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -70,7 +70,14 @@ try{ } #endregion - $B2cTenantNameFull = Read-Host "Please enter your B2C tenant name (including its extension)" + $B2cTenantNameFull = Read-Host "Please enter your B2C tenant name (including its extension, e.g. 'tenantname.onmicrosoft.com')" + + #forcing the user to use an all lowercase name due to case sensitivity issues in the redirect URL + while($B2cTenantNameFull -cne $B2cTenantNameFull.ToLower()){ + # ... so ask user to input a new b2cTenantName + $B2cTenantNameFull = READ-HOST "The B2C tenant you are using must be named in all lowercase; please create a new b2c tenant in ALL LOWER CASE (e.g. 'tenantname.onmicrosoft.com')" + } + $B2cTenantName = $B2cTenantNameFull.split('.')[0] #region "B2C STEP 1: Create Active Directory application" From 3e30ddcb4aaf9c380957e5ba98badcd766a3786a Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Thu, 1 Sep 2022 12:45:43 +0100 Subject: [PATCH 276/285] Updated to xplain why it must be all lower case --- deployment/B2CDeployment.ps1 | 2 +- docs/B2C_Deployment.md | 2 +- docs/DEPLOYMENT_GUIDE.md | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 670ee467..579a56a3 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -72,7 +72,7 @@ try{ $B2cTenantNameFull = Read-Host "Please enter your B2C tenant name (including its extension, e.g. 'tenantname.onmicrosoft.com')" - #forcing the user to use an all lowercase name due to case sensitivity issues in the redirect URL + #forcing the user to use an all lowercase name due to case sensitivity issues (the Redirect URL for Moodle must be all lower case) while($B2cTenantNameFull -cne $B2cTenantNameFull.ToLower()){ # ... so ask user to input a new b2cTenantName $B2cTenantNameFull = READ-HOST "The B2C tenant you are using must be named in all lowercase; please create a new b2c tenant in ALL LOWER CASE (e.g. 'tenantname.onmicrosoft.com')" diff --git a/docs/B2C_Deployment.md b/docs/B2C_Deployment.md index 677d2632..7e331666 100644 --- a/docs/B2C_Deployment.md +++ b/docs/B2C_Deployment.md @@ -6,7 +6,7 @@ This document will explain the steps that contain user interaction and what is r * You should have already created on Azure: * 1x AD tenant - * 1x B2C tenant (when creating it on Azure portal, the name given MUST be in **all lower case**) + * 1x B2C tenant (when creating it on Azure portal, the name given MUST be in **all lower case**. This is because the redirect URL for Moodle that is manually inputted later must be in all lower case, and it includes the b2c tenant name.) * If not already set up information is available [here](https://docs.microsoft.com/en-us/azure/active-directory-b2c/tutorial-create-tenant) at step 1: "Create an Azure AD B2C Tenant" * **IMPORTANT: In the current version custom domains are NOT supported, i.e. your tenant domain must be in the DEFAULT format of b2cTenantName.onmicrosoft.com** * You should have ready a **list of the tenant id's for the tenants you wish to give access** diff --git a/docs/DEPLOYMENT_GUIDE.md b/docs/DEPLOYMENT_GUIDE.md index 52793d9a..a6f1e154 100644 --- a/docs/DEPLOYMENT_GUIDE.md +++ b/docs/DEPLOYMENT_GUIDE.md @@ -14,8 +14,8 @@ To begin, you will need: - [Powershell](https://docs.microsoft.com/powershell/scripting/install/installing-powershell?view=powershell-7?WT.mc_id=learnlti-github-cxa) - [Git](https://git-scm.com/downloads) - An Azure subscription -- If you are running this on MacOS you also require an additional dependency of [WSMan]([)](https://www.oasys.net/fragments/powershell-on-macos-wsman/) -- If you are running this with your choice as 'B2C' you will need to create a B2C Tenant to hold the auth resources with its name in **all lower case** +- If you are running this with your choice as 'B2C' you will need to create a [B2C Tenant](https://docs.microsoft.com/en-us/azure/active-directory-b2c/tutorial-create-tenant) to hold the auth resources with its name in **all lower case**. This is because the redirect URL for Moodle that is manually inputted later must be in all lower case, and it includes the b2c tenant name. +- If you are running this on MacOS you also require an additional dependency of [WSMan](https://www.oasys.net/fragments/powershell-on-macos-wsman/) **Note:** Please ensure you **reboot your machine** after the installation of the Prerequisities From 2b9585a51d6c579453945cb590089faff3580c16 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Thu, 1 Sep 2022 12:47:30 +0100 Subject: [PATCH 277/285] Creating branch for the b2cLowerCase changes --- deployment/B2CDeployment.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 579a56a3..a9de069b 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -70,7 +70,7 @@ try{ } #endregion - $B2cTenantNameFull = Read-Host "Please enter your B2C tenant name (including its extension, e.g. 'tenantname.onmicrosoft.com')" + $B2cTenantNameFull = Read-Host "Please enter your B2C tenant name (including its extension, e.g. 'tenantname.onmicrosoft.com')" #forcing the user to use an all lowercase name due to case sensitivity issues (the Redirect URL for Moodle must be all lower case) while($B2cTenantNameFull -cne $B2cTenantNameFull.ToLower()){ From e25b165c4922425ba80394e58caa095a5d1dccbc Mon Sep 17 00:00:00 2001 From: Tianchen Zhang Date: Fri, 2 Sep 2022 12:19:12 +0100 Subject: [PATCH 278/285] fix: change exit to throw exceptions --- deployment/Deploy.ps1 | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 1fc0ccb0..a9cf9530 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -85,8 +85,7 @@ process { # Checking Azure CLI is installed $azureVersion = (az version 2>&1 | ConvertFrom-Json)."azure-cli" if ($azureVersion -eq $null){ - Write-Host "Azure CLI is not installed and please go to this link to install. (https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest%3FWT.mc_id%3Dlearnlti-github-cxa)" - exit + throw "Azure CLI is not installed and please go to this link to install. (https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest%3FWT.mc_id%3Dlearnlti-github-cxa)" } if ($azureVersion -lt 2.37){ throw "Please upgrade to the minimum supported version of cli (2.37)" @@ -95,25 +94,22 @@ process { # Checking .Net core 3.1 Framework is installed $NetFrCheck= (dotnet --version) if( $NetFrCheck -eq $null){ - Write-Host ".Net Framework is not installed and please go to this link to install '.Net core 3.1 version'. (https://dotnet.microsoft.com/en-us/download/dotnet/3.1?WT.mc_id=learnlti-github-cxa)" - exit + throw ".Net Framework is not installed and please go to this link to install '.Net core 3.1 version'. (https://dotnet.microsoft.com/en-us/download/dotnet/3.1?WT.mc_id=learnlti-github-cxa)" } else { [int]$NetFrCheck1= (dotnet --version).Split(".")[0] [int]$NetFrCheck2= (dotnet --version).Split(".")[1] - if( $NetFrCheck1 -eq 3 && $NetFrCheck2 -eq 1){ + if( $NetFrCheck1 -eq 3 -and $NetFrCheck2 -eq 1){ Write-Host ".Net Framework $NetFrCheck is installed." } else { - Write-Host "Correct .Net Framework is not installed and your version is $NetFrCheck. Please go to this link to install '.Net core 3.1 version'. (https://dotnet.microsoft.com/en-us/download/dotnet/3.1?WT.mc_id=learnlti-github-cxa)" - exit + throw "Correct .Net Framework is not installed and your version is $NetFrCheck. Please go to this link to install '.Net core 3.1 version'. (https://dotnet.microsoft.com/en-us/download/dotnet/3.1?WT.mc_id=learnlti-github-cxa)" } } # Checking Node.js is installed $NodejsCheck= (node -v) if( $NodejsCheck -eq $null){ - Write-Host "Node.js is not installed and please go to this link to install. (https://nodejs.org/en/download/)" - exit + throw "Node.js is not installed and please go to this link to install. (https://nodejs.org/en/download/)" } else { Write-Host "Node.js $NodejsCheck is installed." @@ -121,8 +117,7 @@ process { # Checking Git is installed $GitCheck= (git --version) if( $GitCheck -eq $null){ - Write-Host "Git is not installed and please go to this link to install. (https://git-scm.com/downloads)" - exit + throw "Git is not installed and please go to this link to install. (https://git-scm.com/downloads)" } else { Write-Host "$GitCheck is installed." From 2514c8de98ca193e7e6b86634707f956fb35f3e7 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Mon, 5 Sep 2022 12:18:32 +0100 Subject: [PATCH 279/285] change to deployment --- deployment/Deploy.ps1 | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index a9cf9530..8b6b0729 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -92,19 +92,9 @@ process { } # Checking .Net core 3.1 Framework is installed - $NetFrCheck= (dotnet --version) + $NetFrCheck= (dotnet --list-sdks | Select-String "3.1") if( $NetFrCheck -eq $null){ - throw ".Net Framework is not installed and please go to this link to install '.Net core 3.1 version'. (https://dotnet.microsoft.com/en-us/download/dotnet/3.1?WT.mc_id=learnlti-github-cxa)" - } - else { - [int]$NetFrCheck1= (dotnet --version).Split(".")[0] - [int]$NetFrCheck2= (dotnet --version).Split(".")[1] - if( $NetFrCheck1 -eq 3 -and $NetFrCheck2 -eq 1){ - Write-Host ".Net Framework $NetFrCheck is installed." - } - else { - throw "Correct .Net Framework is not installed and your version is $NetFrCheck. Please go to this link to install '.Net core 3.1 version'. (https://dotnet.microsoft.com/en-us/download/dotnet/3.1?WT.mc_id=learnlti-github-cxa)" - } + throw "Needed .Net Framework is not installed and please go to this link to install '.Net core 3.1 version'. (https://dotnet.microsoft.com/en-us/download/dotnet/3.1?WT.mc_id=learnlti-github-cxa)" } # Checking Node.js is installed $NodejsCheck= (node -v) From 1ff641991e22e7cded2e727acdaa30ea47477010 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Mon, 5 Sep 2022 12:56:15 +0100 Subject: [PATCH 280/285] basic developer information --- docs/DOCS_FOR_DEVELOPERS.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/docs/DOCS_FOR_DEVELOPERS.md b/docs/DOCS_FOR_DEVELOPERS.md index b6a93ae4..c6308894 100644 --- a/docs/DOCS_FOR_DEVELOPERS.md +++ b/docs/DOCS_FOR_DEVELOPERS.md @@ -27,6 +27,7 @@ If you only intended to use the program and not edit its internal code, you are * Bearer tokens are used to authenticate users. These tokens are issued by the Azure AD B2C Tenant which retrieves users' information from different identity providers (e.g., the AD tenant of a University). These tokens are signed by the B2C tenant but are unencrypted, therefore their integrity is checked to ensure they have not been forged nor tampered with; and their audience, lifetime, issuer and nonce claims are checked and validated. * To validate the token signature and claims the LTI backend users the Configuration Manager C# libraries to retrieve information about the AD and B2C tenants at runtime. +* Most of the token validation code is within "backend\Utils\Edna.Utils.Http\Edna.Utils.Http\HttpHeadersExtensions.cs" @@ -34,6 +35,7 @@ If you only intended to use the program and not edit its internal code, you are * React framework is used to dynamically render and update the pages in the LTI web applications. * When an assignment link is clicked the LTI tool will authenticate the user against B2C AAD befroe allowing access to the assignment. the authentication process will acquire an access token for the user with their credentials and use that to allow access to the assignment. +* You can run the client side locally by going into the "client" directory and running "npm run start". You must edit the ".env.development" file within the client directory to point towards the authentication resources desired. This will let you confirm that the initial login and retrieval of a token is successful. However, you cannot call any API functions by running locally. ### Deploy scripts' @@ -47,13 +49,13 @@ If you only intended to use the program and not edit its internal code, you are * The B2C Deploy script works similarly using the Azure CLI to pprompt the user to login when switching Tenants (from AD or B2C) then sets up the additional components required solely for B2C deploy * The B2C Deploy script, however, uses HTTP requests predominantly for the creation and configuration of the apps due to the ease of making these work for multiple OS' +#### Limited deploy scripts +* The "limited-install-deploy" script will redeploy on top of an existing cloud deployment. You should use it when attempting to check a change to the backend C# code for a function app. You must change the ResourceName and AppName at the top of the script. Additionally, you must have the AzureDeploy.json that was used in the deployment you are attempting to overwrite. +* The "limited-install-client" script will let you redeploy the client for an existing cloud deployment. You should use this when testing changes to the React.js client after you have tested your changes locally. You must edit the "StaticWebsiteStorageAccount" parameter at the bottom of the script. It should look like something like "learnclient75ykpx5cf"". - - -## Authentication Code - - -## Overall architecture of the LTI application +### Logging and debugging of the C# backend +* You may add logging to the c# backend through calls to the logging framework like so "_logger.LogError("Could not get user email.");" +* After deploying your changes, you can trigger the corresponding function calls and then look at the "Application Insights" resource for the functionality being tested. It will look something like this: "platforms-hdpcpw5am" and can be found by looking into the resources of your Resource Group. From there, go into the transaction search to look for recently logged failures and transactions. From b68a3d50e4e42e0cf72b2c3242a8f1b96877a48a Mon Sep 17 00:00:00 2001 From: danielmusselwhite <56388919+danielmusselwhite@users.noreply.github.com> Date: Mon, 5 Sep 2022 14:16:09 +0100 Subject: [PATCH 281/285] Updates images to the newer versions --- images/Developer/B2C_Architecture.png | Bin 269609 -> 529670 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/images/Developer/B2C_Architecture.png b/images/Developer/B2C_Architecture.png index a1bab71e86a66fc5c83045f764b06851ed923064..57a8a1c8a1d2d81e546eedeeb72ca65807fc2431 100644 GIT binary patch literal 529670 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

    e286YcmyiH0GzSitQPG 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%0Dd*3Q8;1m2q!A_^=EHEN7EH3QgO2laG;)r( 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

    (3f*b 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

    D4(WZnq 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

      9weeY?t5*; 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 NeO=?dkF;$r{1+Q(mxTZT literal 269609 zcmcG0^;gvG7cD8>-3%QP(%mH`EiE7*9fEXsNQ!_oNS8E7hX~T$EnU(Q1KbDS@4D;$ z19vT0vqpcI`8>}#`<%1S-bAXY%449CqQbzyV7ye2(SU(LCPmfyP#BjBsF9jCh=Si_!GPY3%utvIEbOe6yFUi zGlkvR-?aOzw0ep^T>l>W!u@V2^>q668vkub^UI{Y6gMZG#*dNBBx zTt-FX#2*A2NX7l2JK6pZJy_z;^=ixqli36X1yzeCInjkwGh&5IgtX4??)|oq_Mg)X z(lbV5=c}=-GBM0d(9oE;Z^{eMOg7+mbE5Zf_TlLSfS1oy#h7IyuqUi2GA20V{hBOX z>!%(xV%(D1qwlnN$CMNiO%1@KY6!cv+=I^#=)61W!FuDl^%;rM119b0>1*9=ek#*0 zBP1d!qKMkv-6j6iUxQcDMQ)2rKp-29iW)9&kNE2S`}ao+^<;c@bKhNdj+a|L zS&<95?ndCy=J2ih{#`E7EE)kv`TJ+g&CQKYV7N~ed+EnKw}1a&)$>`6QTHoYHKaSX-^2 z%vG6=ia$cZrF-2SHNJ7~CAh!66h0r~PUm+tZgem@r0|YB{1&1CQDldsS8*%)u zuVuUny?FYzpIKjTZ*8e(#e39RQb79&C2(Ag!s}>1$OlG9bRgLG{<}4#f48QM6G2Fd zLZZiaNhzt1*pWcM5b=sqrhj^I{!Av(N0dRa5Gy!s+` zK|vBO^gPTB`;)b7KHQV>I~X=OLFf+hUw---OCfAC#T4<=z_E>>$Yn%ur_Oq^5c~*~goK3j zkEcuEZRGc3RUlU{G=Df4WN)#%K3S*oyIxPES8}2m^G?X5Kqc4x@h&iyuuo198^r=# zZ0cKhRtfN;7(4METOFI2E~Z=qA<$<0;8H&n&-_=GsQ318`ro~xY$@u?<7F~0tY&11 zaXoFSm@>PuoG!h0nIERLUoX3_`f{|MbT>KwZofNj!64()MbhXFUN+?rpv?DIP)FFM z{(MHKm7^GwGlh-3R%9h{qb+noi%G~FztID~mMefjm_Rl^KW{rz{)Nk8VDgo??=Sik z*W)EYF)?FigIx&;Ke(EcBu&-5=`y0t7cyL`{EOLR9`@gGCx8At)Ua3em(`L33qf2^$frVv&zNyb9# z&HYH@KmV4Ag+;&K2H=nH<%AN)vd{UjQHz`XME*++4P0hv((x#$`UWREJLW>uyU{Ex zvFkN(YdI{mC|^v7nk(;o#B2*+09+V)5kx@U!>LTa6Hha+^3tK{ z9Gc*o7br4?=1P&(($A8Et`Pg*#*|?G{-X)Qfb3zsJi}rqTn-n-IT>9y5@fen<7QQWES&%~L|XBdb_6{{rU`^S{8s+#`&jpO)Wo z75aNP4?pb=Zf>er9X^PTk8g(MW`Fh@mZX5)9H&jNr{j1N6E z1DrE)!d8a{A4Sv~7K-m3Jt3OZ6GZ|t=JhBQG~%)h9lWG)xyM!nBKW#dHAMmVS~dj| z*E1CcJ40WBm%^SOj^)CuaDFZP0{imiOE!as)~#fN_S=0{nOM7D|FZYlzwF&gl4il^ zF6FN(mWke%%u^5Dlt+L{J=o9JSb+Oh^Zjrz6B7}KYcpNSYtk9exa#NK8%3aintI1v zF_20tXQYxcSPyRFFF5YfvPuv+6q{6MRA&avCm%n4bXac2pb~=?W%~tP6|yR&1Vd4u zmzrC%`B_)vZ_oJfJ_RPqzoRrvQi(6Y*=SCE>Gp_+DGBe zW51Au@QhAgU!T;^cBU- zb>y2%Ow&&cDh{ouax!yG&R=H_dKs{x`(ESqKQkp#D5)_ojm?NoiVu*nHj4dBz_%$J z=zgl{g&AhNt0=lBQ-ei3lmRBSei;-7MH% za2e@OpxqhCjK;63fQv>b=pkoI;_E306w!Q*>Nnt~z>E6h+py)`X&)6xg=tv$XFOJ8 zFjC7xcd9-$d z;L0nM0DvYgME&2T!D&*;`J3mW1H9z69BMjlK6rvM5(&I0iHFO*$#(-u%u}=S(sD|Y zT%9a@YvDryia#9ZMa|f7^ei9X`^~Mm4T%a4l8{miEV!UeL1R$-pf?LqGq`Ro095we zmz?EeNO`A}f}Ne6-(@)e{Papp&~Zg1KL;1d2k|ME|AVO;M8(eA?bN>CzXk_`JA+Tk z^lBMM?x|^Mzsko^Qh`Q`${z|Vy}D3@goO(c&)r;I?H|;j7PIdrhiwWfU=M_QO_;`6 zW3pXKTIj9dbd&>M9ohWjTJ{zc_B-2eZ8HT*L4=WKn9U4c|cn^{d9IQd<*gpX%u(#57SN5&F+4;Ae75tlDJ5*E161Rw)_YkS_ zL@Wq(jR|`qSKTu%d7OQ-nCGb}a%?oC&cCLnyGk{Rqv8CSmsO+jW0ibBvF7N2o+T== zmwBSST=B96 zjR+nd-t@a4i;a%rHdDpZWv|QFX+M+pV7u&$Q1IF5rt{f5?Tp#Oo0*x7fB;IMm9I2v zNp|2~5>zV+XqZsxk0Zl%&zZ=c2}g$J2Y>+B_!j`%05oqF`Le zA&ypz1udc7JL5zE(@jHsS?vAbcKZ*(q8_aK@yD03=bo&O8ZG(ama`MzY9_Quf z=NA_Q@$%IMeBKdbqlQ|^k?1c~ zzwMiS7M0t_A5T9scY98vbVPfx<$Tx6E`=$y!F`kLYZ}um%Lg_mO2y)luu#b z-Svc3+f8|PRu*Z}<6YZf?}pQO)x4~&txLZaf?&gAP!{kw$@wlTbJumf{UUqlF&fuT zLXsuCBs(QkVVFK`;fD3wc>N zMI^d(h+^TD`Y77k_=jaLs*REPdfQnrTCB8ryDxb}xg9Ntf}Rwhm(F+&quwPb_ga|$ zFoyiKiSnWyAJ+gDrHBAXKL868CL(H}g#_Kc33yKYF9B_s>){x*gY=y=uM0(b$Z?nW zn&tzvJ4nKEy^zX!sim z$kR2320x|E&}olDqb6fk-|s-vWiT1+?pjUwffMoved+o6dG*ZJ`!4hF=HO|}gC(1m zx98Gsz2sc+rse$499WiAc{Yi4Taa*6)39xyx~X)B<`UDMFxPhsbaYddMt7hCx?g>K zDB8|?Y7$u3|KWNpo_X}2`Pv=OMmj9iF@KpgS?dhU_PrvR-za@oSf0m9j|j_$k~G9H z!08X~fGhP%JQjZ{Q^MB}DwW>le?1byVMOjLT>q zY!d<5PJ)+sI6>WHSESu1x5K+#BI_$uVc0)msoAAuaC@A>(uM%O> zgfBAPSJXLB_1|Tx>nb6IY(bD>^;d15jx`qRzhfmY7Ups>?Qb?@-)5Oa#>I zsjZgr{#k}l3z!n&#>FZ)X)G&*cYDorjTA-UC4x4 z;PC#3Byz{geol0kJQKvHmypgC#Dq{>a?J4CWKzAJw|%kp3w73ZcF&)0H`p)6Qi`Sx zS;X~ejtfZ)W%1yN^Q0bzx^zdHz_733n0oRZ_>R!u-x?QMmsFQfyc=01!uE7RgutpJ z39el>BR+qG;p!tnUr3PY50rs-DvXeBXbv$(f1!gs9RU5Lw~G~enOM&!P^^%`sC(#| zra|`oNJ2;wOXISKB%V^kP=LG={#mR>AvH=k9K^F2J5S*yLyTyrtOf%wrBuLD>g7v4 zr$*_Kt<6nkz*(f(R_09gox%eYS8lFI#{%s(572w`CR9eyaB{{AJxA& ze9)>oJh+4zBeILWO3 zqYHnHVm=nC1?VqX)5`lRp>oc~-v?S^nJBP4=hq697uqDj&ql_-wsTu{Jnufh7bC+r z349ac8jPQF>`v%;&*jM^@h0m_lmxDZO-OXx3VF#odI?M$q=Zx27zdr;rG=G^LWI3$ zawhA*CulUoJK_Rxz*Nv49D`B_0`w&k0|P^Y)wmg$ z7HnrL3j}O>mX;K3wCYR=RYE15|gUU_PfPaY^N8=6pfZg zCsG+-HqcOq_Zp*}`VZ=q*mnAPTCj3|qN= z)yd0Ofzu9ulQREn;&R;e!Dw*ukCko>9a>mNKlP?6T}qY=4kqm~PSns2iQQ|qM2-g( zbz=M*-HJuo{@}Krw`c=SKT#dDaP6AHD+VwgwgywgFUF*cvb&Ir)O2qmW{J32MprWPR4qq^VXXi;=XT_4>c<-FO?L=FOY(ii zcEVcx5@q<|>mTESSP>?<7fQ>J$rEX}u&vyMOEo$HH98|~+^ORr==tE@yG>SGwE)RR ztpG{>D+15Rm={zo3SdC6Ui}upoZodSdk#Drk9tU9_Pn@sA@i)}c#>x+L<_x9~5gv~j zr#q#ys1(}S{E9#EZVjWd>3WxPAC{vVUVQE;qb`|+?bJNU29;cRU4`s5y8hFRixysN znZDIK)H@|(ik`_e+aLs9?C=+MuN;gpvV`3l3j&1bNQ#57-Ao9r2tuDnPD(l!9G|~# z@=N`NKg7h%j8)uk@8AR<&I)x2R9*3_xwn9pDnxmEvIyu$EOF@Ao@-*_4+b07gYADw z5cscX`}ZEX`JZ$lfjLv?a5*(K6^v4?R|~fLi}M4D4Ck*ucrm?g-T)B4I~+ zP$IgAeMx`LC^)vC%~B|(Jl~(H&Mcf3FZvs^I%Gf{9xC-dyeF%i;!|JD@$_CDkBU;6 zdZX`-1Ggo|T#BahAEaj=sF)?v%)?-t9QS4rO>6HKnj_wH2)1g5j>QPR^;4l_!pY8eJ zeNG^Z#f4Zi$3c!M`mH@#_l?q6;znK5t_+60TJ&t*y2gQ}1m;i1>H7~`I;MwsGt~YewXVHoMDX58#A1l!Cz^gCQyED7#JP1n%}j}@#k6kWzupMwOb zwH(eH9S8>Z|1*Z{sSN^ibzc27o3=y_BaRdzMn`E}=2PnE|4W@4`Qkt6B`IluF>#-_ zNEv7KUjqb&ew`Ig_gI z3D;ZuM~m8GF-y3F6bjdx6lv+ZeVsc|d||&YU0$_=KVxIa!615?yhw#l00N{KeJkP#EPMV93y)o#=%f=Q$Ov|PH|p@IMc>-4^g%Oi9by0i2+ZBj z7V)pjF4M7fY^QCoUu!8}Zlz>;bWSOTVZJN!)U4TAnQUwzoW5B}5I1?5cG$HcdXSPo ztvY2^ep@mt%qJ{zQcw*K`UhWhhRKAF`l z)`KZwqscH8{WByuW!R_~^K9eOZP?3%`yyX);aXjRD4FVhBNtx^m1t{9gAOt+q`Vf9 zvx5t%L;Q97S;|SThmq86k3F_UPa%e`mm zF+(`PWLaM4G=r9c14BdPVm=;#F`RBhxC4U#nE0qga7#8Vq(U!Um_O%YgYhE?{@?fk zeH?R*$cJxqT=g4dYXtM)j~_qi7#Tax23R>Yj@(+b?_lTJbmz%f5A*u1SGzrq;c$5pSfFqlElU6Mt*ufjt+2SJpWK9?(R z8wf=s(jZ4f5y#f6R8B?3X0*&AD|ZpzdjUD?2`rz@>R{(p6fWvp_N(<)xvJ_S!lzR8 z(05Dvnb}}h8`udKhl~(}!weVbi}z z@b9;Y=N;>;Ci8Ig?ewK=>~|%@-%!@0wO5U``9awY&dLZs>9o21uJA_7;XFGEgRW4! zXsL^OG*^0yP+ENl8v+b+fp|qc&}sLckBWD^?Zb?ErWUIpop+%3<&t4tI=-T_y>z6<(e@4nr)E?Fo=kMC&wJBvK5TL>FhEGc~4do5lOtAMecG z>6*V4hm>H5#(oB%p%2TD@o-4QT1_O7vJ55mb?Wk__3mY`w9-!`{9M|r%`f_kIg)u? zUs=k~%*-dTkbc&7>HYncvS+;HcdBjipdbkg*v{a1jUIt}Kk@FTNfvNMnr*Mr6BC1a z!BnIjMgyvaCj0-Y1vg+T04DZ`ghE?3qF86j_2Acw7^-tlv(2j}toX}LQOg>W)(zAl z>J}qNv>lVwQM95TZlhwvTl1$Q14~N_3%afMto38|&&n{z^`k$L{(9Z6VZ(dq*>$YE zE(@(XY5MRD*|Q+oaC4Er`t7+GivDsR6*;rd6gN`_JEY@|y#eL)?r7TP!(`o^_?K=Lh*EPaJ^z&4#B#@%y=6vnZzqL$+XA@qS=-%krPeSkB$mEJ#l6#xlDEw^)fn}p z_D&d|5+`h455^0LHHW!IUe@h?6i_MqoYw3*&H?ENbQ%0SkSvJn)L15VUPHa~`*cj- z%S;My$6=}I^l1T*!6(k~rS4>OLA?Ecel4Fo3SVqq2g%f5GTET=yYKQfA0D zI{TuG$7F|2z)Om(Ynx1t;uhDN&z@h@JZ`6EM`tEf?Prd-4uwpRm+4>6!<`-ABZ}Q< ze9hRNI?8hq+5J@12PINNP-xXtuWeO>Rd2?Oz96RO=YN90!-;}uy|p?3aNsdq0Y``5 zr+@LZ|Dp|hYOl003+9oz|NRw%=8JNmCHzy1SUzMZ1l2^*FCS$ErSp;BKEP+?lN8cQj9⋙1-NfO3h+XZ1q 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

      KE_%Zd>Gj~vmDn}$H^5y1*yYtPMpIPb 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

      jb+-SPE__#e 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 HCPDuPCBM3g literal 47356 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 From e4c07a2c17b0db77f529ef2c09eac6ae10beef0e Mon Sep 17 00:00:00 2001 From: danielmusselwhite <56388919+danielmusselwhite@users.noreply.github.com> Date: Mon, 5 Sep 2022 14:22:21 +0100 Subject: [PATCH 283/285] Update DOCS_FOR_DEVELOPERS.md --- docs/DOCS_FOR_DEVELOPERS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/DOCS_FOR_DEVELOPERS.md b/docs/DOCS_FOR_DEVELOPERS.md index c6308894..cabb1ce2 100644 --- a/docs/DOCS_FOR_DEVELOPERS.md +++ b/docs/DOCS_FOR_DEVELOPERS.md @@ -10,7 +10,7 @@ If you only intended to use the program and not edit its internal code, you are | AD Architecture (Legacy) | B2C Architecture (Recommended)| | - | - | -| | | +| | | From 6c32395b34de74ffb683d12e960c681ebd1e240a Mon Sep 17 00:00:00 2001 From: danielmusselwhite <56388919+danielmusselwhite@users.noreply.github.com> Date: Mon, 5 Sep 2022 14:22:37 +0100 Subject: [PATCH 284/285] Update DOCS_FOR_DEVELOPERS.md --- docs/DOCS_FOR_DEVELOPERS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/DOCS_FOR_DEVELOPERS.md b/docs/DOCS_FOR_DEVELOPERS.md index cabb1ce2..f322f568 100644 --- a/docs/DOCS_FOR_DEVELOPERS.md +++ b/docs/DOCS_FOR_DEVELOPERS.md @@ -10,7 +10,7 @@ If you only intended to use the program and not edit its internal code, you are | AD Architecture (Legacy) | B2C Architecture (Recommended)| | - | - | -| | | +| | | From 0dd1baabee6e416fc8ba1d043ba28ee25854c86f Mon Sep 17 00:00:00 2001 From: danielmusselwhite <56388919+danielmusselwhite@users.noreply.github.com> Date: Mon, 5 Sep 2022 14:22:58 +0100 Subject: [PATCH 285/285] Update DOCS_FOR_DEVELOPERS.md --- docs/DOCS_FOR_DEVELOPERS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/DOCS_FOR_DEVELOPERS.md b/docs/DOCS_FOR_DEVELOPERS.md index f322f568..c6308894 100644 --- a/docs/DOCS_FOR_DEVELOPERS.md +++ b/docs/DOCS_FOR_DEVELOPERS.md @@ -10,7 +10,7 @@ If you only intended to use the program and not edit its internal code, you are | AD Architecture (Legacy) | B2C Architecture (Recommended)| | - | - | -| | | +| | |

      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 z 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 Date: Mon, 5 Sep 2022 14:21:24 +0100 Subject: [PATCH 282/285] Updated arch images --- images/Developer/AD_Architecture.png | Bin 47356 -> 118072 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/images/Developer/AD_Architecture.png b/images/Developer/AD_Architecture.png index db52ea5069081d6884d81d624909b5de383c30e5..1294da67d7123410b6df0e3268b72df1ac1eabd2 100644 GIT binary patch literal 118072 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

  • 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 literal 0 HcmV?d00001 diff --git a/images/Selenium_Test/Create_step_5.png b/images/Selenium_Test/Create_step_5.png new file mode 100644 index 0000000000000000000000000000000000000000..ce59f8780e096af37b24d0b3b3b41e38a969b270 GIT binary patch literal 81954 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

    O4r?b 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¥_>`uHk>w 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໹t6h#v8CH#bj@Bjx#EZZEd2S|iovI|Du6+H#>6(rU?03xj#gLXm z%yZh8!%S0s-EDi3#$C3qXLL|>#`Nw6)n87jS4f0C?rJLb4rEE1bqKn2L$3!KzL1V? zDE8*MU(TgLOf0&uzV`F+p(jsQsar`ux1o-?FIJ7CuQG5e>Kp;N+;10b-U7MkHWOI0 z{dDsYS(v+fQJl7)>tdkP`cs&F;ey;0YCXS=hU?->F-c`6oYb$c3%w9iqGoMODwhMR z?JoILg!9`v>b48W@gPK#SVsH~Sjaq%UvV(_|Ac&kB?a)3Ib)MRsuyqHM?R3#(mzsg zBFQX`Uc!l7vS;ZrixaiihG_PTgPTgeQem6+xZ*iK))33!XNvQD;i8(+U1d5%1XFmo zCi8Li@WDAZz-jhi*0O6m{K2g(n;>SPk@GH{YQN;N28-@wCvA7KmfbMzLHwAjoG-ZjGdxeIQ|r= zf^G@sQe?v3n+E7KFV*n?jUr!XpeTV4uO6fy>YP58xKCy5j*DqIa4Onl`q=%h#Ke@I zT`VTT-!Dmz&p+*@quCA3K);oUMJW(ZZqi(S<8ET+%{~&(pqc=EICVJdn>C%$){^+@ zN2@+6qrM1Cr=IV%^NX)xiCPmo)j5>Q(Rg;8@z#>}Q%iiTI=mMj#Vm>mx9LI0Q4=sC zuaU>9#L0JH@Ok>}(fX~tHG6Njj+Gs49!F67cR^1*rhJL*PdQ$w2{L^s| zYm389g5DY&ziQz?&nO$Mp@x)gor&OzW$}keUb@#bV`>`c*TW%NWoUBiFYtCulm;60 z`&=Hiq7c=Jn+`tU&QC?~?wL0oR5DC$#6yoh&))l83p7D_shjK6OrPi&MaMw|oIEJn`TXfv|-V;q&!R(WA3A+n2n~lRe=@{>v zA@6fVnnebi;pt1-Be*<@hGNaP`EU3YA#PWXZt%2Q0fwU-wQG}vGKD{`b3UJ-?%v(5 zE2tluJW)*j<(e^IpH1H+>&7^vv;`xI1dR~w??29zuH||`SKz2vBSMW=s)mkucJ529;G>WWn#cH07*bC#Pcz$CGs6e+yj0XMx9!Mg?;(Vbih z)2-{HfG<}dd7cnmU4_=Eu#ZtUM?FV9TRi9&4sUQ5%nc#RiJp_(Vir4r3nz_O-wmMw zsz8D8_v!Bba_y~+fCo=4n@WbY3B7Tbf~o0{x)f!~6n3>VTVyup6tSZSGFiFRRce}c z#NV3GTXD+SWp*TQVya`NgWqvRuqv#91Oi4ElINhQqjf~2RnheB_!bW9Xw41QMNe~+ zX)*zdtrg5f z8%UL*F3;#nMx?$%4$l@?*&TnDsOA@|uP`sQb@qc1lqBjDTl=cHrA-c$cmHo;H6e~r zxhno;2XKR(3xHXOR?bjX&jLO>JrzM?-P**hmQ?Rmqav$9oK(kZEA-s~9#@|{Fuu~o zpZqPvnzazTpXxUMd99)VCPrH3*~6f#GLk?cGLO$P_4$IxgTI3I7JhJ?^l!aDGtS(a zQh3MCBA&`74I9HZq+6Af|D20P;ABMP4pUrzNzX4EW#j$^ZKNWBzA;9BUHC`a;_0md zam?{YvjCcJ7mzaUyIqdN(NrEH!_iIDPNy;pHqAfwM5?8E=Ryl)8LJ42WDz(3dPSo! zDpwAA@5i_(_Su)(4d_8n=0d~`n({F!#$#EO`K+10jT|X@yy%nJBM!o^u$6uBkBOxQ zjRDQ}G46f68^x9Hp*ue>oTyho7n1{EP?||a-Zg*nW^VXO&-WMW!-8DB$x&5%>f^2> z>_nRVup2%6FkaGf?26;PBnS2fc4grH>!bEvRccM|U7zks36Y*YuB~CPGJ+- zszv%dM!sPp-$Z^5Fd2!)b#9y1xU`H?tK$DBXU&pPB~)iH;oZUD+K#y~?YC;RwYTc@ z-_lEPnlM+NlfjS8eb~HQ`QDodQfa1>=F<1Z4D6YfZS*c=b`-3_42J{yp)g2KLzi(z z3>#2>5ydkF&uRK=!NLlWUM`YTPBZvM3bg^r78xnDRX8|{6kM$N%%~P}7!Jd&BT90$ z2rmcGzIgCc^aUZrJUQuYld2$LPAWrA5BR|QdBXiUWyf~5cW;&< ze;bB-K1BZ9O-_JkzHPozK7@8~)HNI3Wjt&9vIjjU1j)Hi?!7D=!a!fK249?o;yPC4 zIv3$6QV1b>^t&*u3D4T5Hrd^$&I9|!;mWYPid44uDaYF~5ZIu2lwBzwQ`HDe>#8!M z@7`V`cg5%TE!RJ1YV+8;W#-Stq2va!Tj6U=`$|i|q)ONtyK2|-I5DSKaVD~0ioB%# z@j+V>5L-72%Uf~3%IU|Ve5Ek&{zW8cN0A&6FMf_c`!4#MjRbicdkoWVHbXEHc0NJU zp}{6N-9MO@+`d)ZrQ|^PPyJ668W)OY!eVQiYk@ger zo?x&@dH#R16i`-UyYNvIz5+_-Cgzcv8I`rIENt39@W3;}hb)axMj>_ux#N#^)tooS zH7;RQ`?u(Cvz>!PRx91oQ?@utiV>vNtHWIBZbg z>_9s7hQI@vUM3dT(StmwXw6SMC2HS3yQj?^pUOY;6@qZB)vg5FUvZ9~E^CqohfD-z z>ouu*4J?_VKeSap9T7<78pLPKk5+v~E9-Vr2%L-ELu)aNc|XeL<5xUvxtzpGKWeMZ z(I=ov++Han+f5v#20W-w-xv8>$Vc3TL7P4?|Jf%c;19ddf1_0*A4r{JMNy|CRRW-^ z+Rj=dIE-Uaa<-3Nx=d<#e(Szmp7^`m47DuecWInc{mY%0P#DGTw4RzBN%I+Qz_m%k;fLNt_BOVGvZ42NPr=awCs24>HeEDapeh z2hg=cB?z84;y5`_)%5c`G`Q25db#JxbC7cwD2%ghu{U!<>hAbMBXFCWxe`W7!cpo-_wlaZu|+VM1L^b07@(v7VDVAP z1L>v&)R%>!FyoZjD00+RMCk*zTbbu?ua9RV_k#P;Fbiiq`wj;%QvnLiPoZ5_5+X8^3+tAv##Eq3c6TH z;Wqn0b?ZnRfxrBeyUJpOjq>3C4zrDrSPjY}%kQJb)u(EKL{cKZ2udx(MJA2s1uSK^ z@V;SSLvq)N1dx0hOKIf;-Pm_(D-eDm{% zp4quGvh-r_Sh)_*aB}`Q%ZYGP|9VNNfS=wWfwkjd_sYlqI#&`Ki_Ge_gIQr~sG-o- z<0DxK@!WeBLO!9p0tBm{-7d@*Qr`=&b5Ky$1llbjj|N}PhHpq@wOUbT%#Y!WT(5=8 zFgW`N0=*aq5qDASr2drWj5j%g^x34+1Wkgn_g~Tp#58za@|I@kFFw7OnHs+6fYv8N zB>G8-`G~A0itC=ZVL}mYf3B>P=YDD+<01F#CVv_AKnwj0;q6c9(Sevz7n#vLO-}6E zMA?=xbcyQu6{GX#1nCg=QP|*yYq=R`pC4C#zBB2OwD+b83d0GPk!@8sFJAJjAxvRj zWq0iJy(ncU^=Z+&Y#yD^#l@MpN4@b>lpDBXc8ypu#2ATGbNLB6I z0F=X5L~CHF)q-Z+L!;_r5*y-5WcZV)Wic_{7i;Q6_)CI5Y*+rgOS|b)<5uvSNpzlj zAs~+AsQT$Pwbf$2Nx-%puz~V@;t6?j(On7aERb1Dg?ETRqKuR+LuLKOt@G>5LW8Ik zKb!wJYaB=moVLCDd4=0?ONZEB(!TQ=?MOsh=HpPjqCY#aD42qI9 z+cx?C2+wXmp97H;~jFxi34j`f0RzE8n>0%+6GXsz0(B^UQxuqxQI z;L(>$&d+V)?H^TCy!J~)IoeuQKo<{%aYh!81KM}}zu6aJZB36W&OE_%11@8{KjJhBzMGxz^Qxi{<7 zI4xmrdy38g=r)xfZX2qs8L`jyF&R0gpNHx{{;2HqQ3!ym|3PpyCx5K{N1F$kI_P>9 zovg%{RJIDxYa-ZfA4PBKA?kSD)?BhCVUi8~(F}1MQjePB=8S?vCYdy-HhPedp4y9> zAT24X)@m(u)1IShoS(3r+6bWBk4fvj%y}CikdojErf%_0A9Y`d#NPfIja?w@HerX9 zjheE4Fn52KyS04G7Kwj;=l5L>7N7d(XKj8rt%gGkZ`_%5dvNAq=%z=SMi1=4Z>wjI zW3%1oBi)05@turdheO0JoCg-R)6t_TlV%vaORqfa+xHP+PY8cvq^ona-g}yJ@K2Q; zN1=^yp1>m+(?KiaXI2`dnic*eNCQcfVDKpY<1N^_nPOIw^s1Zb`xR3c<%Fyz6Q7

    Z#(QP!)UVnyxFBuGZD}32G^;uV7$IIoPbLrW}~0 zGm09KCHq|gr!uV^kNY~CCD*omxOOx9b0e2xQStpNUdf5CZJ(^%8ALV6a|-ng$VUKo zKBxD`O7Pi4d@Z|U;Wg=E*OunAVFUNEjSuncv?XT&rY z*2-U(S})NfhV>~9>+}|}+UL(89R-Tq>wpM1)o$zox-wKJ5hV^=>1D3h0e>c}s-f7N z<_tBg&fsRG)}w)IJ}fFmmImOLxZk~J{9!JtBA8N5&K^F@mwZb(2K&V@B<`4$%c;7z zrMcyOxR>7vcM6K{ve`UXQ5s0;aq|(wFmn@A@vI5?f-aYVN$kHluQ#gV8xLPSXW>D6 z^WDxvs2hsx+g_}JLvQX0y~3!k54Lsxx?}ItQzdxk2~D-0bM7P44Q*>Dfi+-_=_^C< zqMx%i^WsO-H^ZdVH&9V7naF*#XoSK>mHqdtIwR?gW^RN6GY`uO%b&wK476h(jf)$t zM-ER;*B@$60^;+5Y4s0fG(z|wLOt9RPm=@@MHFd;s zPihURDYV{N(;QSDoKiZM8x6ddZ0@lG0L!@hh`N1EnFu|VQ~VZWIBHNSSVumPZf&+OUZi0%);HBF JzvB@0KL8dEW!wM& literal 0 HcmV?d00001 diff --git a/deployment/B2C_Docs/Images/Cleanup/01a_gettingToken.png b/deployment/B2C_Docs/Images/Cleanup/01a_gettingToken.png deleted file mode 100644 index 20e9090806517d561d8f1d41d2f0096145c509f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8491 zcmb`NcTiK`w#TC&hzKYus0dN2NR=uzf+F1lN)G`k3IU>2DIqE<0s>MaAWcFiU?@Ra z5Ru+PAoQTpLqG@tl29K0?z{KBx$oVXcW2(rIcKkZX74q7t@FqEtnc0tcW>)+9Xo#v z003|q8r(Dk01hu5*odQS2hSSwdBj0;$j3}y7f{-JVez2D`bfuA2LQmta_%@DIp}jd zF|hUl0Jxj~+=tp=10OE-7EMebcp^xERuY&*ok3((=6m@U0b*$TY< zT})?sdKz#|RA@{Upf*9HHy4$n^%{5AdfiNk(>UOYdfo5lUdkiY)%I=raVQc7$;2OlZzx?~dn zv6mq1Z|AJ7T=Nku^RunW4w5Qr=$1#_UK?`HcFh+*!eEOpW+C-@-;=!Jz|tbzbLyX#*o0ZeF1!~a_3*^AQfns5e|{1SI&6be7(t3!%huEKHD zX2C9RSwR3J=l|Ql|D5q}MDhQUivPt)V};2O%{|wm7}}uhAX`=y!>O#%gW$>NE+r!A zeGStlJ$z%xxv))?Q2SEN7xgYgfaB3!nL$Ub-9vzBSu+koUnyUZLOe%@(K+V_u{94R zcRI>8JFyGLV{Dmj_4n^EOY;ktJ&D2W~d_;}ZjXJ;2@((h>45 z9eXKhui4 zos@g_$9nU)^|7a$w79)he%hW~66yKCp(V>q0u!+@w_reg82k~uYdPO|KXcE3$1xgb zjE2bPf7~g&v3D;JgHhA!se(0Lu9;cf5}7IFWh#s*COa)abk+NXW+cI`d|(D zyj?QWBwbe^rB;<#F@?nuauu0J=B@OQk+=xjJA)it9!}SK-iUF3Jl7xx?gM%PzbaQ( z65z_7V;tITy!vqv1v3*6HOhgD)H=HatoeitOcSqh=F zxjQ-AWU2(Anpb{n(mE6ANbQ@k>R^2HM57bxRzK-432w8!)PM(lQ!+uM77WaD!X&#p z$}HVS$>|?tyN6y=?Z4W2{rD0RjIwno)#hVl6vSrE-Xf~3_;fIjx{PP+`}~@`H=aU~ zjU94E`O$~g%B$}T$pMqyXG(L1+G`0zX%V$?et9oe^T^|PHZ2EVYx_b@eI&I*ZpnSr z<(zd)$(qbk&?i~VI+LNbQPdH|@HCoqYIMvekShJ1XxBm_hu-dU$Gx?dYT$;E(q`q#LNz;Ap6tVOd`O4=qZxH? zRFkhj3Dxt!ALnT|@=d=(f>WThZNJO(`u<-~U?p-b&NJ4hV#fv5O!Kzxh-0|gs>)|T7C4763>eYH`kN)`ewdw) zd5-JE$cKzM8&wA)W#2u$mgVckLJoq=D0p~bx=OWOH0K7EJ$8K6e?&t)W8(=wA}X<| z7o*Pjt?-3hal>oeze`~M8yTpz)`7|oYti$-*Rgm`cIjC#UKdHyk1p8CsYVXh>X+Ax3gMik{)W###0zvY3jIL0BSam2H zGMEpp2Bku07heZEaR62{dtNXWO?E9;%J*oY`Yg-Xkr@~K`oP-LW)VHbcCy1a+1G`+ z-V$|2SS9B=W7p+%t^i?(ssZUf$$31t-x)#`dplj4w7F(kep7gJmbJz>2{G5hH5@#o z`a+!9>WhI$GCUKaN+ZGL*B|b9H1nS_WnMc}S^wP4KFdRx=ixCk-;Rt|Nq25KAGex! z!3!qHYb!n7Ys=S}yw^}A;fp8MjWxaF5mBa(o|~^i)IwfjHnlbxY4u;0WJT=4aC0^l z^>>2zGjG6kxd7?bvkNbT8He9-13pEKlOa!@LgJr38Emz`Y{A zgLI@%TtC4&Dp$xAbCOlZUs?uAa4h>0QsR8_n=4f25MV_mNlX?=oZQbm04A*`?@6Yr z&_u`B_kAW7xckD8pXWBa$^Zb3reMTN%t?S3``_8`8=n84An<=7pMReu{|zVCUNG*1 z%Pic_B(#{M8^#Z&*nE$P>dqHORut>)d`Tu7Cx}Y+_zHn=HZp`|0_r;HI^OTUfKhML zhQtc)S54F+@&kr{UJpPejb6JZukj}+!1Si$BIh6DE5LEFON&qq=HEcK+mq9>{)<^} zjQSj~s*Dxm@SlP5*Z*Ps8zKB_qW;%T*rlTXu}}wQ$p*+OmSq)j_RYA z+KQ1m1-MomuY0txJyj{7I(PBo%;qXEsf}G8p3WihK$GtT=w<$AfPfEm1Y`!NyX{@n z@CT^sL@r(CMX}vfD&(BwZ+FDLXQ<1oree4pO?+Q~6E%+i(zxHVZ&c&eylO-`4c>gd zBuMMypA{_)drF(}>kF6!s7zDL{VwAIx9_LV*RdJOW6m^T^0y9HwS5a3NY^RsNTZl) zKia3;M<-h@{S3shFkHfMfeO7LbC*0hSey)SZZK(~+iY643ojsDr(_hY4X$4~v}|c( zC$LvEo06Q_T_zok@(Xj(3jeUHZzJRum@^w7BkSoV3Mvk}IBQsAhI6rG~jSJxMR3)^O6 zC;B{jmsg3iT+m)V7Zn%c(wHbR+kq8u;4FvnA2{~zGqlaY)h}+NE?N0pfY>_k{tK-!1vJ&oCeT{{Ozmp%| zAI}0ZEvSpQ7}du)sri~cjIp-dCWSI#IonpK@;OQ6_<)k*+ho&Wd?~qTh}}#Zlzt6J{@Ou2ftc&&El*i9$x@ z$Z4}))gIv#Nv3}`EK+t$kn)U;QYm$CX9|*Z_L{+BDY5xxRM76mqwUqYG*i?f+ z%Pi35;x)`1%}%WzU9H@*dC1UR*s@q!CNG)Mvfb;d45uVsed94(N9Vb%z_1@p5NQ@m z7V}|Md*hF*?ac62i_@TNkaMGpW&f7O_M4vO5qwOn*=iPdd@prY(-YH|A@K3nxK4Fi zzU`E3FRoKf9757gQfI>&6`R*(j)vG!$g_1B2G(wyT;rfmWff&pz;Z^g%Nw)#G#e9~ za+^XNmgX6seriloheyP3aUwKhwQD!~@%T6YY_u-8a%R5Ob68q@r?FEHD<(phqT#x$ zCrSBqtf^F^=XsqyBYPEekDPKe)3!5?6yKZd);IYYCsX@oLW_XP>w>O9U#Q>*g4pXWVLY)N7@m7UvnWqu*v|@Bcuzka`z%SYZ3qWC=x(^$Y zPQ`Kq{u|3eiG$8%JN1d`EtJ!1PlLT=2dKPDqhQ|Uv@959`}7m0p~2aLR?*|BPQq=IS!&{vZa4W=KXbbv8Mk~RMyc9H)Gicz_|l>} z^hJFeS$Ndx3jgG#kH2iXov!oKdD~y7g09I9vc}#&vO0j|qdset;$Up*#p9aHM5wym zG7XxeQSc$N$uF=_SX}5vgC0)HET?pnv1Lq9y`?|C{*!Ce6(JxP7|4~^*wNLpI+vlX z{_MA*VZyifJK5#VE)Ce>Lsbd-Rf6-XO?CH?v3_cfpz|rns>zTTmr1Cl|20Tu`3ra~ zZurMz5fQ%)Pu!>g#mP3vCGbHpg4FvAFo~;skoV3-#nUYnMm`PED^u5p0Iy&5Nr^k9xy#u>A zF4C}2ccVX`+61_G5=u90SarN^GxeQ80F1aIIA5;l&~L1XU6cvDF2prFjxXt0*>x-` zC7C2LewUXFp3mG$_)6JsvICzEZ0C=E2xRvk4hCu9sm9N8I`%uwE`dS!YMbewQhJty zsdsGUMkcwEU(Sp;MEQnF@Ho_M2o+@RuNlhdpQ05F8ea|i>ek?{eGfSM`qj(jt!-;s z?kCxje3+n*n5utk?8Ec49GJRkEvi2O2RjfYjB66AC_!6pBp=!=B=;6+_w!zq4)kIG z*MXMd@Ds840u@NV5BXZ#G%-3PrF^bu2sXYgI!aOvVh9ztLD^z=H&w$2Q-WyDsJTYl zaY}8Y-weHN)8V3+>DS)fY>~l0o`6g$RyL)`$t`&Glk`zM<=O_7O^)dnL?dxA&EB16 zrYc2ex@nnLWJMn&l^>=%4bo>eyYIhN*-`hkNJ8H5--FO zd}Q4E#jvsiwwXv{xy>Q7jy9RL5rtbLY*%;GmB?vm%MDtYE%^gQE~3&efv^ZAr!SBU z%_OBtp(Su)Tz7zx`gk?EvC7EfLS#wAP`NdN+IBNRr9Ay-T6PaB>9(XBZySjZ(cT%c zOr9377s{(|_m3-eeyXhOcX_7?1rx9pf#1V_VWj#Lp+@?a;%)L(_9+iZMevZ!#|cVI zHdddI58)@4PLlQC2$$U?y_=mK73-GZ6|i#qKpLZ+;n?lOq`k#}+X5SJ0L$Y+EV{$* zKWMGyE-an@#C|~BY!ab>=;fLjop^rdi0_Bd@B~(Y@3PYGCk@Yr2ru$h%)=8YCHD?M z`HNmRQ^-&5_+h}r$v^Zry%N6u$?wKmoHqC^Ph_D|KQKX3k8{AnM7%5 zpYwr$OF#6*+?nzWokw3CcPT36%)~3e`j>q3_~Ko!nm?k;e#sfZR^p*)8HJ;tT97Ns z*gKw$v3KUJnPAAA1^{cs2yy(C)G`EcjjFpAAXBN-^32-=uXO3xH_h=9y_o7~pl9vT z8~AGdkJq&_M<%#WJpCtx5dZ8uOyd-Xg&_hVS$Zo%U08w7$I4gl$i&aR zPQD={8*h(qryp>k7=)iA%cYUE=cPwD|IXhcd5^sX4|I~fiRT!8uLryn?j}s0Y*sF@ z`KIr)mrC~of~ppvKny$MbnR(otZ7|LW|G@C+G9^fDlKE3wOOjT`PVLY?OBsak5qSo z4JVSj_9Sufi06H3V!kzm`ApSn?!k;p*E6)ZNbaq5rH(x7M-h6EJ==~pPYK)ni)H=V zjzTfJQPhlcvG>|;*RD{&U|q|(9~Yt$lNcin#W;Vis<^kLz_u#XlH*l|0Zw2uR~Xnw z>%@Z-kA9NRO!m=aiWU0b;z5x(#h6=|(_oVS z<<$#X3kzCADT*0gTe52xZ82sT_J;<;&ivnKP@`h>QKx_BVjB*7`zoZ+sNjal626k0 zw##>{Zbo}$T(TmN7{tJPAmT)sb2!T~W9$5H;*ROUeo897V^eP>yN2?Meb3%dku^4U z5~`6+{k$tcIYA3|m1M-{7=M5n*&^wQ@Rpu7A=UYjtA-w6C-www4<``{ZnO~ouIJ&d zMibCO>tlHl*8L=rFK{n!>VcO;Pctp+A}vhrP5zQwdlv z8p)X{zI`*Qa;&<)1$OEVGEph!1EX&5LEM|5S(h5hPh(wMfsUPe?M$# z&(@rf`}5J>-ZK)6@6=vqXN`@s?M6HaN%!{;{A>fB6(0ApF?=*QLh{CGS>iikX}8`t z#v@Ik)Ki87Vq!hq8_}Z`ssnmwCnC_ID%*1pKV}C__!dQmi5@?kH~2;HqA%g@&%oBM zGNdRx+Div4#fVfIQZyxvT<@>CouafDKR;@98?=cQG;v44r_sg z_}RLY{W*B~fDpzzWH)Csl13`H6Y$;&G{8$sG40}Y>lSgX%K}4NKc5Erwh-h9&0QL~ zXisgL=g*{H!ws$6_v!@PsHQUFeMPcpTP^mR&wGbH88Ie%*77_mR61s1 zAt`Anrvm1mD15O>II`x2`{mnNHd2oL7fz|Iu=QMZ8`PWOqa7qi&Mh=$WBRTZ7m<#V zKd8{`&y=^h%LZNaj)7i{#eipA3OJP!PwWnA#V*M&l!6LirndlNSO}I1c2K zWnSyH$(QSzejU{TNLAj^Zo-sR*n(k$f6^tug?krBAz zNetOA+lYQHk3|E+da83LJs~`)RL3(7r-hHgX|Tdo9rgFpUIrZUa_Qk*^IO=-=qj~h z{Cc1C6qtQ11In=|EHQz!h(nH77q*7gwVuJ{IIL zh^YIV0*CFnmH8Q^+AsDGkLS$k@^3~?vCya>?ZVl|pX>wW7Avzg0?A2B5sU@6qB2t} zbPiWJkWSk`JC%AR+vMwCjb;p}ri+8k77R(%t3&y@6SPtP24>}I4P(8`EN3;;YTxDK zG4l3mP0&6OUyrIZeD1rRpJC^FaX3|f_O^q527+L(YSHHPH9+0GEaM$vXG?|^m9_+h zQ|GztYa_k$TtRmT3se~Wb$=-{)KZu9&S4BIQnwi%V=@odR73ZI2QyKWT}~&E!D= zs~4d$`oyHtOI)?jpcg0Mf;7`4BW*9W*5s?-RNnp|W?PeF$vfq{VsTincwlH* zPEZ!C#II>5Os7%&j6QOX?KCZ9T*D4Wq=gsSI@{(KGdc-`Y=XovvK;P``l?3C?9q*I zjB+75x^f%F&wLYl@*FS~HH6EXcrHI>r5c@GV&08?GhA@&vwaeuJr)vH&nRkNyQ)qI}$)K?8P1wuR;JPZsB!q3`Wra?FRbffwi=%GzLa#H2#$t7W(|5lcJt0 z1_n{v-QT?~$6xO;FkrT?UrE3FWV~~YKSd{(TpTG>?#%cl)gtZz*(zh;QXD~#*CH{g z88d6vXM#|d!$$<$_Xv)buqlY|lb$dSCo7Z4Kh63a`rxst%2dQRTmspbtp3DbXup4s zaeay9PJHXGgNm(Q@UHh6*Dsu?pMYHLZWR=IpA_sCY3hipi))SBs!SoTss)$=Nn~)* zhbK(nH)nr8p%1V4v+eNybwx2MPW3;2^gE`E?LU4m{1zDW&#f{~6?$_2^)Yl+ahm*J z#l+CELH?t}@8z9=egok8mkwX|(*2yOc13I{;61fx1@+}V^oHLf>B@~y<2CchtqX+@ zlqEfHHZtZpW<7d6>sQ#<5tr{zvuyX=yXGT$TP__Sbal6{JPkVpdK0Wo()qgRIJoa0 z+ZyWUn}qe6&iL(-C$=1080y3ReR}UgkQ+9}(_zWG)8xr4%q0ilRvTpB{mJjSD_**u=k{7}kq%O_Qj-nYhfK`;L>hS(oG?L*MFk2_!YZ$3)Y-ukC3(GJVcph#to z6J=*=mHNGT#i(!+bKaTAsxMk*IO6Dw9-c5wL+o;qUCx@i_MGvHoEn1Md6b$n^$(Mk z5vA+5hS;OKK0@DDo&-LQ0OCISce}y<>o#Pz{IB2hzomoxpD5gX>b%b^ww%R5l%swX z05(Y7AQH1qr0b-BUyvPsZeT1jA75Knj&@!1-EW$uw3a7ozpUa=V+XD68=okr(LLO& zMK?-mUD<#1-Q=L^)bvRGExL~4)WigMvUu%kj@_nLd3jE60+lt+*=D|G8S!q7URD34 zLOmi7j;dBJFYZgyq*++3YxJBJgYY`YqAvTZZ{ox&kJq*(8FW+qYMt!`YHr$m9O4_T zkL&055R#~mr@da$um;LZ@a=rHTUYjsqt9EeJ5>)M!GC$&#Ud<6wuB*P+jb%^Z00i&q(GU8 z-6p=n;fTMT9$Qri%%dclS^rtXr8=D(W zl41~PUCqdi+i1xNI;B9yCKzi{sSg|Um5Dv#ifUYqU*j;G{a|kAH`Z}28(SDDL3v_N55nY>N5K-n@dnd>{ zgs%vuUcFwwH2y~C(L>RZyzrJneVAdYIVLo~Z4!wK>3jTO` z`7ZW(qiUK?ZMVNy;A@va4-f(Cug?go|@J1f;gh^Bs;bN({{=r;Zd zC;XE1$N<|`bP3@Iu7I6HNZ1xvS~-t_8_txrdX~NN{HEBJZqEW{!vxk!a=+SqVFRvY z5;)Wd>O{coe3J(30GW%FeG-*x$e*uFF0U=-Duj3a2OYtiMXG+UHn4osCC8&`oVa}@ zkfB-PT}74!#^djLMkVVLAwBkHehM^&pv6i&h>%29( zD4&G+kjs^3c&^^LlrExGtRTR8#!seanSNbI#jmWU>L^|Ij6m5!PhzJ0jHha$>Mal2 z80g_q#0mjdYB{K;ihE`rK}v7DZAHO1jp`zZ64gME%gXhDV~Fq(gR2tt=sQxe3(LmL zLHRAD=9%_Yso@5Zbm$XD^c*)vV(ZwgHtVo?r47w>H}oB!AE++lBWWO+(wh|qw`e-l zy7JYs89+hgH;WHj&h7sJrLFOjfZ%h7U zWYfgax#FY?Y6hI~T1b?D7aOeDq6(FXQTvncjtFKR90ph?wp=IE4?=Nw?MF@7iVJxz z>g^z0^49qD-ktM<#j>5U;R&_3p$r-cSDo|KPWhrZu=Ysb9ODCrscT$i<7nze2hsxi zT|VR?nW3@Xf-}$VZ@)9iK>ruyY2weL2PwHP0>YV*1&07d9bH6smReqSR^Xwb)puRc zLDKISuY zqB2Yhv3Ql_3hju{8w^-(e=d!?e^V6PG=xyeEVyqwSAp-~fl@G){U-Z^jcjHHOKxEB zzG3_~S{V^Zuf@~dq4*>5Sr<%x`72mIALA~5uObh#V{~Py9 zkC}09(90PysW~@13Kp=Qn%Lkl!A{XHlH)-mCXw!-LS2YXf(b}3 z^Ee2P*{nn=HZRTGowCOr7M#72C9J@b}s=~uOm9zZSWN^ zn5CL2PC#K~Dq_W98u{Mzce-ac=;S_b=36XfPzIPX+wLRsezceYEuksWj`ye5hoekR zZp$Cre01X@-BN~l&;jl77|TKU`c;{K$dtE_Y-v6~)8(sA@)Pzur^^kUewAMyedq?wmn3IhOhz~SNTw!bb3r))oXPg-pnwzkJxxm zc-Mx=ZCq0WCXK##5S}^WEY`u& z;HT=75QKQ`GEJjnhHC!Ed~9!Yz08z8vF!hjPnNtn=@CpD6PjotvNm~wu2sZ?x-w}J z^m1;Fzt-k8GQ1>;F*GPjJta;Lv-tsHEP+d^rTj84wQN>Zq7G4|_M2I~pXRebVI+)> z3qqfOXCTmN1qf#Ihu%A)ut5lxx2LqewR#5ZI<8+@Kj`2Q$yo^wms~ldlxv;{FmgL@ zcrvyh^Q4&S3W&h4o_P&k8Ii5Cqih{?pchLM?>O2lkq$4rObM@yYeC0F?qQ7OR7oAC zs2|3aN*vD0f@EzBffhSI#6zx3v|jFk*8;4d8LN=q1bOV`;QJF1xfnsQ?s;*9&el>t zGMc3CRt?AZjWmG@urvcKnZgjZ6kHeN4cwKTLX|g&;#nbpxpVs|E=*U=`=O}H%&`d~ zIUXwm0emJX7}s*o$8jgB_@WvomDq}H${B(Zfz#RHA!<<2y(7szHua zYS?Op6mcP8nB8p)6gU6TW&eFlkzvDo3nnS5Oo&;b9)=umdEufcC}mD5WyRyBF9B=s zPuH@Pj=Vnp4)eKciTA9|exIniQsK!qw*~+*RKIb4@j2eP9`ZH0OgGV_iiy^YI{TOH z?QF-giIz1i;w>Rb$!R<_dlluoyAbZao80sZCc3M^1jfL#`UgO=+^G)%M6^qRq$?Uf zmW8yF%Lrc)NO*oZdESsvDKnRNS^Z?}1S)7xnrl>;}#dAp}YSdw6?~&X?eY*gGY+63$$f1f>~JywbGd z-oxI*cI;D`H3+JH8fj*ZUDUHV37D`-|92|oNK951oxF)YqNXvG5^GGMraa7*F|rEdo-@M)lP}+ zbSS2OR`Q7Q#bf{CnQfeVUma^nbNgtTtMRTs3D%p`|4=kflbI&)OtZYE$=WF$d=|AD zuIG-yG<3+o6e(DhDTf(EU&t_N&gZkVCS+)oRI^rZWGwJ(=y3XwD}o2`a|(6#DN1i# zgPe7%L_)8QO$WND>!R@>bCX)jaxpRImLY%wcSj;Yl9icn%YJLw=9Z6w=N%q&yY*K8 z_ZB}%jUES;`AL#AJ>1v8%UE<{2@n&g(E(G51bkcAg?=>Q}v_t|82*>=gG` z+mgHXZg%9}#Nk|T(Rp$FhRrhvkU_@_<3pQ6^ps#vG2yiNMyr9)2Pc%cKL1dx9tTCZ zRldgN9_|ro+dQ*4q`xyMH?r0hTlPNDM1o>j^K@X!mHHR2#`fcH%T3yeSKj7kTc4!z1q-h50ey+GzRxc;6MW0si&tP11{eH2FYK~<4%P3bmb8uTveybx zB+@MQQAFu#Nl~>Qxu_dtXg@Zx=?PR_EI(|{{1H1D$0lPuJtp*k^MOGe?*oOA z=w{_6S0fb(X7a3>eNGR|N?+geaf+hUwu`{GuY}(g1=?2eDbi^t+&q7UJJ=o|R!ZEq zqEVyKoJswR5GRO}NlrlqkeRp7S=cz0a3_7V;`ImJ?6OS_3HyL3%W4U6*>JhT9QblUlQ#f%(b$advi$&`K{>K z07Irq45Au8RkEwzd6JcyXZdQuD=8LF@!W=#8$+KakuXay0Vxj@R1w=FJ&d)KmxT zx`RE?f-Vnsba?|6HA;%X1bC1-a#m%xjl8;8Hw1lw$Xu60u)#O4?j9!->hZ0N?G+Z( z)1oeOcFr<xTIhVaI;zjq=I~J_!B8yL)hl3H~!`r1x)l z>;DZn_bi=Sr9P zrQn@8@&5ycQ<3cazenX%W_#9K4b%qZVJA_`I>M4S9hj)YgP#LpsBg=5f*~2F#k(C% z=OZg+_6w4AFAWC#@H2iBiLT+@y}}TqpIwhf$Fz&F{*4uIV~BcJ_kRZd^3Z4?!^+6V zf8l`W)1hK#n;Z}ucYqD55%AlYRE8ke{@<8i;4c~5|GHH_^jl#Swu+G5A&!$CtlR;5 zbdv}ux3f*`kbfp?D&E4;*lfk+LgZ=45*=EdQS|%K#18sqpR2vTo?A z*g-s)H7Zb7eCmn=Nu}`Dg%%2x{daIdsb-o$N!O{>?XR-~J>2J=2uf>hI*0n@r-@Zd ztBZcs?rONDA7vo5y+kWvCT;h31nj8?DGTW>x}eA&O1J@M!e3K-tm@bEqf(J zBPR+?B$fC8K>~k>wS%s9DOZ^fYyL=zyajG(uo@!fy-t4b2JKi`SJef47e1PkO$Eek z*S+k$S>Fj>b^Yl4WU<%^dAkw}^P zl&tkV(U7Uh6A!S~c|*a|8(z?0A4Dvne-puPeRXnw?G|!0x|(MeQrqzx1Ha90i?Kg& zcI#yM71pdF-+tdiBn8WTP67$t`A}zfcPJK#Sd*Cht=$C`G5Y}Su(0ISI*VcBMNhtF zn7{^g<%DP|nam68dG`sL)k$YG%r}3@5u_RM;%}w?x^dKGxOQFTgucKm7{yg?Yeml$ zRIbeFvoyYqW))Tsn*dXxmXn-$gC>cW7VvME61LHUWrV1~XeyJWOYE>IwQB2W?|Q50 z+sE;ijuHu?QNmr|e2Qi`ZS18OGHA;cH3HK+jfy-x%UaET9~(`9L%85$?yMoB*Wd&O z@ePJ^@f2t;n(G}LOVO_^=zq_+9mNkAT#0~xh{HN_KAbP~T)Pd(xd)sp_AO~{o$~Ab zG4RdmEZkF@Bc>#G^0~dYi!+I-S>NqSS?0#|p3vcK>(QznCZ*(M*irpK)R6>D1=`{6&YKR88Jba7j%(o0B}Bf+!9ZcAp0hS}SIG*86s;rAQ5OU+2YJ{!bJuE@1S`KT?NVbG5+o#T7qnf0RaVfF`~BZMKd>oUXmyhc0XtCP#r;PzDAP^scZG};oj#Qh{0wU zh)JBFI-D(n^@8DjkdtIf_r$HXhO$pbCZQd0I{}JtWeRNvzH5NfK(UGYMtJ_Mwi?ON zO+4wPTGf-$z`Zx3dx7eD!mhUksPDJEi~}zjIKaE(VG){?83m{L@h*RKxd=#-5HR+H!9+Y6T8tl&3C10;xVNyxZy z>)pwI4~{CyNWw`QQ0@==F{-J3buc(k9ME3&#|!xtVihfRlWKsf-L9RS+jE*{ zA^elttL~JBrRo0A2hnPMw;UCLfF}HR!2w&K{mM4%c`ESL6k!;N@LkLQ+RnH+ds-b8 zf4TgZPNa|ROk9Atg2WV=r|PDBK$_5G+txec!KY|#IIL6Pw*b2#9Wj?a@K5b37u*@e z#hFV8{PAVE*3mDt)1_~S+|_imi58x|02<$Bchc0Qx$dZ@rAp>1+^@S0si!`^7A zlT?#U)N=lH?X7-nzpc4crWGEHO<6hYq+kn3p6}t6pTu6h5aI&QIKW}hFI`tV^WKHH zIM@Jft?9G}OB_6=FGQ_DvbFY71{6)Gt93D3XOP=YW5;x6#mG&(^QE|Yjcv1ut)#Uv zy->b~hn2eo;b8C*@pAbGT^jtD z*m+B!%dV_w3%{1({Pp~D4d*TChi-6BvfEThl z4YyWr1tS(7S$#HC84&kVf=LG9A^mi886)Qb6H)B#M?2D=0v_`le%um6oV!ec^G=O# za>DRXLDQ~OA`IVue)YLwFWoj>Vsrx zHVI4Yhfb?U_o`wu@)e8hzI$beIr(^AWe{_Efasp4hXGF-w&pLMPWbKm^mT9_u?7l6 zGmy}9*9Bs>F2|l#$`)YFCoRG3E?cKFZjH{A9Pn6BtIjmW^H(VhTbezpl zd%2wCdfUC1?ut5{tay~}+VB`8_NyU#Ww~%SDm`zHJvA|XFwGSv8vRWZ$5#3w{Le=4 z5MuGdfT}1$i09G%BfrBRJ87n3J6|C4G>kWr`)9pnTkB%0hldd>Pp~{Sd38~tU;Iz_ zD?VPd>pr@z7lk}0#Ow%+^w%IN{bu%cn|zj_JMJ0O4H#cFuNr-G?CU&qUl*Uc&I)f{ zGw8csrL#JP&LF7sAu+6DuAi@ z>Um)3DMeJ8M`b;B*U4vIX~ejyh?j)DfZszuf1d6nnTMkG^)}9NAghsmFoHj9r@)P0g2~4$` zdW9Y?TkH)Pp>!OFC`RGbVn{SMW~E{DG#$4jlQFUcHJlN0Xi&*tN>=KEponuGZ? zZEm}9tKK(PEEM1DD*z8`<8TH1=Y}lpwykhik2(Pry1z4I1E5fbMg$D0CJ#rQt;sfC z9`I0-XJUtPdD;e?4Gvn*mIq#Jhp^DkL2j>n$Z!_w$(_KvlbpMjyd;%#aA~Fq&t_lgn4Lag^R67ZkE13(Q9V=%4_DVEovzlZ5 z;$eta0x1?psuhG}ACn}30H1;_j$>a`qxIWsHyVkfJ-?B2%dFo3M-5nQ^~IHTiQ2lg z(5;oCg2%2L+^q@0JM#;R?#EywykEhvdUj;Cw*29X1dw+(4~;O*JrfNZ91;B808`ra zX$1JF^G~P!GpqTz?T9&ISjzrDw~ss7gv1Pz%TB>?B2;2({l(-rcR*T+YNnuW{X;(O zI#9qB-h5r{XZ_zJ)U}5LKV&1mMDp7J*v|pP)A}<>8*Slg{YPns+hy*q3*fb#F&xji zzVqN~hg|ZC(VI$TJAnDl9Lkz-AwC%xO_Z^(mGzscqOF2S!UMqtob5gzdJQ;^1UK1h z+&GI5VwpH^QKpF@9y~HJ&3LCPSA%17N}&y6{uJo-4(mMFblu{5_^h<{guGklfye_5 z6Wz={Nj`V&16$tMs@}`td?bav{=LaLCtG?r^9@q!V#jD7LD9?5%Y(oxzs6ZuxiZ-E zojXr^`y8%o($ISva5==E*$>K_!(}~9Tc!I!D_h$Zx6N;hjrS2R6ya3yrqrtx#SIaK zL;cue)h&AGXMUK>U)M98+l4{c4oy$ag3Tq#0<6tQUQ2Vh1KU@Ppi2@H6K6ddF4QI1 zhq=(y&BgNy0Z=Uo&y39Kb(wTy0rI$Pe#XnZvZH<;RGoIEBG=XPJdG%;>?P#M=XF{S zeaoo|2AcPpy8S^}w-WCt@%mc%uh|1T(+9rAJji`>hGkcAdG$ES7{f9v;YGwdU-nl* z|03V?-{|+2*kHJZ+xRo7wD^BG5~E}bye_Luk^edP+U}8YuUtg=Op)Qx136q!bH5Yrxu1Y2Ki5Pm-d`c5jirp22#r-;_kIF4Pfa zhnUXbRvui+_ti&Nx+!emwGSdg@Q*I(V{z0iO3tsU)(a?lVJxPo75Jt_PW*%7y8lU(K2(oCB|O zsnHABHvdXjP`%B-gT^sLpz;DX7Vl5Pgmg8WO%W{r2QBTn=1hS<0xe4U&4zMYc611` zQv}7I^*@;WW+h`C|AZuJsN9&stL?C5qBuq4@g-3Xc2HD5P?v0dGSS%oXBUR(7Eo{0 z@}Lwo9OCboEAzd$f*G2;KBE>l0J6=h^RJZ7?j3oYdr~=xaFM7G*`L6N!b*VcGgJ}4 zrkuLj9Y^?3p-1?=uYV~~_wI%+f(Hl2fW|+bqB$IZ2OZ`-%tz;bXuJ2_7y2+}@62&@ z!bPz4tjF{PCjM5s!cDmkHiT~oL;u-_lXEt+i_$?Yp|y2Sc6^F(QalkbT|d|!Gq8+IP5ha7$?&~e z1Rn4jSdnxp8cpHV(<#0;^;D9G&z9G&1~KF-01Vd{(M+@^1ab}MPA7qf*N#$66bg3` zPR*>`XZBWq3Pjc%hHU_^e0xXuQnw5Wcv}LcH4UiR$>jp2A5fFM=({kzR#HlTJx8Ub z7omDK4~~WzKE9BF;DzmXIu1b08-FD6zf9ftB^QyBI^I$)PV(B#ETZQf8kl(#`zcz0QXSHd$S8vO)ahkWcakIhm7`7pYy&40pA92tO)hqBNwC`;vZz_^Pbu~ zGVsU4v}6v{zITn?4Q!Sw%`R2gc*T?xV7lZ8H|6P%nr)aoXL`O}a%92}0^1ZxndcXj zi%q}i)~NM1^Vqf6C`?JQ5v}Un!gZ2R^#JUO2~X-!7Drh*N#D4Fn4K z8}axYT=DmnbxQfD)SHte*xHF$PP?^PRm{o*8u8I>v^1C&F#Hs(Y%bx-H|Z}W*aO;^uBkcJA9a44^+QZ4B&t9teyb) z4s$jL_@EcK_Vt8};{!nzz+qf~%xofm!=w)zTA9teG}srlre$Mog{y3wSDH)uYl^^bDkEwUGu#!m%NqK6Y{7{K-K?1 zXdnNGDWU8Jre){x?iX*IpZXxn_@xf^`2&!+Y2&JERe33eU_zMBBWs@=m~?90)0c4E#tITQVj25;v0t%r7V}$ z=}B@=CETrNZ&;@V-Fm~z?0jX}u3SrBe`dpBWr?QMDKgA#`0>G<&QeGZc;#Q&xlZ|_ z$ZtFD%8)Z05Jsd4OvVmxoh^9VC1|(>jTThm4rATmp54dpoyTF|0=?L$cm{mo{r(TC zDHv-)EkQb6%WtN$3;XdETPbz`A#2PMcLkGgVmw=wu5@p%R!E6)oK1z1Hky3$0)H}T zM)+n%Y0tn#9`7KheZN6YiKJ`ir^%p$3cO6l6|Sr!ARk*Z^B*t^r6+VRvXB$GP7974 zqV@sXG$r%c=f|>~=oKX*J9$rOq-wUj6ffB_KTItn`g3b}3q#5KS7}Yqaqn@WzDGZy zNe-{|Fl<`B$a)QXUX_-Y|2$km!3fv2OrJkJc*1bDRbvJUs;>xEVJwr5Cq zx<1f9Mt}WOlX1J`RpzoW$USIwe8Q0cx3>(b#RfgQ+XRA+q|!r}q1Sr2LxFy%stku5@LE4)H(P=D$A5o{inx!Lo;Rgahw0WyjZ)*0b5ZBT=cv z8BHWQj|SgvI1ofhTt` z+9S=#w2sn$2UAWKc)wH7Gu~Ho;(;$55G=R5TCj3>GG^4`tl3!(HnJJ?AarD|K4~Cu z@%ilKS>AOt5&@bEe2Vq$!I}xK0vaQqSlBF{FaDc$Dc5e};}sIh0mq=8)tMrKk>Tp%pbyhY$UKRY|YV;)VZ_41mtQ_~#^awfjGb znf~Fp3Lok#@Mv3BSQ&@j$R_-EaLc2po^@*?NUFH=tlso9#M$h!iszzm{WfpW*)#NO z69j`kEOF)4OW2_EKE|!@vM*HsC{9Ry=PqocwNiCalXIHNCIg+(^Ne?D5zA^L=eK_qB!3oKLtpgl zqqSWIsnn(i<;5>ED(+0d#4zV9fE=vx1$itdg3|9a5Yv&>;@bm}tm$xWR2PT|<)`sj zXiien*w<_q!1~6(IL>lw`0++Y z%{HOYB1`P1osA;fuhHme1^&sp5)<3TTHA|p0y%|n$KUYRZhRGGI1^GLgL{hEE z;NTr;b3onavMC2cAx^7Oy(U#OT0Yq#z*helf8SMyP>p97mU9kX^4hE-`MLL}C#4?^ zI9s!%`bCzL|8$DVW~;pG!0i1Dpp?r@_fcpH9FlO^?AApH2qP17G0X~ZWX+af<-M)6 zC^8ieHw`QsW)nM#Z!HjB|24N4M|e7LjiCR|QPvN2)A~UxZp>Pw>sy!`eu}S6#d_&6 zQt!Z=!Frk3lzh8jnlV?LRdDl=N&9tOl{5(+lCXMRGs5m7h8VzMh*q3vqr-TlC&#FR z#jY8EpmYLT7xLQ?tYkm_{8g&Obv{~jV&UyH?PmD$y4=Uo)7bB@r=-b3_A7f0gINtQ z5P6Ux9_zN;+RtWJz-z0)1f;cD6>>(E`YwSP#o*R{J|&eYS5?;1b~RHks=o`lx91AD zgR;Zm^8#94xoXyQuvKY05sS8t-14X~%lXKwP*rQYnwW3vQ%22e-d#sJu?dwu zhZGBYM*$QU`WGdpGmXcp$C{{%)Oc^g0d=$5v7^)#v`C@}pi@e&- zMbsclm&`}!lorNFAp>LQG3+<_y#nqcTOXbgduzeB{#d5%qFnYYQ$n(c`rxS7lj*LK zB{voW4Z+`bOSjbaTzx1?{D<~3d<195e2DO#+)vxKmV!5*Y&%MUg+tI-hl$^!HGXqi7uKHS&<9Oi7p;(V`O6;W;C)>oQ zpLPT|TWUSmlPPveWC3~>CQaffE*QG0aOy+WOe8HVquk5U=(VaK=yZ7wymK=b{iXzV zV}IH)M^S zw7mtU^Ss@kKdcq13{5LnHI^yN9n47QA!27WAf6)B z2%dV3n?qSR7mK6>yM5NPP&HdmzvEbJO8O5AAtg8bZtfdD`lh9DIV{IJ#hI)K(ahm^ zvNg}|>qw%$Ymr~zIEJ;U$h4p!5qNCc_%*19Bp!sJ&L^Z8V=7KH_={X z^GcE8c5E$KB+We{@WM!eXUh$q=)*HAmg@e4C~l#o_;VJ~!tWgC7TNm=2KOzKUy>mC zx1OIbo2+o0Wh9B%YNStp-lUIZc_|qdKanHgB3bbfQC*Je zHKRtW#wR;Gn3=82r5}wQ^{URFiTT>I@-K3EM0R!LS*Ek(7P&(-DmilJ?-!p~t>oq) zdi}}^@X_u#*l2prv6?G&Z~zp+dAXa->>`~@&9+M#9%+?Gnk7|*_k~ynU-KtP7|C%D zrvmQVh%qvpTrH+o=Lz?ifwVHc#Km=8bOIEQm%6J7&KN(qFywkN1#0VIo1@*S@N-&B zXI+-7n42j#4`#`f4h9bO$DXtaq|EMKxhgEJE_zpf7qy_Sb~u$g%|-28q;Zb0`$9#p zBZGl9Euj^JYhmZA_6SG4UNAxYHsz?-Lkawk_C-;>%k;Nw3#&n)%@46-8ctK)1r6TP zPE1>%rmm)Has^vOu--u zcM_H!%C(B=YOx>^=7b`4$n&S8=KyrFX~GfpZ%cNKKc*cFx7%0jZ|AZAj8c)*jYXO? z1oAUx8w|@>0rk5KXWC=e#FCn{gljzjoQZ;xn>?knP{I(3wjMkNrXqp|s=F3_=@0{N zS@XNm1_=^1-GhaUg*atP0@L!3?r$!`kJ?LRm!oDKdY64Hu+TnGON9CXdpKATKCzc{ zhWe=nxYpm5XjF3DYFbVDVLp?`VMt(JGUMuSn!C_R7VcU*JX z*=2iNCfZBAJ0~T(eP?O!#w=;xD*&8RR74wvS`D~h`b)07xP*AExY}n|hwoy44($47 zH)IN_*`r$@ln-a^&X-7Qd8ZEjD0S7EpNEa7RhYCk=ut)Yuzek-7f>1+;??=WkkP~f zo;AJeP$LscDm@veO2)ca00umE2Q9`}r%CRLZ;8U`-p(-#>N>O7SLZ_>byl!)K2af+ z9Y*gN0KLz5W}B2m)5(XF(RF=q8*BG536^(=uJn~X;b`e-kw@!e_%&N4K|2_L3p(=Z#*{jeCSw&RfXVOhCsB67+7;uMi!-Nxx)N>-zMTSaKNrfwn_Ta zz&~8*EFx+xD}0YYT;Rb0mjLbPw7`X76%*!ULKLh=?TO^PG!t&ns99B%>wIu4T>u=wjiQu+ zzD3Jc%j9E-T_7v643X*V#-JFA1jY360Szs~<+}bX#;+*ty_V{c z&o;2Y!iyx2`X3mv#!V0_hUv~2hShM`JhV-I1@5P}@VR_9bQrv-$rG%Heb$)@Q#B_e zmikc|b1~&)MZJ%M))9ZiYt-ZO?QPbf`SOH>J{%J>R*&Vc3;AD6*pX#wX$++s5rjgI zM($=8qsMkH@VOD4@4c}6NUkv<+@v98pt54qNu4-+@_QZu^XS0TZ-00WS z*x~mg8Y0fFzC$TQ*M$N|k;3$c7!nZ@M?1W&2Qjv@p(|@TI`8ii?5jNrs9_8D?*$Bd zG1594owgS4dKQY^zFlCvfRON+tBQ4#J-|;7S^=c7u5N!1{rm=td5-muA;7`ik@*Do z6>GQdy`+KlyqGu6=?Y${9^2`|OU<13eeVzA;A2doWJ@ue=)#&zigd|q(vdO5cgs;) zKoRxd0m!zDh&)tD8xWC~xh~4marb^2=Tkf)Hs}6>>`eao^`m+Sne_!@Q|4>qeVB?Q z7$Pm=#8j2&e?Hu9XBxoo0cPe&rvLiri_6#Vp@WXOnG2PAl_SAH`z_I{6TP>ypXeu3 zzW)}#gXe-eIg0=c`l)vJ3}k84E(uGGY!GNxEJTu0GyRP=7gqxPNcZtu;0qcwJlEzP zx85TGHn(|bwnDFYW5@ntYHa2Xozs+Wt8CK3d$x9KS2~GpX534NCleYo_#f%SZWvkP zxTLt`xatxSMJDKsAz}ZpXh(c>T;I6(wfIWb`DuGW*Sd)?{N*E=V|=6eNDuc`4|3nN z@l3?pdvTWIWmnFB!8XJA@26EBjKa?}UXDVNL@rx<&)<=H^jWHsAgALeG9;egAt@|n zc41o7Xx+&l$!xplfoYV{XBnb(l@KTuCJ=0Tu`PMC2&_&}Luvzp-CJl_P@G z-3VCh=*jUR_$TK5NcPX@txPV6|885;{_zVZ#9T`ry|vAC$i#n2f&O2kNx^9>H?p?D z?VJ7UmmiE`?tmt3zxV$wd#SYL+JV+feovECr^Oo`M#8xUpdxb~9k03V+kT^QldV(| z^OGPC_rH6a1mny&&4{LRX{**56+1K?ztjnl|HvRew}HA00>u|=KdUWHv^htsTk5S> zge+6>Gl=)>RaP!PnqamUl}rEux;_>I_+(Ii|hZz-FpT_wZ>h(0+K;MauNX*5G3ae z3aCU65}KTYJ!$UZW4wfx&E04zj&xO287BC|BVP?jN{C(8O_ zf9vHG17NPML^E3kum5~YbS$YEA2?YEfbXWIDk(4R-iI4`3;7+D$UqzSajc-5)8CIg zCf07Kn*j^;N{{u_&E-Z9wGm*UCK%oWEYzhi;in7Vx%_r3W?crvZj|%x(3y7w+7k5U zVs_5gF3F+#&4WOS6gB1>lhdAOdI^>ifGCx0DExNm1xCZ>H_1Vs=9HejOyaLG3w5(! zHcat0G{z&3wDm2gzC1qna1!1oMJ)Lz9vb(Is*@yO#a^}(@(@YK35;`2hry6^8CGs0 z^C>8&Pr@`Jr49c0=1ct#uUAP(OJ9Gu8_ksAe`~V7DmV4*!zynSR?2#OE2*{6@7>91 zA$k(^E6#De=yNcr!i?+H+9@|=xRh1o!oyF_cRqblh zzf}wZ)eeb+YX6KwS7;t%Piv*69sKS9d2W7%KBvtR<%7@L2yV0UYK`}3S6r@m&hn{~ z`?#D;DZCFJ6hTztG7VHVoeotF3d4^Uds&apNN;wGc`$tkQsX)8*rjhg((S*Xp0p%C z$z^xpGqee*w=iiKC8BcI;Di+D;%YmADS~I z;Bv(}UmZXfRI_~FwHEq}y@5jLl;c3s#3OP1+ng)xHdGLj0QOVj;vn`D_8dQ?*qQj^ zsUs|r)8`tK%7DTw!4~I{9(EYrJ+Vg!++yfpf_72PSf3|_0kD+<0ox3KKEl)dCH=tM zlr`9{C2*i$DEsV+J3SmOmhZ!z5>QBJH>%p7@1HbRXaDXsC&DQa5S6=1%xmiJ?*rtX zN`42hq*1o03#tmzc6lV2k6 zg5zn`J2SD)_7`XT3ZrM+XzTUomvU7#fgP$^{wl)_C({P69{iZR^P;Gq$@B-guF$I% zkjUUP2wT%g;*Il6>wF%+eLS9D@{VvZ-V9@`I?6u&Pa|+G*em@MSfbnA!uhk z9YYSdtZmJ&Y6}XlBg!4>ep@1Hs-LHndR}0aKAU+FUau$Vk7u{^A-ZPa%;WqWsZ2Zh zKB=<)RJDe3!5ghIQKgJ$>gO@6Lmub*$y$cGtoaC)#Bu&JNHfVM;kltlOF5!c*;wUz z!}kVjUXGA{JW<@c8M2|}k?aPRs@h2ClF?3z%1gAq^tmrD=`5`s$iWl4=W8(Mx7%_g z8Vm1dFgv2r`^+PzWLQ_es%}qjt9#A1rwH>|HlO&EMS2*5!dvO6y7I5APEK?KH4?)j z0y7~`=AXd@V$BbB9)dwW`iGYtJ#7^~OjBA?o-E2QEHXQrQI*i)3*x2X zwkVmKsdEnvlVo)n$r+#J{3+HrnT_!PZa<{Zsf5AltH%&PVJgKkDdaZY*FRH1)2FOQ z5#r82m0LYz&ZbR6kkK*#CP^VOLpy8XY2(}fnfp58zq+rhDhbw)etxqI$x@y_r1x5A z&qFe3oNs>YgP#*-xuRrhjxDLZ`kDRlIr-qj$6HX;5A`*$%`ZXt()H;En3DZ_trf3T znni(1TEeA$`6zLDd)u7X23TPJ8aZp-Uq%u|W#I3EjC;#&ta-!TR4qyyq{?Zf%EOyS zqk>=7q2rwH(46odz+x4qH|vet?lz2GX2|#<!RFgIQZYkHR_Duxo|wPD~4y{&JzXks|RXCrF+r%~ln z&+KMwM{Vl1vy=@w++E^8)DJ+Rn?(9q8p5isdx|$2U_X@ykY@(RxXJ2(JG&*BTOZjU z^O)YEKKL9al&=DrzP?c`Q}6Urqc#tjc#meuX=xwzk-QEskSrXNbD zVh@=btk!F2z0jB~@sdUk(dMq9u?!{2XC(o?? z7A8xNI{M1DTqTk)+Ui8D(Q8{Cho9NpJny}tD}V1W`U6qV=LwKW$#Cs8<)Jqd_|J8d zevp;*1q#*T4bzsazUuu}aFoYYzz8ci3W$~TR@zuVIp567@{3gj)g)Rf!(PTW={L@# z8Sx|09SywtLRBJ6zX<7)pC+M_i`e z#7n3CEPb(-C?-R{GFZ4L)$TRw(g`PBSV-11($>28S?-*9CbY}8ze2`+4{z@k*KCAm z_eeM*z}Aa9McDiFt=&xERWvr|N~AgrTT+DL!~`HQ!LF+8Y+7t1-aJa<*vXWq?LdnG zKA}}-EDsa9CUD#E@6B7weiAUnCfy8B6K8?A22NbNq-zgTGYjgAeNj3Ft-4L>+{i%S zN08>R!!JAaSx3wzC#iG5@sYcabs-GTb@%JRLsxB4VEYHpIS(I4VQhTYylMJ? zbq)!hl;psorFeovKs*U0BqI1 z6}7)Ft8n&bRbVzzN>gJ$_-%@wcTFH+T~_pBOvMgLcknKmmkshL?r0mxpdvTQkT;nU zSqZ)E8a*O6=e2SH3tJzBkv$nd)2}@iH$U+UX?0Hep<8SJ>2AiJp0dZ~N9~K|)E)HD9 zoiLG4U3<>7p9|LJm#0W$n*ATxV74L0z+{-yKN^S9D)cqrNj;BwJji46W~@9J4tM@lE6skx7D>6-8A{|1gH`NLOSH!48icAHc#o7!11E@`qem#bzPD34^=F_atSKtfC&hh9Ww` zYy;x@LJAO52G`C{mC9^{3G|;3jR!w$5o7}C+pZB+Y*qO$=hFJ4?oXe8RAM~YA|FSp zW@T`C>Ml1Nq*6XKPLZ~g7|{j+-~4id9REz$evP#Wo%sm!(cGo?f|XNb{(E*%v<2WsRX)Wz;veAU%T=fO|>3osP4ReC2{`q z9R&aS(>Tq=US?=Q<=dj_!`;uXiw-S|u$-E*?Vpw~&IEokP}?>49d`UWIdpYUHkZxl zv9%q2GgQ)Mai^!8f3b;RC#%V>tm!7{C?cfPo|Gc`al-jdbNjZ$x;MSxWUXwn*l()v z8d6K%Z&6_$2v*dTR0wvfprdwciL}gP6`2$0cK&R&nnLyn??o#+3o+^XW##Y^_|dPo z>2i}el1yi^NS&aO_m4@tigpDac#OJuP34J3-mxs$9)0$sVn5@I5mkU2q2nOi`to$UJq_R^ZTfl+=NsBd*8ADJbkHL(6NYbWf0K~Pmy1JWfM&U+JQ@N_~10_Pv*i$0Mq7Bu3}hxZ1S1Y?qh3l1p1g@_h(O!cT9vk8Q8lKQYh2o=X@E_s3@;9E~hr@ahTt^ zBCUG+h*DTLE)w$tW#Levg(kz^C>2f;mn`3pO5{`>hq+hMvrBhnkx7gASrQTHLrT>V z!_$}nY(iHEv5z+8&J#h+8#PJ3(>{oE1NTrq!+yoB`}v5wl+}~bm+$aZgrla-_2-qR z_P$gw^CZ=sEo|XR{c)<=*QuY(PHTjz?XPvTW*kQ&vpC2;^;5jD+b_P3&QtkWJ~v&I z9f()quG_F(9;7^8KK+EEHsrwRre#3_fdxu0`Lt9>N@4v1qvZ~{> zy>8iEULZB!P%n|kLC-T4Q|8^C@6MF7nFOoAQFs2&v_lJb7Ph3C7Rx<_0{7`5x+cdu znnhrl`3HP68jR|c(H`dyL}t%qL2?Hp=Nqb;rxJE_8J-&#w{fRu*>KNU@%?HNi3Q=z zJNks~fS-QW20Q28*$>a)cM+Az^G1hTJAWl^8zCdisWbJ4m9^|iJHV>$iAqbdiXw38r<%XPf>#EI}DC9J2 zIFar`heCY=&F|kOmsa@sED|f!BQ90q=0Y#$mo#}p<~RivfR*m642pW2o0O;b^_O*e zwxfXL```Y5v0$I59mQVmGxAPOIMPoR`rH0NMWV#K-RP?Bo)WT4mpaUuRi`8ST)q?4 zu(D0JLRwtzy{)0n9I=(KJ2r=5dqOIGiN}g6kLFmeo#mnj8j#W=j3G`1%z`PxLn7Af zc(t!;KNpIt%E=$zf@8W|`GotSNa80C8(y6C%!VSk8g zSEvtas0T$%11~Ej3>Z@U_B!5@H=mxMEzWM*BBpO~;ZNnMqr3ZH02+%YnM72v%I0d) zCuOd?*O+Q5UYl-$e5g6UUQ=F|=YxD-KCgXB$X{n>6>=Z&Z`jjR*c6~da<4ubi_66^NTF9^~M&&x}QoQdq-b4X#Tw zC7l?YHklri4~=yHf)(43_>2x6sL2gj=e{Qn-CXpM*~*S4W2p+s z!!srWaJ)$VF^2p-pI`5q-r)+v9`3DTq`%cQ8ZjnkTizIb2eEZ$E!q9dyO-PIvetPa z?|t=y`rFPAb&35)T9{I&ZdD}_|I8!+0ERj0=(l{rgQwxr(ei(C-hJ0q=ZbbfcU4ivc7JYP(iaDJ z4EG=DhbjC~3BiW(F!|;M;bV);1gEHl+YMmw2r=OxEhyR*$suu*ks)swW#->rSn?3r zYpE9~&7ZBcvU5?U@847#_?WlEKxZ7Gu0fbVUqV~sp1a6nq)!6g=P-;gbHv}?XCL8y z)wvq2^7DJIIs4zSL1-$DBkTyo)P21eBuAk4v+TC;=2A>T?u{tYJ-cR431wyKL(mY~ zK24(jle0U@R?m-JT^O5vmHI2qoz^q%AN#YE^RFkG?1$_Zq!N1##Kq+H3g2@aa$<6% za^@E2a;vQ76sHuiwSGehLhciye;M4n0HT+)@+Acrv z---7g84v$iOFoVuyufIWSJKLvP}$Fkc>*@T>TJ?7g*1ok6f-S@XD2-0)in|@KU*bi zCz%jis~g_`oTaPbtnyjz`#}X_qq>MIR2LMnCAatpvNg(u63cH?eMzwMiZdX8IHr0e z;_ECcg(i*~)VBBTAUizTbN&?$q>nT7O*`xNx@eI0V1#4uUlrAd_Sp}}9$;i#<#2h+ zeCORt9t?iz*nHYIXj&B>}gQmZwr?4<-F(Z2P2&fNaDKo=vJ*EX0Va8Bl_QSu7ADq z-vtH#bMSw`e&Qg4L0HUhxwfiOx%r^3D;3%5<~e0*aG(r~;%JDje*%0nuYi%@se(cT zdSaIL^K+$bX6e4D*HK=NrLmO9YqCNVdRhgPJv0OgUq|CoTBF|<#^xw`fMegKA2_sr zJVCy4Y;>kW9b)k7?CX4{YG`MmPlJwn2r) z`<#}9Ts>m2EnSJ?#L4oR_d%n8LP*BwVfm??MHBLor6Zp!#om>8S@1jy9Q9~i&(gba z6$TX9sR9{k4%l8)d}W3CIH&w6m16FjaFThindN~y(U5?y^IQeA@%MZ&HeD>Rd+n$S zV9p((izs>>8~04T9ACK1c|cKNJgdzl{UiT5qv~&0pthX4Ct)#_9@BhS(c>!OXpqF{ z`ZDR6fvE1AS8XYLP=s4)i?mnWe3~V_LqZQk)T3WwA=Q$nk=HqpVQa=?f-4=kdBXfK z(pA-myIf=OD#@YIB@5SWogxUc9+!ZB!l6bBOgwSOfb2LIw``0mfIMKwjVAo`03|s@ zBlPt2`uGA_3Ohu#9WtHF@W4-|i_VrzO?R6uKY1_B^F<~5+{0VNl{iMw%X7dq` zmqq%%Ul92N^d<4B2IZ={f!dt*%ak!o6&KP`)IblWx<4Aw$}ZKf#4cN4QE(+--#r^u zvvbc)x0o8&-*9XX3J{hp=wa;GGBCr4QD<#IIEX^%rK zs5B+}W#ILWLU!l%dp{= z1awU;PsC{ms)D*t9qyv(`$_T?L!Slnw1MkEHxHO^{mu1po35V4Ee7ew*a?YYqOi#6;yUaZ`zcfPPb?FU*Q zRufGFdcyB(Im@&=JK!N!Wc;3Nb%v#DPQEoA&z83r9qDyiMw*|uqh!6oh>H^wJE3z2 zMDTxSYYc>07v4G~^!h?3-MaxhlQrWHcmw@8VAPs)W@R2k`zZ{<=c0o&7bjb~k!@8p zx{sx=?%{&)tq)qsV!>S_yXJ^h8Km+;o0C6`XKnFRc{bhc&DpqWI^BoA-dg>V+yczg z{+aR?qi&~DY^N|)^i+#j(+tk5urqB3F9~N2E5wMh%4Yv&VD{_LwbdLjrlJJIcDJ!U z=l9R?_`YqXRpL_{d(<7(`Jikz=-spb>)6Kkc5HJA%$=1yQYucpZHD z+I-v`)+HEC*9}lz{O$!Sf(HeV-WMR;dmq?>2gcO*vw*pE8u#uMwz{QL^B=ZTritrq zF1!6&I^#l zI8umnCwIumF_cwi^~#OsBJYR?NU(X$0W2Pgw!V6kX*r~r3~WmT>Gj{)*8{izS%0Hn z`{KT!g3G2^ztr`m?^tMpMa{-6Niix#pp2Qw4?U@wHNv)kczn5GG${NhD_vJ|!4P(vR;hgsBJFj@6X!8|Kc)?4tfBY1;&v77UC3879YPe~L65xx`S+P|Co+`8V*n@XMxac|`u zJp{Sg7=n(6NnL#8#Km8Ja`rZ;HN-V4JG3=aBhW8GgWuS?r|h!Hz2AYZrtjUs z0C>ibuE5Z_YKQtP?wYtX{peHlC~eQ03kfK&sfPai%c%=Euw8|5`3NX6Sw$)=D5a9( z_OlacJ^+|BhpiX&KMS`yVv9V8l7HRH3*o3{uhDH8lBzq)!P1}r(c8pUyT;a}@Qv!H z>b<_C~Ofyq4X{`3lo1y7Co#7I87phRwNzzAT)1)}B zVE8IHm`V6TD*OD*?$dRSuFYih+`@w;tE!B*?yDbYFS=$yRqSVte^u=r!id5ASX$nT`(%4D|v4Dtukw z`PuGzca&1MSL0K~L$z1cOrf`Z2kfG_45Zd?E|;m@AjDt%&4k;xD8asidyQ@f*4XSL z>}RX$0~>n15;)jsd-aZkLzE{Y`(Z8ZTNMx<^F^$wj_@fO)L&J_#0qbg*orjxWUCnE z*J+kBW!cI8sU&zYhPrn!WoK>`!L?H62ZPYR5Z+3s?2t@bL%ter5WRy=g zopcpG{*JEpK$SK801J>9 zvo2q8@o%!_e%YU^(%rjIXr9O;VTR6pD5(BcehR=-x-cJ26_?58zL8L8ka&cw z->W@t_85N%*vntDg~(bSkZes{Fp{H;#%yzp;d2GIE5uQup8vLD_4M2;%MUZSF@UAL zID@(NfEcp%y`xx-z3fMYI;7mw=@4z9zCSTE^qnu;z3MqvlxHSo+|llsvgk7TGUt9# ze{3OpF8lbZvcTGLE0$Z}i~~J!&n||w#L2hZ9$iij>;8-%b#qVMm|si)3(|MY{2M#* zw&mbs?2!YUzeg`g9BnF>Y(7&E(E|g7Fc&H^PnYT%acV>9GCVDksHX(+_%9eP`-|dA zj+nW$g9~fKE0!V!4%irg;TB(g)}<~((Kvk<+DNQYk0#fDYIy&+iw*6i%>iAda#MFR zQWJFEI?7Y;>jD=`3csM)XzEiLvt>wOag5`tlD$uNI6Xf4s_E$KrYEYgIiWluyPER? zP;K{QBu}ZI^YSAj?&U6r}~Ugu(&so6W4o(w|M!OtbCl|M{tv-;VD84l`% zRC?54)A;6BCk4)Qo>EKY>#l)WIn27-%h{y;?$^OA@+Dnkt15_{+ zH|bvch3PtLeW?_y#LSMvYj(Y9h=dv0IDa4h(d3JNFQ1H)cWoWG(g#axb$me5t zf}+wVgEh4n8jL0LAx?Q1qk8x{fB5!1Zz|wH z2X+)OVS~R6idBn;4k}4HKXHe7%D3*j zuqrL(~6s~Ddjnv?cs-mHT7)t*Zfgf6WXBO zLf*&W9{!nnL><6J!#wz`ZuRx=Vh~V)Qn|vl0fJxDlo984c}cVXOahPSB?YQ*GCE@S ztC#J|ThFj^yqt(zGYMWtOG=v^AGwxf1?T67o3)r4|>`8_n@6(fWipr?9}I!$n|#IO>hKJ?_{p zE?K_ zM=pnz$GLuR4F$Z_uN`YaHD*DSJAjH;k}Mf#r`orgA zIN|jOR&6b{eSo8Ao_MEc-gPUk>w-0?tNPGws1HtL9|go}%Rv8R`R|!j(=lTPVJ`JW z4F3VDxFpy#4h|duE$JJzf5T6*yf;!6KuazV{RVC@Us(inS-LDt)1p~d*ilCY7B(H`_O_R@MZpBchJzvh!<(b=(;tSxn z1%C(ci=O~LwY>o4$;|unzXYa#8>asU<;qM*&Q7>%I~Fix^ELiE!2iETW&b}D%hzob zh0lW};A&DeqGY^&o;NaJya~zQvPn%hz5sms8czcJ-%|N*on%;u14cv!kjfup2I~z- zp#Te~kF`gdxA6I51lmEp^B}-|Q9NrfU|Kagu*_=c_ln_quUiKKh;Bv$+5GU!aXIk) zSiuRvT#bd0+;2pu^V@K@V+=)qQ0N56?f1`5RK5N@}LNCyFa|)US(2*QNd(%O#toEucG#oaE}1Vw0NAvkJI2C!vP9+JX;Ujc3Gl6Y(R=Gq z4+L{4HY19sr=4+b|79omFr{$Q+(nT0CXYVDIAz zu!cmHnF%&trv1eUTo1(~SH}fVCOwhCLNNzDB-S`ru^#aDpz_-xu9YjXP?oTE+Nail z;~cM_NdH$n=R^PqKq&J#|V55``rdH0?L zhvHr9g|f8Cpo1{GsYinNR15|YAQTSQ5C?0BI@Jp~6+8T2o9S1LxpiA-x&MW9YgS{f z+=5>2#$V3mPffQhg>zI`rhN0*t69_T_$&|TcLEv|Z@4SoeF0b9a;>@GV`AGDqOG^* zwCYqSV4IvdpJ@!NJ|Y(X2`^yE+LLq{-9;Bk+DRo#ou*v|3=ZVvh!0HqNmkpWUd9bF zEH;NBiVci?7uwCz6o}1*K@(EAa;z=uv|f_e#aI!YY{}K@7}}H48USYe=30v@#*)a z15rlcQS7fS8Q|gTZ>B=owijbl@#wV?vPtF0c`WGsRC;UL4T(D*IFLF)8ZL!q4m*}% z3X@)3yOmj``y%AzEVARTi8iV0v#yCZ%Qlt!Db&tJHcki8wB(6Em$~Vf<}m9|fo|L~ zZEN(W%Yhf5i)I@YpA>1SQ<*Q~9QrxUDnwcYVs-#XfIUqKh_&C@(9E>Wv& z&;_FL&zN?v12n1^m!sVRbC*dp#!8?>e9EVLbsNpUST);s${Qj*s_dJ-lbXHwsbxvN zV@2zpjfba+fX$c0Ta;`x_ZaMotKR)A5a%?H*EPQal(^QTsH8H>#OiOx!#F3BwYw13 z=-ORN&ylYJvqF-DUn8v}4z5;%W+Z?ag~3kygMjYDkh?DA{)MuOa$*V^@+R`^@}kSL zV@EjS&zzY6lNs?{A=yb5HG3n|&hY20&p$0m20wZ@@F{MU%?EFFqId`C*7GEnIh5ri z%dWqV;{1os@DTJ(f6;A<66>!{-~;ev&Gb0-1CndW|0LHKJl+eXRd4L7-x&`qA76;@ z8y5Mgv+H>#1Lc(kx;1~EaL0^t*H8T+yz05ZnHcox?b`ada##`}$Uf=YT~J$eHvTO}&b9-~rNw)K~;wjf&P)0|hwX?FQPQ~zcrTW!_0;q}9BnaMug z7rMpi!t6jFwhO>h;0hr#5PzXqPj<(D;C=(zaM}_@aT*ymyz9L3kV2bAMi`=PNy;Yf zZ|uw$M3h%UYaoJ}H+XpKVfh+qewXO341~!bwcuzoZf{p{kgS%}y?v0=tRqwCI^O`# z9`6gD171k(+}$Tw81PWKe6Lhe@jZPJv4u!t>hyK(!~EFW`_{Jy>Ods7>u%3h8AC7uux$CCT44p)Jqn*0qNn*lzh6L4IcNIiUTxUX)KuJO z%Y{t$7u>yqtX)!O6~nvyW)!{Ja=+zlOkY#TlLZ^4uHnf=efC{$t$rHHzQAt+Tyr+( zOIoM(=J}Yc3_!}C3COT_9CL^Md_dMS-UxR&ctm=Yg0O>96-(8%8?@WgK0=pb&-m&a-dhZb zKWXxmNOxajX@P8>gHbzfD~H^@MtJp(75!<-KUUA{ls`=g6#*-wSzfXS;V3}~u-clc>Ls_qHWlRlfR3=+2 z<9)ALPkrA7al21|sF@cpmtA=lacp-T`yr5LyLz~64LN$dLJ5;>nuWTDmsb)9DGa%J zX);soA<~(%aD@AqsWw}}#Moqkx-Lw_$F0&FO%$H#N~F~b4= zLE@>FrIHrKUlewSd8w|xi$Tzqz1o;?^ON^gjDBxM%!?Bf1T2TfW*iftq~Gj-1+lmw zJqzx)D{EQvSL`{jwM;dCrp(BJ943AMEHnMHmZfEcXfz&7bXqSnnj4}MT8OJa8P<1~ zB{pE~SI_u4DHW&OFTKo3=g!nK@_RDX+cXA<0IpcAotVGz53`+d{?;!ITfZ!mqaiQD zTsJDoge$Rx*vkME<7uV}J{NGYsL;{@%azE)cc88{t_Wy1wUXu?F`?+IX2}BZh3g4k z5?tclAYnj+C4wpIGMZ`)92p>;N7M|WB_wc#N#xY_2V+A~&8KV4BvDTgO8Cq1Pqehh zABS1iPa%s~@!?(xs6sisW|1g)f`ld+!wH=M^FvEfxB=ehj8cyDCmO9cJ|Eo9OeU=CH$pMU;GUSJg_xjin^ zJ~tEtN{zj^eqS6|{m6MDNV}pYLBjFKXd{Bu%VguYIdrS&eO_6=c#qG_pl}AiEv#!A zS;}kxv*Zi8Q=~&=331%Q*(r{{gkvc~Ins1p)W!1jhVN?Xn&)T6Qj||lTfd5BxU$Vn z%v;eig)IXW2?WfFME}#AKW8nQI??};oWF3GT*a+~N}>RIL{cdHX_^BvRqF}_rw<1Y!z5$cJUjLxREt7MhyOpw`Zo`S zcqo0m!Giem4e+;$tlK->Pxroq851+s6D|OMFT>k9rm49(7`3F2(>y{-5%gP^f;447 z9MJb}z+xQ}JhuOnQMFWzwbyQv19CnWegfy*4B4cfbpIfl@FzY1 z8`jLvND)Q`Ut8`1oowbn5l%x#fxnRDx+o2m$v5t%&(GKOX5(YPv|T}VMO+qIDfc_X zo7J9$FBPayep*k`cYW+VUfgEKGv$(WRBU-YJ%KZ_EWt!!qby_l3@($Oc&`p~tzg3I zE58BuR%MKzyhg?wmJUOk=g1bB(?No1BKk9+NS7S|&(W&pW95;H^x&3k{cI6;E3Mj2 zy|dV{DX?&lm4OLb8zTxJG!;%(jJcfc3etwRrAT>cGI86<6f8ujNh5cyZm>Z!@M za78rO70F@uwNxBeJTZK$`~cH+E#yoI4ZLs%;yl+?d%a~2yr|Qe1)i@v2gpc~OA5fN%fk~q3jMb&fGAX%!E?lHL7iDyfZuBVW+Ir4>X-eiu-aK=oHhqMtC8lMK2G>uB*0;CBKWZ0{;~vSx7Aksc*$O zf8iz!^odonB{wF-Or05awXjB_rR2T3s@*ZoXmX4yYji`J^B@+9#nevOhN<&xT=_~5 zbr9w*SPKzS$g9M__nTqiU?5c>T9$FSplkLBVLg@UrCspBI-Uf4)*#7Sj~rIQEnS(K zEtso5JAJoKBr|UrD=Bhy1(B!|r8P0FcVb*+TYBlnsDmy`I~w9t!_lSj&z_$Y8Z-bk zQOUa}#wHBDv1?-Wvpr8QT@gAR8%eG@Fc;~SzCL(0<)D+15W`qyMAlHp%M!!y|GRmH z${I)aYL|0}?HRC0FM4llDg?M8kW8Q{%sL{|Rl#$`fduBp8nsgjzvl5r10<797Gz|a zf49$yXi#xCumjEO%RZBefYx>WVv1cfx`ZbbIsVG z`H?>~=g)_L{=ECFV#nMW6tWqE$-c6V$P& zJYY3iN7K|U}flSK~^a42rUL0-^Ec%6F`803_kV) z${##J{!~=JYPJ6kK@X!B1si>~$yct2tq@PW9M-u<@Y;ECFY+fAQz0bl6Na83w;dx1 z$ytqU5-CA1_6~Bkbr)te4vJZ7V}^Pe$ErcsuDc2s=ie4%ExZUjcTq9|ci&9*j}fACJsB zB?=%00=DsgXITAKNjRfXUe(e89AqPZBPUzXQr-V6a#B6;Kai87`D=il)Lw|)!hF>iWc8T5>1OY@^4~KXWh#0 zlU&U^)ESs=>!7>Q*nvVRoZ^;Mtnpc^ko($7KjP7j_h`f7Csl&vag1 z(O$D4W3|?x?hmfx-xFScP}@do=kUHJ6&NaxX*j9B+v=1hEvz*6tTQ*%H~w z2T2sQR;py?sD)!O0Qf5f0Do0~RtU>%0Rrq23)xsr{ufJAL*ycZ4}7k~>c-us+{&N} z69basg&iN8dY(roK~a+f7)brIf&M>v=vFY$7%zIOcOw-%w99hoL1*A!N|IURgMCl! z0q2yv=?0JY(_733svfE1g&JZ^ZkuMxf6!tL%tEqFoz=5?{?tluE;t2_l_dWW5tN^t zHb3;XR=v4&n%^Ai3J2Pg{X@?}Sv_eJ@)3;Z%o`BDVV=yurMx=W&Pj^kJib~t_UJuV z#QBtJi%Sa{?Fmh6{P8zuN(((2{(Jq83vXG6bNg%aa6u9!#+1PQ_)@72u*r2#h7Ymn zr1?bV{Km;s6RfX5>iu2qk5dMU7dYZmi1*;2ovDTQH&M;GDodd}0pNvQbIn?}YwC%T zxlMga#AoV1`tBpOg zo=%>hb#q?%4c*)|xyH4- z4ydONzzXPcj6lT`V&xv8Nu_rsD%2$OST^AlmXcrUX z`)|F|vTnJFZpB?6Q|J4~{yL1~_|{B01i1kvmNm7jmqD!vGC5MU=uZ<&lN{+kW;fbD zb*S3-Y+W4J)nFUK0(@TpO5Xonv`K<0$1E2`WQ4YA>z7}4x;xg8(pLHK;E&iYufJVC zv=;%nT`9JSExs3xo~CX|xwQYZN?t{#R`z?;&T%6%T82~hvtk=tpqcc9{5&7KiKY#) zzLTA1^^WZ4y1{I-e&7ztiwIT;MK|a{GOuYsCv&fqR)bXp0K6U*{UA51Vvs%MU8Yc~ z{1*V@bTbhYOPWjbgYBM5k$fcJlLD@}&?F`!k2nddr@ZZ-ooIi{0sbJBeR;f+N}}7% zRz>vga=F?WT87zG1PeyXXlL;vMY&iN0mo#jTId=;6g+nOTYwQfc7xL2(iLr!(aGNQ zO<{n(aPGE2lI3Z~<#!{rk-V31)A@xuI_K-Btk|~c(1*sg+N0$$PQLgA_t0_V;)>R^ z!MEdYkuBYHSVNwX3d1*DJW;Zg<(g$2Z8D@elChu@5atCJPsComM58AdK~KVPD`qA{@3}Fq^o=6WB`A% zBF5=VMTybML*7R(d$5_kr ztpc+`#S`N+jsn~VDVH;jGd7}DB%(7F)Q_dQ^2lxC7e`~2q;V^UtFcspt)5pn_^`#Z7>?||oZLyiyqmv< z*a4T0?O&T{Rd(yDpTy(s_N|vUyyk2-o&NjtoC%P{8K7mYyC=%S&jC*QtN>n0Cb{yo zRcRe?_-g8(7vI6FheV^jcRn_IUs}ge$X@36-h0MAu83c&))dd#emCc^=HzYBYu>(- zI_>_wfT-=_qx67@A`HBGzq(u1*kZSAxtCl1bc zi#pk<{>&~o{`9gpw@RzuO#FTJ!)Y1sl>$jeE{LX14ouya;NFoSEPvnVu;Ek?zXRZCd5Pn@GcS4z<1(yICuu+Ne1>hv%_& zjLc_Eo@nE! z>r22C*G~(wm{-pIG&5Jbd?BymeVzCdmnCw{@6_Gc;>9883%tQDTjZz0c1ydEv)_-r zc=OW1-{SWyr6&yA=Kcen4=2CKZNb5h8}rv~*ZO^)34NSFN^2VAr323c$e zZqLe{v$~+iV>XL*dVcbzJxz8Ub&bB$JDel!Z-#Gpt$o=sP-0_@Ufi72e!E$}fuZ<6 z{4HPiSN@|dvaaH0Q}WjxwY~XbdZ5gXZKs^VS~U&VJbry8Nuuso3vXuLPSx%$pZGCO7g6_W0j*Z*COun}1Pjb}D0__0cS_5&d!=V%OZtqZMIV!1Ybf?wq z$-m#l_tz{qyP=UExc+<*H4dd*d^zJmzSEHo(~k=N0y-69efcGeCT#XrVsaDhDOkLq zICsa@y}ehI1r{nKvnE*0p6}*%v{LSA;jN9;ZtcvQc|P#k$m=j9+~+^abf8q@SKZE} zzz0?H-0i^iSWk*2NC6ZTg7ai$m*(FnUQ5@3|$W}tlL=9qSx}p zf6felPqU?S3l_UQ<&yj<9@VnDb?SEDzM84E|5WC<5d;?fd=w*U|6J`3CVhxdR=)a`#xJnSSMP-()C?SRUwvcMHhpb;V; zmTZs6<)@bW0Wa$P0^INonpw|XaWL$6kVz|Wm6hIsXJ+~PW#9i2G~?Ck&YsC_t|a8t zVdo0oy$4(ag}ep}JVpj2CV>`ZK{z<>HrWhZZUwv<1vEr9bniA9T|_myh-!2Z)#xHB zk}gIWT|_myh-!2Z)#xHB=qdlBi>O8yQH?I58eK#+x`>Kqm!*s@qFOh)h-!2Z)#xHB zlwEqb7EvK>|0C^uDR2u)7?U;j4mgWuQDe zL;HO0`C~ILI=YK(C%>mqkODh8y8EXz9^5nZw_a~ib)9_Nx=9|6?9*Ts`Ed&Sn{`F& zmzNV?eV=*}k~=cK|vh=gAkJPK(oS677fk#lH*jm4omyD*nO8NEiS?KkE-9^zjnC4KK(EjI9i9a;Qh}ce~0)-QTFq{og6!G>cW{{HT%C()&I@ivSu>@ zX?(neJ?ItzvY^!9DIwZnp0liOd;-~piy-0C0H)Nh;TQ75wH|Rzc$!;kI+G`&K;t>4 zbaXZ{SEGD<=Q6>9ZF5CFt&$+=4<4>9kd0SiwneEN#Y%M=`+Kh9=Rj7Ts{K5jeSI;j z`uy&Lo~~b3?pC^OxpVo6Bhsxjt>WZ6`=;*j~-AkfhDg_0L!1i7yI-6V+8`@nu z+eF$P-j|9Sf2>3FWSS2!?~x1&O@Y-;C?|N;i`w&Nvk`Y;nTMY9@B`y(ObZL3Qav?u zj!e;(xxp~f@gQ>lcXY?+HFYnh=YE|V7ENb?RKc;oE?y3#{NWK9c?rmRVY|^E4^Y-s z4me1yGv0mhZkqRfbLedd;>$y!r3NK`iH~NRf5t3-{?&3}QW)ljjPM;E-YKWYNbQDW z&8CdB_(4tiW$pR(?>wJ&vOPmh(a{b50=zQ7BS?#@Jt##=WIUVuqB12Rg@;Tt9EAc zAHEC6m%a9Za`VK0Ywk(Bt5*W#z0)l>_^7?vvUDh9MXkFJr$9NHSJ2qGmm{o_CulSZ zhB?a1@wluLO`i}L1d;2-HQG7&HUFJwDdn$HrLE1R)`Nq2Z9gGEzhZ8ls^f`cwXv9^Xx*sb)xvwNf zw9ln17PTfVnm%nR(PZt%NGwC&f!j)8%(hmWY_OM$A; zZ1O~?;g_?iLEwzJ$bQdt{*XXKp#I?l+GCATn=!ekAN+a>md!#LQa^ldW!DV;!igSi zRSCwqV>t>n;>9wTnC=tbs_$pn?3y!1Ta2d7GK3ArsXRx}V}uWxc8ecPa5{J%Ri^?0 zfWFO!;A4GhZUIC(Njdz>s8Kr2nc>Xaq1Ntt!gbhc zhT*_!e*yxy#bUj>bLM!h@@l!paAdRbD_FUCmF{v>S{KstG+jxw3us*>V@FkC`fA30 z%h~kd+<>9Y<7-BCbm=@!pC+IbVtI%2deqnHJ?AD25G+Bsh5y6%AU-vtS`M*WnFF-UU;;>D(c3`l zop6*zd(t2bj_zh-i(U%yYH3+N$lb8S9|brdcE%}6D`>SEltRxl%`7amu{`xi-ykrG zb`RCB4Erp#{?44ml(ziUm3$`q43J-N24;1r`8?7dL8&eh6Qh4X{1_^MZd2SaRZhC! zV^;F8o6JC53xNx=hTW#TGTmY@&Gj-Pjk6~)x+39HMH+_JoZ_UB2_)(lf9u3`a0 z_Dyf;iuG)xAn~GJD~})pgmXDMIAAdUDnvNuM+zfB{EdfnLsE(rq)1=uIE1g6$7d?h znKzEeTE``ZKwFbL=5+e?T*sT0->iSF_!52N&81b-MGTkK%Z)NV#I0xc+K>0e9)k5A zu4!KoU46_r!L)Sx#+w0I@Hckw3%-@Hy*iKz0L~n+U7XRm7T8dUJ{f&^*ui(aJnod^ z`y)bs-uLnD53UqDsG6?(x%Sc$dOp-=LF;0x<+kHAZG`^B>^ov}YcbODq#Rv^(#}7G z%l}+={BH*1|Ecdz(9dob3F0R{ZL% zI_uifEzG|y`p3IhCx_B`)2ZG2we$alO8b|)HKvh}p3V(m7>Jr@a{tY|n%M7tG7h`5 z{M(io=r+xa%KLaLe3+)>+&eIyd~MFYN<}MAVI@hzVZ(z(`!(vvWYc-w(~vM&+FSu3n}34IULz zpvbg93nH|aFyMI9U(e+sgOM|t5po}b0%q`y8m^e#xaORGja($EzLtx-Pbipd{GW%Kn)VOGk?yKZwIbmiF6Cb4n=g(TC z?60%Qn=CP>ggdT;W1(6bFpWgi)e^DL5_rfY#|5-AG5j9SQXIR*Sm^2~Gql+(!Y@4b zp!dVsVX2Y~z2n$!t*|!ko=c3wQmz(*e$MdcYgHUsTe^)K)L}_#fxULDhn#3bUDO74 zpOQ>Gf)7;D{-`|eXsce&uu#&>^Q9ULj# ztons$`5uDLGe`ky=FY`%4+A>+zry{)a=4Id_SqawWH|kD5k=|Uiy?0(Z?+B?~)F_K`(Lopo+2|@t{tM4Qgfiz)U+dgq200Zsg zGFR`nL=%;>k%^RhyCzffsykGw%E-z~QALf92yi=f14F$BgFo)sVYA9eJZkDLV_KxH z)*UfTAu-sjs6uMw#`Kz$7-1IO?fSU6GB}9^tTwt-TXmG;b{;)d%OhfO6X#wu@z{vG zi!&o7cVj)$Eh+CPP@^(z-O_i7#)DUG7f8OEmXOMW$fYc^W}hmb!~G?#+-vzoE=oQ6fLZrh5H1PrW4usWC`cqM-QTy8 z+rPIF<<9x2VD(ViU9b0r^P(wA3qB9G8%#x6)p&Hx%QL5UEV-(V&Y~`j zLsFX7*tOEP>hzm4hC;+55WzZ0@9T3TlriK-t8{4=p+`?uTAcu_2Y<^_H!qqhi5>FqLVt|1i&! zyxxTethiQ_)zo_S?;V<{ytd?KT4)N1>xw=00Q2CNL-^Sz9AM9Vg$9=asN(G_5TOyK zBlbyHOlD^r{sG>>EoWsHbCqg6KamkyDxEcWq*eYp*tHRCvZ3HKU%c)3=-^zq!%?IE zuJ0U6@tm9HE{x4@RrJOASFwXtv0K4Un1slet7A#uUvMfMKc? zclV{o^+$D9xnd8h_hER(ERI9j)(k?4y{9)19RX%Gx*J$H%cesL^~%Tm zSNEFEz4d3CHJ10(F%~$Fe%wQ9>}qh`MQ5by?ivM!KfFvNx!wG&u9;9^+HO71RPwN zTw()4-0rB5hk-FG^Qf!eOZM)54i`M=iXFpuXRZk%;{!)Yc1%-Ww1NR`SQ2w~LPOiekw zFMuiJ6sn(S3oX>t_T66$oZDd1zB4ZxPxzzRnS3Oe(~|AXRJ4-75SY(4xX4rGq7ZR= z*Jx>*q^S_Pof_tOG$%wV*gNd<0PgL`n+AJKD3y;DR`vysS<|0xW6K7#=*RjzR;aPn zQJ4-5eEn^Kv9ir@=K+bAnh|B){c>MVdv7Ztbf~qgP-l8?mN)iG%F=Si8;s&H2e4 nWy52_hnNe@|FM@u5 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 diff --git a/deployment/B2C_Docs/Images/Deployment/00a_startScript.png b/deployment/B2C_Docs/Images/Deployment/00a_startScript.png deleted file mode 100644 index b8e5f0b54900b6c16c88efabafe4b97e10113567..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3915 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 EfBhfiy8r+H diff --git a/deployment/B2C_Docs/Images/Deployment/00b_tenantNames.png b/deployment/B2C_Docs/Images/Deployment/00b_tenantNames.png index f706f4f2029f9d0df952504d5cc52179c195ef24..e29ced5a8d8a1cb60f396ae4e9903d89fabc29bf 100644 GIT binary patch literal 7409 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 TVZ_UyGKKy_Bk(6Jr-=UoXEm=f diff --git a/deployment/B2C_Docs/Images/Deployment/01b_LoginPrompt.png b/deployment/B2C_Docs/Images/Deployment/01b_LoginPrompt.png index 9eb2837ec7fd51b41dd315b1dfa96665c76b4f3a..e95bd8f721f58a239b8cd3bc2c3bd8af1ac27c11 100644 GIT binary patch literal 7014 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 Z^nmu%G7XMd{#8jC+yUJ#xb^7ye*vr>Kra9Q diff --git a/deployment/B2C_Docs/Images/Deployment/01c_appName.png b/deployment/B2C_Docs/Images/Deployment/01c_appName.png deleted file mode 100644 index e1ac769eb1e2527b2a0b1feb021fc18dbc0fcbcb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12985 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 Yj$iHBmp93~{!}T+smqp2zyI?800@Ih;Q#;t diff --git a/deployment/B2C_Docs/Images/Deployment/01d_secret.png b/deployment/B2C_Docs/Images/Deployment/01d_secret.png deleted file mode 100644 index e671d07dea53fe8eb14af4a1fd48929580c8f663..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22705 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 diff --git a/deployment/B2C_Docs/Images/Deployment/02a_LoginPrompt.png b/deployment/B2C_Docs/Images/Deployment/02a_LoginPrompt.png index 1d0e3b7b0d1fdc2704ef84990de4a1edf829fb2d..bd16c5a6d6d1f757d48ebca76bc9d9715c0a922a 100644 GIT binary patch literal 7118 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 PP5{4K+gnv#xcBfMqH|0q diff --git a/deployment/B2C_Docs/Images/Deployment/03a_nameWebApp.png b/deployment/B2C_Docs/Images/Deployment/03a_nameWebApp.png deleted file mode 100644 index 7e825eed9af57f73e2bcfe49077918ca23139492..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10349 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 NYisDKm#RLC_&*Zmgu?&; diff --git a/deployment/B2C_Docs/Images/Deployment/03b_secret.png b/deployment/B2C_Docs/Images/Deployment/03b_secret.png deleted file mode 100644 index a039eaa9fe6f22cf4e07325febddf92e506b1129..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20361 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 diff --git a/deployment/B2C_Docs/Images/Deployment/06a_namePMA.png b/deployment/B2C_Docs/Images/Deployment/06a_namePMA.png deleted file mode 100644 index d4e733b04bd26e4bf1b1d2c350a02dc8b7178761..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10799 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 diff --git a/deployment/B2C_Docs/Images/Deployment/07_1_fail.png b/deployment/B2C_Docs/Images/Deployment/07_1_fail.png new file mode 100644 index 0000000000000000000000000000000000000000..9c9dd7a76c87efc6fe67fdf8ff75c5ba146d8313 GIT binary patch literal 8545 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 literal 0 HcmV?d00001 diff --git a/deployment/B2C_Docs/Images/Deployment/07_1_successful.png b/deployment/B2C_Docs/Images/Deployment/07_1_successful.png new file mode 100644 index 0000000000000000000000000000000000000000..30ebee66826805dc81c423907dfe24bdce2a7dbd GIT binary patch literal 25719 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 literal 0 HcmV?d00001 diff --git a/deployment/B2C_Docs/Images/Deployment/07_2_successful.png b/deployment/B2C_Docs/Images/Deployment/07_2_successful.png new file mode 100644 index 0000000000000000000000000000000000000000..8a3af5c8344d139a817aff8e9c44e497d16cc3fb GIT binary patch literal 21902 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 WPKp*ipP_E3(wG`q!K(~hG5-L=Qe=w& literal 0 HcmV?d00001 diff --git a/deployment/B2C_Docs/Images/Deployment/07_failWhitelist.png b/deployment/B2C_Docs/Images/Deployment/07_failWhitelist.png deleted file mode 100644 index db657e6d48a651ece02ac2b658be3f220f660075..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40189 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 diff --git a/deployment/B2C_Docs/Images/Deployment/07_noFB.png b/deployment/B2C_Docs/Images/Deployment/07_noFB.png deleted file mode 100644 index 3bad988ca8a4890f2a47fc3f220d273323b6f1c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5842 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 PQ(wJ@M%pM%$2b21N?~)@ diff --git a/deployment/B2C_Docs/Images/Deployment/07_successfulWhitelist.png b/deployment/B2C_Docs/Images/Deployment/07_successfulWhitelist.png deleted file mode 100644 index 556c5470b38b73b3c1c5cda60bc74bd70d4b13ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19607 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 kyoceuD%&UHx3vIVCg!03)h0Jpcdz diff --git a/deployment/B2C_Docs/Images/Deployment/07_yesFB.png b/deployment/B2C_Docs/Images/Deployment/07_yesFB.png deleted file mode 100644 index 76d9d28bccd2f369895de6082b538766ff343520..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8825 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 r$X7p}y#@NxjR*e*cvt%x literal 0 HcmV?d00001 diff --git a/deployment/B2C_Docs/Images/Deployment/08_yesFB.png b/deployment/B2C_Docs/Images/Deployment/08_yesFB.png new file mode 100644 index 0000000000000000000000000000000000000000..ea961e398ffeed5a11a24eac9f33a5661da86d3e GIT binary patch literal 13794 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 literal 0 HcmV?d00001 diff --git a/deployment/B2C_Docs/Images/Deployment/10a_time.png b/deployment/B2C_Docs/Images/Deployment/10a_time.png deleted file mode 100644 index 89095c5d0edeec4619275729b95cdb2a5039822c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7487 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 X@+m$^|G8go$6qv`>Z&1Ct=|0~-?rOF diff --git a/deployment/B2C_Docs/Images/Deployment/10b_error.png b/deployment/B2C_Docs/Images/Deployment/10b_error.png deleted file mode 100644 index 781d355e28ba0d75bc04ca13689016158cb933f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19679 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 diff --git a/deployment/B2C_Docs/Images/Deployment/11_error.png b/deployment/B2C_Docs/Images/Deployment/11_error.png new file mode 100644 index 0000000000000000000000000000000000000000..09b510d4094310f15084698fb36b2ce086c1b760 GIT binary patch literal 18415 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 literal 0 HcmV?d00001 diff --git a/deployment/B2C_Docs/Images/Deployment/11_time.png b/deployment/B2C_Docs/Images/Deployment/11_time.png new file mode 100644 index 0000000000000000000000000000000000000000..be2f2d322aefbe57ee071aed09d870afae5b0a39 GIT binary patch literal 7851 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 P%v2C91I>zi_7VRBbaYwT literal 0 HcmV?d00001 diff --git a/deployment/B2C_Docs/Images/Deployment/13_secrets.png b/deployment/B2C_Docs/Images/Deployment/13_secrets.png new file mode 100644 index 0000000000000000000000000000000000000000..6599cf769551289eafee672d061d9d7461c12da2 GIT binary patch literal 27873 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%0DfK5Jc?iq}V? zHEM@VlZN~Rm`|dRj1*?lp+`X}pELdfu!)A|*=t2ADc9EwOBeTFwlczrhK@U{x?~dx zT*=vDzsUQmf@M!692ESjS(_yie{F^NlD^d%v`S6EgU5w|>6|ORrGtRf3a2fm;Na&y z$NkZz)%((SHlpfhAF5b^gO&~MP!h!JK46{rw~iifAPlAqQIYp}D@YVL*=% z;;>{PJ>_QZ&%^#zQ3EB!k?X(tzc7;|F~68eo3mN6q=$&f$Ld4hlf*c*JVVJ`V462e zAGmBp95H{LpdIk?G_iXAQ1x+ris7S%ZL(RvgV_d+n|p1#4@vh1OtuJbDk1tmYP$(=Hp_lT$FXu{)`uVN*`aP$h%Tg zNpoU-E}U7$&||A*E^#wLzO5*k^TxW)d}7aw3t#B=dIJ6101ZH?=z0GArF2cU===GAZ-Uv+X8$uMCfN=J#+QtVJiTcxt^$|nX; zlNnJ>oEZ4_kpp8B>dlDzd_RQE!fN%YYzwuB-S#p+q#n|P{mGlIQKGfGPSJpuW#(jn8dkXtxFB!F{LRP?#f?p@XafC0w4 zj|P$vmIe)H7$Y)Cek&n+mR1-qhRJ10MynDX@^@$uDPsD0dBV>B)!LayL%sihymBwy zvZO_057$;S48~5D5F%+IvW+!cvXo^kDF$Q976yfAv5T?|(q*!YeGkdLWob}j`@KJ- z`gZT{-rx84{hi+*ozt0fI;Yt_pU3<0e7;`OW6wA=EB2%!HV3k~J*MVz8@HZUuVuh* zKQ{#zg7n`&TQcmep=F-F(8}3gnwU6d1?vxQy?BFDQM4)y4S3xD^~ymp)zEaW6p?~F z`RjoMR_aK}0)I)ukQx1vpzxBt^^8lU6$jEUyMHc446@!y&zG`cO00W~13tFE5gkgt zR@Rrt?ZiM^{MtnD;~Yw6hSk3?v^|7M8XC;Z5N@Lh;zfAxHOsVwWlB9HR5AjeUw^Uz zmCY$)937p_JfIeh#hZIs6>89#op4oHjbP`%I$4s;8KzulnTbW&+G>|t6Kd-h@65z) z`fMv)9DJq_p84s3<@6AE)IpMbkMiC>{(Q-A!O9eQk)l77G&-Wk%o_q6lu=R&^Dmu3TPP8^GnuM4e^? zu@@s^Ah9S}#jf*Yi}@?T65n$rk(TD*tXA>`aJ=tZsK(}`>b{Rn756U1vI`oTQ7OOXm zK{n_=;ukA7(6`=LX2+`QMx&C-Ioe)Giaw9go>!gGsrLx!MFw*PSs1-c$R~Z4tQ0)XG|j_@t1tjyKqg z`kv~(v#2-PRgIs(H5I5vL%;h7Lq)gLS&-`}xOn4+KqdUPt`i-Dn$efk zyEGqPIB%Ram_NUKYSCAGPy%g)oQvq`IvG(-N|1bcJ*?JomjsLKBJo`Fi$F%Qg0o?N zj;!thJ^0GhCSB8~-=;3cOR+E|)UKgZ2P3_?D%(qaLSY=Duz%$gOd%^X^GT&u3k-FV z;9%?V;h<|V^A34(laTu82=@h`Did;dI*pWNrk#dOjSr2(PQ*se1S!CAq5Xb4$&c|u zDhcluPLADqe%gPz_)qvp%rxaZ)TkqGBLDch4NN82cQSo5)GO*!8|QE|dx6yeX76ne zDYYtO+GjK5SismINtGQ+HG)11>%I`Xz*m|(Y&2YU66R6ttRPRwR`9S~Tj5`1tBNPJ zXRK1?`3+S$(=BLnEUy~rdJ93>h>~QFx?Q%4;^z$|`j_kzuf*k5>G<-KQ(7vXcSjTe zUbHLeCfrE`VNG#hwa1k{{(WKCZLO|H+CjA;!!|<$H^lH$gLi7tTssmYuS+k~y8~|4 zf67X>F>j_#D?!Mb-SHB+CYn`7y_GRWp~y8W1Zx@xt;2xJ_AySn32WS=tBuREzbSHx zc5yaAI^pIg3QP*Qvnp(iesD7~P1lZPMMA>$N>{a?`__s}r@dbC7{)C_xA9_@EGy?( zM8$E>r&^L^%bd8?tDls{x)b!b;zWn$@VE|iv@hf~vP8bS&%W#vH_nL{38iC}HA!u< zles@`K!fY zJ%~&-1eF4j16!@vl?**#9~Q4JDCpg>cCv$op3guvF~zpzaqz8 zx7ML32zhRhf{;8mg9Se4_yGqM8KykW0|#HNcNQ0AwBA8T8LBZO#H$5}Qfo$nm!}F* zbt@vDbIMQ#B;LMY(C?r<&lBj5Z;|smds%OU0c#J9f+9SpB7laubH5`C``~r}t(1K* zn*8yE%|ME@vnqDd#MPv)^t%*=x()5FLLG0Z;&!#@+9B(fF6E}=&zLhTQoQ=9CT;P2 z3^yPtiupS!D!MC0S5_`ud2z74g!|@U8c-I?s>8>@>vz-ee{iDbZ;~Sh7f6Xzw$w*g zYeH~PFMWiZ+#RyET>pC;oO%~J@o5jatb1d2z*xqS2 zh8LZLv=D0kIxEfPxRO2$VS7dn$=R)5*%QjgZ}e;6=YvUV9TRe4D?mc<%e=y?%G=JR zFYhIBx;4M1CNI{I4b5p0Cev4uI_-bu&GuYk1t5A&8&D~@4P*rcxtvx9N{HU?O)I)7 zcVdPcJALOQmo7{^Zc!luBw99+ii<#*u|q+r-<3P=nYY|c6LOMNj_`|=NwV){0hQQ zx8Yoqu^}JHYdh04Ro&slsy!kX5wsWCv@M7C2glN);>HR)83dWtgb|G>H7Rr*snH^u zrRL0}&n&yF9Bha%UB?074S}=LO~gJ;g$Gut&R&^HncXE-qf9X#Uai@@GeN^>W`|~v z3|)YMcG4sZ*pX_pL%YEKiWkd8&>c9_uikqoQfQa@~XMH5t##xXzgK0$9a5Sbz~ja&`$ zI^wJWy0M?2>?~^wEgkehGnN$8r zxJy>_^2eI`12;JuqW+-2orv8CfCmmGmv?(+d+{o!RaYw>n`zc~*XTxb76C@Q&2-KK zT#x+(j>fNK7Ongw%6GpvS`fi{MAKZ{jH+W^qQ1mvEwD?lkgA+E(_d=LD|zO}XVVf` zg`GJSNyo7HrIx)j#C1P%s4Ke(0^8VPyR(hLkf&$6H06_BeQ*cDORN*LR zpn|PBQC)ZVLj&fO0vqcpPMu7!$N;#T&YE)jMKAY{t2)$KDi3rb4dfCx+P_~*?5U}b z3s=d3B{KrQ1+9=3%OvCq97bhnI4)88H-(a~^D8&n9ePQQ09vovp}v7j&d$@h3S!)eJ(~XGx(7ew>!!M^i)NUDfFTf`)kv1DcB< z)Z%XX+U^o@AHe`)U^qm$4UySQ!|I-h7(X1xh%%Jf1iA8Uk^LRUeqCR1c`qhsA;MPR zKKr!!hxj!7lEsiq0Kte8a?ErD$Ju|RQTvx04Wn~KP(Yy(j7(ZTe*70{>iuN%^2ejg5 z4s!7#s#0xM(GNuWhNr!t!P9Jwm6|ru?HZj>{9-OOvhq@f%F1GJwrV2f#a(mBjmgeH zpIMZ;HQaB7*lvFgWH@P4PkM$_ummkmXxoN{b#C{%!l3`wk-bNtMpp08GC zUDJJFO>I8s-6-L4kl8W4<|xr|J6oPyKmQ>=<=EOxD`7fYm9EhehMPwB9UoXS!V>2iJ5;o?pCGO zn^tw&)rO+F1T+#SJ5kmf>`nE9ez{E>=_nRABS#d(b*xoPCDIWZiA0zd(6PJxTa>3!+(syt2Hp|E^ahAPx)3J`(? zPILLY;}Jj~PRoZ9LNqY~%Uc@E+V->K8>L6JU!Z2qnYE8iY{Z06W@;hQsEqzGsz|5u zL&pB!_q~Z)t4Hi?d94k%PI$Kj@BEVSPrc5a=(@l5I@Nb-Jlhkm29He^uz4(Jzwwg8 zG+kKB?%;!GnEJiP{_l&NZ8Mx`XJ|baw4Z7Hnzo7eg=B>p&cO)NlueYgx2PGqIp%rb zH_|;A$0&_;rJaMOLZy^Tb1F!aC*~yUY~(xK-?kmiC(-r?`k?`iAkqU%ELsWim|70=e>`6ojm9^a&w(z%Qb#}tfIf>#c+_POu zltL?JD?n4-30e^_eU2@$Rs$Z2IpogLYHNI5pjukP3Ib}3jAu$>-cQ8=8=r5*0b5kM zsnpdW#Fv)!d;4*>2X4l@^n~I>8`Y%4rnBgGk3aKa;I@oi6rpqa<0F{xJUbG|*v-XK ze^~v_E@7|SrBVWI0%W{EcQdE(Z}wUvM>;s3or>lz6~3kJ8~;l9Kee&F(qO8O@M@rz zD=bCyMNEml_GR`qJHuZX6MM@_m@_Ri)hn1u=bCtU$GjHz48AV#AT2bwj0-ZmpPii3 zHnGwv?XD#sHW)CjD>eW6z(Z3_I>*<{YQ^);zbZ<-+^?z2^sc4}_Jg*gc06bfK!5na zM;_zx7t^Zpa6k5Z32Km)%fGl@QuliY)XvMSH*%svprVvew%<+>FCul?VNB?kjG6L@ zQE!PRPU)baV1cyr{MhOl#1G}!%_-!vlUEO!dbQ0%^+JU!_Q8#bG*XKla8S}CvEu9NoKJz@=}x9KYmnrw9*gyg4}Z7ZMNx*}7_nO*41ZvAkr)bE>>Rgreucz1tYJ|laI1qXN!EI{YRcxl33DY9wA8@7L ziv8o{ZnE9HB$$jaNCepx~=gUGN`$PSa@J~$#Tc3uU|LO zUDco!dCoAvq`d+jxZ2`G`VD-x*L#;|o78qc*G%A;Oe4VXNhhnov)LSxF%0(}8)efq z%u#{J@sYyy z5Fk2KZp__Twc_E04*sfPpo&(>JYmkFSm`2DX>M>&T6?)<=tA7pW3hWtjk*V)zu{IJ z-eX?Qt9F5(cp@sIm&$5c|JRm~Q=w-4>y~&nZQ184{rP8fzyV1>Uo(G~0;}#8Jr0Z2 znd{k$D%OVMjtux^DjwloT1a|euG+C9?S!hOZHmRtoeN&eY>mdpb&~fYxFv>P>%J4I z6n!7ve$`@3ftqTBe92*HuuBGH)oHQevB6+F0%BHvEVq}^i;VApzGcPQ$YC$`MLg~S zR9T~}N~o7mRDDy&S~tv;)!H5MeA!wC&lFg3dc0L7MKIVn88KktlNwuF&6`i4+?8QA3nG7)u zL1JF@QPku;_3|ig-nxfK9yXC%?P0eM$dLra@U^tQ5rYyvJIzn|p)1J+hRzD+)k)g7 zptlQE?xC7Jr4#BPw<houv9JVt`hmt0?*zZI)htY+m7;SpF=7 zxLR@HWGCnX4PglUCvos{-f^wlD;F`1n)UPUCV>5J3hXdk{<{QxMIO)-b84jCisWc)g|JrmF9N% zUe=s^HfYEa+K~ZTFQ8;N!oe=vr3awCRKO^kZ+Z##%I`~I^I zVtJ_cM}I?>L+U&(pKe|Yn^kA!f~V`S@4n!D$zXg{C1LY~s>DakZ}qNvnRjiY(p~Is zX01`HruYmRBs*PSxn!_@mom4$L!yab&})!sOThSEmaY+mM9raq&pNC`1o2w5m|8z* zL=An1mt}C!H9s0WWB2z>Mee)bnu^y${%uoHHMEbfxOHFe)za_Q#p2n+oWU<>}9 z4>`-ihi_#KfzgwE~I-s5NYLQ&|Ko+e_U#t{a)juri-n?>`FTa%vMkEc`>MW(^k z8dMcIwta7$c-a0%p>tW=gya~X5;*n-NmLd|$}<|iLNh)-@i^y7!k6UJRQxVxwv)Cp z^G07Sgf3cv7&uUF?yf?JzoA!G%=8s@fzMz)F9Rn;>h!$o zn|Te{apjv_OV69G%_8mteDXv$%d#sO-|%oBnF!RHx9T_@87@=gQr9=>72!%({&M@( zTG8S?pLaaG8Egv5O|Y!gvnbA=*$t|f_axwPZT5*mPey#FO~5t5_5ftR%$4ct+FtPYl3qgb{wX)4eMMK zk*a?KwVPH})CMSv0W(zUXp4`!B$iok6vD^7E0n-tb9%U@FvIs7#AKRG^ZlyEPdt4P zzCV=KaUdQ!{0(7t;{J*-FBkm;ne7KcWz3C>7B;LB|4cCYKM3X+AQ;;p1jGJ=V08BW zJ;4B2GfK&Z3b3R>28ud54|=bLzZ1D#Q!F}%n)|FrM^hn%rY1oQoiJY#W?`^RQ{3R- zR&wtL9m$*8XfGIBl^NKHfbV`on^q(k=)POq8>gdcVs)!AnsEZPy}q|mq3(fH#=k1= z>9iY$Jz|p9W-i;F2#{XSGHnGQ@JOFliySIF4)8@OlqbBIburE`A&77@>;hN3C?B(VSn8(E}7{(@zU2Hs}U~wNgqM$jCHjn#r3_8 ztOa)K80#vsgdWU@@LTarJXRotV!c{-r^~=}66qS4P7;b)&4B;;(`#mSv%RC~^MW$w z!H1fhofxA!st%^ClI11uRmbZ6VO7U`Cx#-eE3%xMtcTi@4!m7X*j@=LwGVN6h}*K; zSqpL)$Z+1jAv@&^j?n8G$T?z+vUupGv|nA3_nWd<-tD+Qx<~A{1ZbMp#!LtiU)qk} zZSF7zvlnU;LjKtMn7Hn6pDEMj_9$Oth7VF-8)lZ#!*icJ?WJrw@)-z7lba(P4f1t7 z)Qx+MvLhOW4o`HxmvHnRyls%I@RD10>3&&1)(`FKYpE+BrmugS4S(7Q8qRXF&G7Vd zQHnw>J=*R0J&vM8y}sX~-q$mQv;$_Ho~MfXNBkN%^d$0l*-6U%&l*6l*Fqf4gw0n` zbk*}cE77BFy?MvQ?kK!xxn`1iGzl_QdhBF3kMrKS9_$+4z1RgMNzv+Z->-zP&dv1O z1BOZor2O+!J6h9{6de^eZ4PwQ=8P{YU-%2b*`1CZ+`;X4liv00# zGU>vnXb<0sR~&S!0x^17EmLw*GW2aDAZOMaNSM(#((x9O_35{%+oq(kCueBWwr*nj z35k#mGLdbUBy7Gn!LXJy1HE3DVhm^Tc^j5j1&zb*`FY zwm)3Kt{TzbMnD%PprxPmK8s|R&I5nhNcV+Al(y=(AMh#N^()F4>bBl*qsicrc5h0{ zZ!2{1a-$i`<$S#Jm@IRaXuSCd?e0WKp(4*uzc27@-v>a?|BqkJ`WYmD>Jk3^Z*qkS dZS3r=kWtm1dr*@MewJ*{xwAT|dCF#Y{|kcEiQWJJ literal 0 HcmV?d00001 diff --git a/deployment/Cleanup.ps1 b/deployment/Cleanup.ps1 index 13373a07..3caae804 100644 --- a/deployment/Cleanup.ps1 +++ b/deployment/Cleanup.ps1 @@ -76,7 +76,7 @@ process { if($b2ccleanup -eq "y") { - Write-Title "Step #5 - Running B2C Cleanup Script" + Write-Title "B2C Step #0 - Running B2C Cleanup Script" & ".\B2CCleanup.ps1" } #endregion diff --git a/docs/CONSOLIDATED_DEPLOY.md b/docs/CONSOLIDATED_DEPLOY.md deleted file mode 100644 index 898c1438..00000000 --- a/docs/CONSOLIDATED_DEPLOY.md +++ /dev/null @@ -1,130 +0,0 @@ -# Microsoft Learn LTI Tool Deployment Instructions - -## Table of Contents -1. Clone the repo: [link](#clone-the-repo) -2. Deploy to Azure Subscription using the script: [link](#deploy-to-azure-subscription-using-the-script) -3. Configure the tool: [link](#configure-the-tool) - -## Prerequisites -To begin, you will need: -- [Azure CLI](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest?WT.mc_id=learnlti-github-cxa) - * We currently recommend using Microsoft CLI version 2.27. The most recent version is of Azure CLI has deprecated commands in use which will be addressed later. -- [DotNet Core SDK .NET Core 3.1](https://dotnet.microsoft.com/download/dotnet/3.1?WT.mc_id=learnlti-github-cxa) -- [Node.js](https://nodejs.org/en/download/) -- [Powershell](https://docs.microsoft.com/powershell/scripting/install/installing-powershell?view=powershell-7?WT.mc_id=learnlti-github-cxa) -- [Git](https://git-scm.com/downloads) -- An Azure subscription - -**Note:** Please ensure you **reboot your machine** after the installation of the Prerequisities - -Follow these steps to deploy the Microsoft Learn LTI tool: - -# Clone the repo -1. Go to the [repo](http://github.com/microsoft/learn-lti) Click code button on the [repo](http://github.com/microsoft/learn-lti) -![Clone Repo](https://github.com/microsoft/Learn-LTI/blob/main/images/clone.png) -3. Simply click the code button and select Open with GitHub Desktop or Download Zip to clone contents of the repo. - -If you are using Git -1. Open a command prompt -2. Make a new directory **Learn-Lti** -3. Move to **Learn-Lti** directory -4. Use Git to clone the repo (You need [Git installed](https://git-scm.com/downloads) -5. Enter in the command in the Git console - * `git clone https://github.com/microsoft/Learn-LTI.git` - * This will clone the repo into the current directory **Learn-Lti** - -You have now cloned the repo - -## After Cloning -* In the cloned repo, inside the deployment directory **Learn-Lti**, execute the file **run.bat**. -* run.bat bypasses signing requirements and runs Deploy.ps1 automatically. -* You should now see the Microsoft Learn LTI Tool script popup. -![startofdeploy.png](/images/startofdeploy.png) - -# Choosing the AD or B2C mode - -The script will ask you to choose 'Active Directory',i.e. AD mode or 'Business to Consumer',i.e. B2C mode for authentication between your LTI and LMS. - -Type in 'ad' for AD mode of authentication which will direct you towards 'Deploy to Azure Subscription using the script'. -![admode.png](/images/admode.png) - -Type in 'b2c' for B2C mode of authentication. -![b2cmode.png](/images/b2cmode.png) -Go to the [B2C setup](https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/blob/consolidated_deploy_branch/deployment/B2C_Docs/B2C_Deployment.md) for B2C deployment. - - -# Deploy to Azure Subscription using the script - -**NOTE:** if B2C mode is chosen, the B2C setup must be completed before reaching this step. - -## Login to Azure - -The script will ask you to login to Azure by navigating to the Azure Login Page on your browser. - - -## Choose Subscription - -Type in the name of the Azure subscription that you hold (this is a prerequisite necessary for deployment). - -If you're unsure about whether your account has a subscription, check [here.](https://ms.portal.azure.com/#blade/Microsoft_Azure_Billing/SubscriptionsBlade??WT.mc_id=learnlti-github-cxa) - -## Choose Location - -The following regions are supported: - -* eastasia -* southeastasia -* centralus -* eastus -* eastus2 -* westus -* southcentralus -* northeurope -* westeurope -* japaneast -* brazilsouth -* australiaeast -* canadacentral -* uksouth -* westcentralus -* westus2 -* koreacentral - -**Locate your region from the list above. Then type it into the script and hit "Enter".** - -![Deployment.1](/images/Deployment.1.jpg) - -Your region determines three things: - -* Compliance and Data Residency -* Service Availability -* Pricing - -For information regarding your region, check [here.](https://azure.microsoft.com/global-infrastructure/geographies/?WT.mc_id=learnlti-github-cxa) - -## Azure Autoconfigure - -The **Deploy.ps1** script will automatically provision and configure the required resources for you. - -## ⚠️ Tool Registration URL - -The Script will display the Tool Registration URL after completion. Please **copy the URL and keep it handy** since it will be required while configuring the tool in the LMS. - -![Deployment.4](/images/Deployment.4.PNG) - -Open the tool registration page from your browser and take note of the following parameters. - -* Login URL -* Launch URL -* Domain URL -* Public Key -* Public JWK -* Public JWK Set URL - -![Deployment.5](/images/Deployment.5.png) - -**Congratulations!** Your instance of the tool should now be deployed on Azure! - -If your **deployment failed**, click [here](./TROUBLESHOOTING.md) for help. - -Once the tool has been successfully deployed, the next step is to [configure the tool](./CONFIGURATION_GUIDE.md) on your institution's LMS. diff --git a/docs/DEPLOYMENT_GUIDE.md b/docs/DEPLOYMENT_GUIDE.md index 634e502e..87a7da07 100644 --- a/docs/DEPLOYMENT_GUIDE.md +++ b/docs/DEPLOYMENT_GUIDE.md @@ -7,8 +7,8 @@ ## Prerequisites To begin, you will need: -- [Azure CLI](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest?WT.mc_id=learnlti-github-cxa) - * We currently recommend using Microsoft CLI version 2.27. The most recent version is of Azure CLI has deprecated commands in use which will be addressed later. +- [Azure CLI](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest?WT.mc_id=learnlti-github-cxa) versions 2.37+ + * Requires minimum version of 2.37 due to the script using commands which do not exist in previous versions. - [DotNet Core SDK .NET Core 3.1](https://dotnet.microsoft.com/download/dotnet/3.1?WT.mc_id=learnlti-github-cxa) - [Node.js](https://nodejs.org/en/download/) - [Powershell](https://docs.microsoft.com/powershell/scripting/install/installing-powershell?view=powershell-7?WT.mc_id=learnlti-github-cxa) @@ -39,14 +39,31 @@ You have now cloned the repo * In the cloned repo, inside the deployment directory **Learn-Lti**, execute the file **run.bat**. * run.bat bypasses signing requirements and runs Deploy.ps1 automatically. * You should now see the Microsoft Learn LTI Tool script popup. -![run.start.png](/images/run.start.png) +![startofdeploy.png](/images/startofdeploy.png) + +# Choosing the AD or B2C mode + +The script will ask you to choose 'Active Directory',i.e. AD mode or 'Business to Consumer',i.e. B2C mode for authentication between your LTI and LMS. + +B2C Mode is recommended due to it being possible to set it up for either single-tenant and multi-tenant access; whilst AD mode is less extensible and only supports single-tenant access. + +Type in 'ad' for AD mode of authentication which will direct you towards 'Deploy to Azure Subscription using the script'. +![admode.png](/images/admode.png) + +Type in 'b2c' for B2C mode of authentication. +![b2cmode.png](/images/b2cmode.png) +Go to the [B2C setup](https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/blob/main/deployment/B2C_Docs/B2C_Deployment.md) for B2C deployment. + # Deploy to Azure Subscription using the script +**NOTE:** if B2C mode is chosen, the B2C setup must be completed before reaching this step. + ## Login to Azure The script will ask you to login to Azure by navigating to the Azure Login Page on your browser. + ## Choose Subscription Type in the name of the Azure subscription that you hold (this is a prerequisite necessary for deployment). diff --git a/images/admode.png b/images/admode.png index 565e28a828b0c932d3b619c222510650cb24f5d8..808cb718f784f08c35edb1db0c271735f6606a72 100644 GIT binary patch literal 144029 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

    diff --git a/deployment/Limited-Install-Deploy.ps1 b/deployment/Limited-Install-Deploy.ps1 index e58620c6..56b27e15 100644 --- a/deployment/Limited-Install-Deploy.ps1 +++ b/deployment/Limited-Install-Deploy.ps1 @@ -13,8 +13,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "RB_policy2_MSLearnLTI", - [string]$AppName = "RB_policy2_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "MSLearnLTI", + [string]$AppName = "MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null @@ -137,8 +137,7 @@ process { else { $SubscriptionListOutput = $SubscriptionList | Select-Object @{ l="Subscription Name"; e={ $_.name } }, "id", "isDefault" Write-Host ($SubscriptionListOutput | Out-String) - # $SubscriptionNameOrId = Read-Host 'Enter the Name or ID of the Subscription from Above List' #TODO - UNCOMMENT - $SubscriptionNameOrId = "COMP0111 2021-22 Project_Warren_Buhler" #TODO - REMOVE + $SubscriptionNameOrId = Read-Host 'Enter the Name or ID of the Subscription from Above List' #trimming the input for empty spaces, if any $SubscriptionNameOrId = $SubscriptionNameOrId.Trim() @@ -152,12 +151,10 @@ process { #region Choosing AAD app to update Write-Title ' Choose an Azure Active Directory App to update' - # $AppName = Read-Host 'Enter the Name for Application' #TODO - UNCOMMENT - $AppName = "RB_policy2_MS-Learn-Lti-Tool-App" #TODO - REMOVE + $AppName = Read-Host 'Enter the Name for Application' $AppName = $AppName.Trim() - # $clientId = Read-Host 'Enter the Client ID of your registered application' #TODO - UNCOMMENT - #$clientId = "3d440bc7-87f5-4600-8814-698b895d14d7" #TODO - REMOVE + $clientId = Read-Host 'Enter the Client ID of your registered application' $clientId = $clientId.Trim() Write-Host "Checking if Application exists...." @@ -183,8 +180,7 @@ process { #region Choose Resource Group of above application Write-Title ' Choose a Resource Group to update' - # $ResourceGroupName = Read-Host 'Enter the Name of Resource Group' # TODO - UNCOMMENT - #$ResourceGroupName = "RB_policy1_MSLearnLTI" #TODO - REMOVE + $ResourceGroupName = Read-Host 'Enter the Name of Resource Group' $ResourceGroupName = $ResourceGroupName.Trim() Write-Host "Checking If entered Resource Group exists...." $checkResourceGroupExist = (az group exists --resource-group $ResourceGroupName) @@ -208,8 +204,7 @@ process { if(!$LocationName) { Write-Host "$(az account list-locations --output table --query "[].{Name:name}" | Out-String)`n" - # $LocationName = Read-Host 'Enter Location From Above List for Resource Provisioning' #TODO - UNCOMMENT - $LocationName = "uksouth" #TODO - REMOVE + $LocationName = Read-Host 'Enter Location From Above List for Resource Provisioning' #trimming the input for empty spaces, if any $LocationName = $LocationName.Trim() } From 777f97e6bc2a2ec4d0e42292aec7299d64277369 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Tue, 19 Jul 2022 14:53:26 +0100 Subject: [PATCH 079/285] switch to B2C policies --- client/src/Core/Auth/policies.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/client/src/Core/Auth/policies.ts b/client/src/Core/Auth/policies.ts index 64a2c93f..1964f7ff 100644 --- a/client/src/Core/Auth/policies.ts +++ b/client/src/Core/Auth/policies.ts @@ -6,13 +6,13 @@ export const b2cPolicies = { names: { - //signIn: 'B2C_1A_SIGNUP_SIGNIN' // custom policy - signin: `B2C_1_signup_signin_LTI` // user flow + signIn: 'B2C_1A_SIGNUP_SIGNIN' // custom policy + //signin: `B2C_1_signup_signin_LTI` // user flow }, authorities: { signIn: { - //authority: `https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/B2C_1A_SIGNUP_SIGNIN` // custom policy - authority: `https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/B2C_1_signup_signin_LTI` // user flow + authority: `https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/B2C_1A_SIGNUP_SIGNIN` // custom policy + //authority: `https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/B2C_1_signup_signin_LTI` // user flow // user flow: // `https://` + // process.env.REACT_APP_EDNA_B2C_TENANT! + From 1eaff517aa64b45076c4cd806c28479f963dc9fc Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Tue, 19 Jul 2022 14:56:32 +0100 Subject: [PATCH 080/285] Fixed bug where azuredeploy.json was being overwritten when appending the azure b2c secret --- deployment/Limited-Install-Deploy.ps1 | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/deployment/Limited-Install-Deploy.ps1 b/deployment/Limited-Install-Deploy.ps1 index a787232d..a6bca604 100644 --- a/deployment/Limited-Install-Deploy.ps1 +++ b/deployment/Limited-Install-Deploy.ps1 @@ -28,8 +28,9 @@ process { } try { #region "formatting a unique identifier to ensure we create a new keyvault for each run" - #$uniqueIdentifier = [Int64]((Get-Date).ToString('yyyyMMddhhmmss')) #get the current second as being the unique identifier - #((Get-Content -path ".\azuredeployTemplate.json" -Raw) -replace '', ("'"+$uniqueIdentifier+"'")) | Set-Content -path (".\azuredeploy.json") + $uniqueIdentifier = [Int64]((Get-Date).ToString('yyyyMMddhhmmss')) #get the current second as being the unique identifier + $uniqueIdentifier = "1" # TODO - remove this, just left it like this for now to make it consistent + ((Get-Content -path ".\azuredeployTemplate.json" -Raw) -replace '', ("'"+$uniqueIdentifier+"'")) | Set-Content -path (".\azuredeploy.json") #endregion #application ID and uri @@ -101,7 +102,7 @@ process { #region "formatting a unique identifier to ensure we create a new keyvault for each run" $b2c_secret = '"'+$b2c_secret+'"' - ((Get-Content -path ".\azuredeployTemplate.json" -Raw) -replace '""', $b2c_secret) | Set-Content -path (".\azuredeploy.json") + ((Get-Content -path ".\azuredeploy.json" -Raw) -replace '""', $b2c_secret) | Set-Content -path (".\azuredeploy.json") [string]$dir = Get-Location $dir += "/../client/.env.production" From b60bef7f94e4f83505f0bcab4f5c9364f2378e6e Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Tue, 19 Jul 2022 15:17:11 +0100 Subject: [PATCH 081/285] Moved unique_identifier code into Deploy.ps1 --- deployment/Deploy.ps1 | 9 +++++++++ deployment/Limited-Install-Deploy.ps1 | 9 ++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 64fd74b8..c69a9f21 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -20,6 +20,15 @@ process { } try { + #region "TEMPORARY VALUES - REMOVE THESE" + #TODO - REMOVE THESE + $b2c_secret = "hard-code value" + #endregion + + #region "formatting a unique identifier to ensure we create a new keyvault for each run" + $uniqueIdentifier = [Int64]((Get-Date).ToString('yyyyMMddhhmmss')) #get the current second as being the unique identifier + ((Get-Content -path ".\azuredeployTemplate.json" -Raw) -replace '', ("'"+$uniqueIdentifier+"'")) | Set-Content -path (".\azuredeploy.json") + #endregion #region Show Learn LTI Banner Write-Host '' diff --git a/deployment/Limited-Install-Deploy.ps1 b/deployment/Limited-Install-Deploy.ps1 index a6bca604..29eb06ba 100644 --- a/deployment/Limited-Install-Deploy.ps1 +++ b/deployment/Limited-Install-Deploy.ps1 @@ -28,8 +28,8 @@ process { } try { #region "formatting a unique identifier to ensure we create a new keyvault for each run" - $uniqueIdentifier = [Int64]((Get-Date).ToString('yyyyMMddhhmmss')) #get the current second as being the unique identifier - $uniqueIdentifier = "1" # TODO - remove this, just left it like this for now to make it consistent + # $uniqueIdentifier = [Int64]((Get-Date).ToString('yyyyMMddhhmmss')) #get the current second as being the unique identifier + $uniqueIdentifier = "1" # Using lat value instead as Limited deploy is just to get a faster deploy useful for testing only; so we want to replace in place ((Get-Content -path ".\azuredeployTemplate.json" -Raw) -replace '', ("'"+$uniqueIdentifier+"'")) | Set-Content -path (".\azuredeploy.json") #endregion @@ -99,8 +99,7 @@ process { - #region "formatting a unique identifier to ensure we create a new keyvault for each run" - + #region "updating the b2c parameters and secrets" $b2c_secret = '"'+$b2c_secret+'"' ((Get-Content -path ".\azuredeploy.json" -Raw) -replace '""', $b2c_secret) | Set-Content -path (".\azuredeploy.json") @@ -143,7 +142,7 @@ process { $filecontent = Get-Content $dir $filecontent -replace $old_REACT_APP_EDNA_AUTH_CLIENT_ID,$REACT_APP_EDNA_AUTH_CLIENT_ID | Set-Content ".env.production" - Read-Host 'Debug stop.....' + Read-Host 'Debug stop.....' #endregion From 439a45c5cfe4982cbd40e08b70f9cf385daa7c5e Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Tue, 19 Jul 2022 15:25:15 +0100 Subject: [PATCH 082/285] Added code for saving the params required by the Deploy.ps1 from B2CDeployment.ps1 so they can be loaded in after itse xecution --- deployment/B2CDeployment.ps1 | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index ce7ae9f1..38c5aaf5 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -562,4 +562,24 @@ CustomPolicyUpdateOrUpload "B2C_1A_TrustFrameworkExtensions" $customPolicies $ac CustomPolicyUpdateOrUpload "B2C_1A_signup_signin" $customPolicies $access_token CustomPolicyUpdateOrUpload "B2C_1A_ProfileEdit" $customPolicies $access_token CustomPolicyUpdateOrUpload "B2C_1A_PasswordReset" $customPolicies $access_token +#endregion + +#region "saving needed params to a .csv to be passed to the Deploy.ps1" +$b2cSavedParamsPath = ".\b2cSavedParams.csv" +if(Test-Path $b2cSavedParamsPath -PathType Leaf){ + Clear-Content $b2cSavedParamsPath +} +else{ + New-Item $b2cSavedParamsPath > $null +} + +"MultiTenantAppID,$MultiTenantAppID" | Out-File -FilePath $b2cSavedParamsPath -Append +"MultiTenantAppSecret,$MultiTenantAppSecret" | Out-File -FilePath $b2cSavedParamsPath -Append +"WebClientID,$WebClientID" | Out-File -FilePath $b2cSavedParamsPath -Append +"WebClientSecret,$WebClientSecret" | Out-File -FilePath $b2cSavedParamsPath -Append +"PermissionClientID,$PermissionClientID" | Out-File -FilePath $b2cSavedParamsPath -Append +"PermissionClientSecret,$PermissionClientSecret" | Out-File -FilePath $b2cSavedParamsPath -Append +#TODO - add code to load these into the deploy script when needed +#TODO - prune this to only include those that are actually used + #endregion \ No newline at end of file From 0f566d6ea8d47bd28031573933e1b6dbdda75030 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Tue, 19 Jul 2022 15:27:22 +0100 Subject: [PATCH 083/285] added b2cSavedParams.csv to gitignore to hide secrets --- deployment/.gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/deployment/.gitignore b/deployment/.gitignore index 08ba3f02..3ccebef0 100644 --- a/deployment/.gitignore +++ b/deployment/.gitignore @@ -1,4 +1,5 @@ _Temp* CustomPolicy/* manifest.json -AppInfo.csv \ No newline at end of file +AppInfo.csv +b2cSavedParams.csv \ No newline at end of file From dd5a5d23a0929a56ec17f2b79d1a7cb1e1f18bae Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Tue, 19 Jul 2022 15:42:41 +0100 Subject: [PATCH 084/285] Fixed buy where facebook secret wasn't being cleaned up --- deployment/B2CCleanup.ps1 | 3 +++ deployment/B2CDeployment.ps1 | 3 +++ 2 files changed, 6 insertions(+) diff --git a/deployment/B2CCleanup.ps1 b/deployment/B2CCleanup.ps1 index 880e52ea..182c491b 100644 --- a/deployment/B2CCleanup.ps1 +++ b/deployment/B2CCleanup.ps1 @@ -54,6 +54,9 @@ $response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/p Write-Host "Deleting B2C_1A_PasswordReset" $response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies/B2C_1A_PasswordReset' -Method 'DELETE' -Headers $headers + +Write-Host "Deleting B2C_1A_FacebookSecret" +$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies/B2C_1A_FacebookSecret' -Method 'DELETE' -Headers $headers #endregion #region "STEP 3: Cleaning up the keysets from the b2c tenant" diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 38c5aaf5..e7c129a5 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -565,6 +565,9 @@ CustomPolicyUpdateOrUpload "B2C_1A_PasswordReset" $customPolicies $access_token #endregion #region "saving needed params to a .csv to be passed to the Deploy.ps1" +Write-Title "Saving params to b2cSavedParams.csv to be passed to Deploy.ps1; this will automatically be cleaned up after the values are loaded" +#TODO - perhaps in future change it to argument passing instead of via the .csv file; done for now for ease of prototyping + $b2cSavedParamsPath = ".\b2cSavedParams.csv" if(Test-Path $b2cSavedParamsPath -PathType Leaf){ Clear-Content $b2cSavedParamsPath From b62f3bf94ff88db51a6d409480485d423ab4cc38 Mon Sep 17 00:00:00 2001 From: DuyNguyen19993010 Date: Tue, 19 Jul 2022 18:39:05 +0100 Subject: [PATCH 085/285] B2C parameters can now be retrieved from b2cConfig script and use for updating --- client/.env.development | 2 +- client/.env.production | 16 +++---- deployment/B2CDeployment.ps1 | 1 + deployment/Limited-Install-Deploy.ps1 | 61 ++++++++++++++++++++------ deployment/azuredeploy.json | 40 +++-------------- deployment/b2cSavedParams (2).csv | Bin 0 -> 674 bytes 6 files changed, 62 insertions(+), 58 deletions(-) create mode 100644 deployment/b2cSavedParams (2).csv diff --git a/client/.env.development b/client/.env.development index 0a97726b..1ad0bd71 100644 --- a/client/.env.development +++ b/client/.env.development @@ -9,4 +9,4 @@ REACT_APP_EDNA_USERS_SERVICE_URL="http://localhost:7075/api" REACT_APP_EDNA_PLATFORM_SERVICE_URL="http://localhost:7072/api" REACT_APP_EDNA_B2C_CLIENT_ID='0cd1d1d6-a7aa-41e2-b569-1ca211147973' REACT_APP_EDNA_B2C_TENANT='ltimoodleb2c' -REACT_APP_EDNA_AUTH_CLIENT_ID='0cd1d1d6-a7aa-41e2-b569-1ca211147973' \ No newline at end of file +REACT_APP_EDNA_AUTH_CLIENT_ID='0cd1d1d6-a7aa-41e2-b569-1ca211147973' diff --git a/client/.env.production b/client/.env.production index 7e652be8..2364c326 100644 --- a/client/.env.production +++ b/client/.env.production @@ -1,13 +1,13 @@ GENERATE_SOURCEMAP='false' -REACT_APP_EDNA_PLATFORM_SERVICE_URL='https://platforms-suda4znvd.azurewebsites.net/api' -REACT_APP_EDNA_USERS_SERVICE_URL='https://users-suda4znvd.azurewebsites.net/api' -REACT_APP_EDNA_LEARN_CONTENT='https://learncontent-suda4znvd.azurewebsites.net/api' -REACT_APP_EDNA_LINKS_SERVICE_URL='https://links-suda4znvd.azurewebsites.net/api' -REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL='https://assignments-suda4znvd.azurewebsites.net/api' +REACT_APP_EDNA_PLATFORM_SERVICE_URL='https://platforms-hwlx6saco.azurewebsites.net/api' +REACT_APP_EDNA_USERS_SERVICE_URL='https://users-hwlx6saco.azurewebsites.net/api' +REACT_APP_EDNA_LEARN_CONTENT='https://learncontent-hwlx6saco.azurewebsites.net/api' +REACT_APP_EDNA_LINKS_SERVICE_URL='https://links-hwlx6saco.azurewebsites.net/api' +REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL='https://assignments-hwlx6saco.azurewebsites.net/api' REACT_APP_EDNA_TENANT_ID='21510bb9-6414-46d0-9a07-1faf98f25937' -REACT_APP_EDNA_DEFAULT_SCOPE='api://3d440bc7-87f5-4600-8814-698b895d14d7/user_impersonation' -REACT_APP_EDNA_MAIN_URL='https://learnclientsuda4znvd.z33.web.core.windows.net/' -REACT_APP_EDNA_AAD_CLIENT_ID='3d440bc7-87f5-4600-8814-698b895d14d7' +REACT_APP_EDNA_DEFAULT_SCOPE='api://9277727c-c4b7-42f2-b13b-49fb8a9aee0a/user_impersonation' +REACT_APP_EDNA_MAIN_URL='https://learnclienthwlx6saco.z33.web.core.windows.net/' +REACT_APP_EDNA_AAD_CLIENT_ID='9277727c-c4b7-42f2-b13b-49fb8a9aee0a' REACT_APP_EDNA_B2C_CLIENT_ID='0cd1d1d6-a7aa-41e2-b569-1ca211147973' REACT_APP_EDNA_B2C_TENANT='ltimoodleb2c' REACT_APP_EDNA_AUTH_CLIENT_ID='0cd1d1d6-a7aa-41e2-b569-1ca211147973' diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index e7c129a5..0876797b 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -582,6 +582,7 @@ else{ "WebClientSecret,$WebClientSecret" | Out-File -FilePath $b2cSavedParamsPath -Append "PermissionClientID,$PermissionClientID" | Out-File -FilePath $b2cSavedParamsPath -Append "PermissionClientSecret,$PermissionClientSecret" | Out-File -FilePath $b2cSavedParamsPath -Append +"B2cTenantName,$B2cTenantName" | Out-File -FilePath $b2cSavedParamsPath -Append #TODO - add code to load these into the deploy script when needed #TODO - prune this to only include those that are actually used diff --git a/deployment/Limited-Install-Deploy.ps1 b/deployment/Limited-Install-Deploy.ps1 index 29eb06ba..491801e6 100644 --- a/deployment/Limited-Install-Deploy.ps1 +++ b/deployment/Limited-Install-Deploy.ps1 @@ -37,12 +37,32 @@ process { $clientId = "7979bcbb-c70b-46f0-b229-0e3f9cec56a5" $apiURI = "api://7979bcbb-c70b-46f0-b229-0e3f9cec56a5" - #B2C parameters + #Initializing B2C parameters $b2c_secret = "hard-code value" $REACT_APP_EDNA_B2C_CLIENT_ID = 'hard-code client id' $REACT_APP_EDNA_B2C_TENANT = 'hard-code b2c tenant' $REACT_APP_EDNA_AUTH_CLIENT_ID = 'hard-code client id' + $headers = "Parameter","Value" + $configurations = (Import-CSV -Path "b2cSavedParams (2).csv" -Header $headers) + ForEach($row in $configurations) { + switch($row."Parameter"){ + "WebClientID" { + + $REACT_APP_EDNA_B2C_CLIENT_ID = $row."Value" + + $REACT_APP_EDNA_AUTH_CLIENT_ID =$row."Value" + } + "WebClientSecret" { $b2c_secret = $row."Value"} + "B2cTenantName" { $REACT_APP_EDNA_B2C_TENANT = $row."Value" } + } + } + + Write-Host $b2c_secret + Write-Host $REACT_APP_EDNA_B2C_CLIENT_ID + Write-Host $REACT_APP_EDNA_B2C_TENANT + Write-Host $REACT_APP_EDNA_AUTH_CLIENT_ID + Read-Host "Debug stop" #region Show Learn LTI Banner Write-Host '' Write-Host ' _ ______ _____ _ _ _ _______ _____ ' @@ -113,35 +133,48 @@ process { [System.IO.File]::ReadLines($dir) | ForEach-Object { if( $_ -Match "REACT_APP_EDNA_B2C_CLIENT_ID" ){ $configuration_line = $_ -split "=" - $old_REACT_APP_EDNA_B2C_CLIENT_ID = $_ - $REACT_APP_EDNA_B2C_CLIENT_ID = $configuration_line[0]+"="+"'"+$REACT_APP_EDNA_B2C_CLIENT_ID+"'" - echo $REACT_APP_EDNA_B2C_CLIENT_ID + $old_REACT_APP_EDNA_B2C_CLIENT_ID = $_.Trim() + $REACT_APP_EDNA_B2C_CLIENT_ID = ($configuration_line[0]+"="+"'"+$REACT_APP_EDNA_B2C_CLIENT_ID+"'").Trim() } elseif ( $_ -Match "REACT_APP_EDNA_B2C_TENANT"){ $configuration_line = $_ -split "=" - $old_REACT_APP_EDNA_B2C_TENANT = $_ - $REACT_APP_EDNA_B2C_TENANT = $configuration_line[0]+"="+"'"+$REACT_APP_EDNA_B2C_TENANT+"'" - echo $REACT_APP_EDNA_B2C_TENANT + $old_REACT_APP_EDNA_B2C_TENANT = $_.Trim() + $REACT_APP_EDNA_B2C_TENANT = ($configuration_line[0]+"="+"'"+$REACT_APP_EDNA_B2C_TENANT+"'").Trim() } elseif ( $_ -Match "REACT_APP_EDNA_AUTH_CLIENT_ID"){ $configuration_line = $_ -split "=" - $old_REACT_APP_EDNA_AUTH_CLIENT_ID = $_ - $REACT_APP_EDNA_AUTH_CLIENT_ID = $configuration_line[0]+"="+"'"+$REACT_APP_EDNA_AUTH_CLIENT_ID+"'" - echo $REACT_APP_EDNA_AUTH_CLIENT_ID + $old_REACT_APP_EDNA_AUTH_CLIENT_ID = $_.Trim() + $REACT_APP_EDNA_AUTH_CLIENT_ID = ($configuration_line[0]+"="+"'"+$REACT_APP_EDNA_AUTH_CLIENT_ID+"'").Trim() } else{ - echo $false } } + echo "Old value:",$old_REACT_APP_EDNA_B2C_CLIENT_ID + $filecontent = Get-Content $dir + $filecontent -replace $old_REACT_APP_EDNA_B2C_CLIENT_ID,$REACT_APP_EDNA_B2C_CLIENT_ID | Set-Content $dir + + $filecontent = Get-Content $dir + $filecontent -replace $old_REACT_APP_EDNA_B2C_TENANT,$REACT_APP_EDNA_B2C_TENANT | Set-Content $dir + $filecontent = Get-Content $dir - $filecontent -replace $old_REACT_APP_EDNA_B2C_CLIENT_ID,$REACT_APP_EDNA_B2C_CLIENT_ID | Set-Content ".env.production" + $filecontent -replace $old_REACT_APP_EDNA_AUTH_CLIENT_ID,$REACT_APP_EDNA_AUTH_CLIENT_ID | Set-Content $dir + + [string]$dir = Get-Location + $dir += "/../client/.env.development" + + echo "New value:",$old_REACT_APP_EDNA_B2C_CLIENT_ID + + $filecontent = Get-Content $dir + $filecontent -replace $old_REACT_APP_EDNA_B2C_CLIENT_ID,$REACT_APP_EDNA_B2C_CLIENT_ID | Set-Content $dir $filecontent = Get-Content $dir - $filecontent -replace $old_REACT_APP_EDNA_B2C_TENANT,$REACT_APP_EDNA_B2C_TENANT | Set-Content ".env.production" + $filecontent -replace $old_REACT_APP_EDNA_B2C_TENANT,$REACT_APP_EDNA_B2C_TENANT | Set-Content $dir $filecontent = Get-Content $dir - $filecontent -replace $old_REACT_APP_EDNA_AUTH_CLIENT_ID,$REACT_APP_EDNA_AUTH_CLIENT_ID | Set-Content ".env.production" + $filecontent -replace $old_REACT_APP_EDNA_AUTH_CLIENT_ID,$REACT_APP_EDNA_AUTH_CLIENT_ID | Set-Content $dir + + Read-Host 'Debug stop.....' #endregion diff --git a/deployment/azuredeploy.json b/deployment/azuredeploy.json index 6b7984d7..b81c9a24 100644 --- a/deployment/azuredeploy.json +++ b/deployment/azuredeploy.json @@ -6,39 +6,9 @@ "type": "string", "defaultValue": "dc0fcdd9-727f-47a3-8f15-4dcb813919fc" }, - "variables": { - "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, '20220715045557'),0,9)]", - "functionList": [ - "connect", - "assignments", - "learncontent", - "links", - "platforms", - "users" - ], - "enabledForDeployment": false, - "enabledForDiskEncryption": false, - "enabledForTemplateDeployment": false, - "tenantId": "[subscription().tenantId]", - "skuName": "Standard", - "location": "[resourceGroup().location]", - "runtimeStack": "dotnet", - "resourceGroupName": "[resourceGroup().name]", - "StorageAccountSuffix": "[toLower(replace(variables('uniqueIdentifier'),'-',''))]", - "ProjectNameSuffix": "[concat('-', variables('StorageAccountSuffix'))]", - "staticWebsite": "[toLower(concat('learnclient', variables('StorageAccountSuffix')))]", - "keyVaultName": "[toLower(concat('kv', variables('ProjectNameSuffix')))]", - "KeyVaultAuditLogsStorageAccountName": "[toLower(concat('kv' , variables('StorageAccountSuffix'), 'auditlogs'))]", - "readerRoleDefinitionId": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]", - "KVKeyPermissions": [ - "encrypt", - "decrypt", - "wrapKey", - "unwrapKey", - "sign", - "verify", - "get" - ] + "appRegistrationApiURI": { + "type": "string", + "defaultValue": "api://10ef1e6b-1171-4888-92d5-c661b428796b" }, "userEmailAddress": { "type": "string", @@ -50,7 +20,7 @@ } }, "variables": { - "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, '80'),0,9)]", + "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, '1'),0,9)]", "functionList": [ "connect", "assignments", @@ -59,7 +29,7 @@ "platforms", "users" ], - "AzureB2C_AUTHENTICATION_SECRET": "hard-code value", + "AzureB2C_AUTHENTICATION_SECRET": "", "enabledForDeployment": false, "enabledForDiskEncryption": false, "enabledForTemplateDeployment": false, diff --git a/deployment/b2cSavedParams (2).csv b/deployment/b2cSavedParams (2).csv new file mode 100644 index 0000000000000000000000000000000000000000..7baa03ce2a9f97eabb0e7dad298e9395d0b34c00 GIT binary patch literal 674 zcma))OHaZ;6ot>)#D4;2=o6L*@kQzjjqFV6BS9%(sS92B)75VVHcf~zlXheO8yJl&6r$VoDeh zyo}g~8NoT$k^WMfg3VO(Zcw%8C*rwA_*)QJUpq$`H9cxt<$-cEQ>SRv18S7G+T{x8 zEd?9kz_4;E_3`P$Ijqt4k!VZBzV7q|^HVdvL+T`&p#8!0)_P@+@Ho*6h*0Ow!-kWX zvngKBI7!JDPV<(%Rt00rT7X*}=rV?FXYQdM5!t!hjO{I;LP(#s%N{-XM6sJlPR0-$ zFd-T5UyALX$9THf_ngqdjJr|mMvth^hzxosZqh@1l%VgK#WUw4z7xIaihtLox7^(> eJLglJWUV`PjnfKzXMg`H=CFpbBsX_x%lieKGHo*e literal 0 HcmV?d00001 From f6162836520e7ae66065f96e66cd62d31c120b45 Mon Sep 17 00:00:00 2001 From: DuyNguyen19993010 Date: Tue, 19 Jul 2022 18:39:25 +0100 Subject: [PATCH 086/285] Minor fixe --- deployment/Limited-Install-Deploy.ps1 | 1 - 1 file changed, 1 deletion(-) diff --git a/deployment/Limited-Install-Deploy.ps1 b/deployment/Limited-Install-Deploy.ps1 index 491801e6..dc227c4b 100644 --- a/deployment/Limited-Install-Deploy.ps1 +++ b/deployment/Limited-Install-Deploy.ps1 @@ -62,7 +62,6 @@ process { Write-Host $REACT_APP_EDNA_B2C_CLIENT_ID Write-Host $REACT_APP_EDNA_B2C_TENANT Write-Host $REACT_APP_EDNA_AUTH_CLIENT_ID - Read-Host "Debug stop" #region Show Learn LTI Banner Write-Host '' Write-Host ' _ ______ _____ _ _ _ _______ _____ ' From 035c94144daab6ec6ee4b3fdd3b721d6e04dfa08 Mon Sep 17 00:00:00 2001 From: DuyNguyen19993010 Date: Tue, 19 Jul 2022 18:39:50 +0100 Subject: [PATCH 087/285] Minor fix --- deployment/Limited-Install-Deploy.ps1 | 3 --- 1 file changed, 3 deletions(-) diff --git a/deployment/Limited-Install-Deploy.ps1 b/deployment/Limited-Install-Deploy.ps1 index dc227c4b..c3a8b06c 100644 --- a/deployment/Limited-Install-Deploy.ps1 +++ b/deployment/Limited-Install-Deploy.ps1 @@ -172,9 +172,6 @@ process { $filecontent = Get-Content $dir $filecontent -replace $old_REACT_APP_EDNA_AUTH_CLIENT_ID,$REACT_APP_EDNA_AUTH_CLIENT_ID | Set-Content $dir - - - Read-Host 'Debug stop.....' #endregion From a5c42ea654630da12086d0a771c706a8ec2238db Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Wed, 20 Jul 2022 11:51:14 +0100 Subject: [PATCH 088/285] Replaced .csv argument passing with return statement --- deployment/.gitignore | 2 +- deployment/B2CDeployment.ps1 | 25 ++------------------ deployment/Limited-Install-Deploy.ps1 | 33 +++++++-------------------- 3 files changed, 11 insertions(+), 49 deletions(-) diff --git a/deployment/.gitignore b/deployment/.gitignore index 3ccebef0..1c62faa5 100644 --- a/deployment/.gitignore +++ b/deployment/.gitignore @@ -1,4 +1,4 @@ -_Temp* +*Temp* CustomPolicy/* manifest.json AppInfo.csv diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 0876797b..3b811552 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -564,26 +564,5 @@ CustomPolicyUpdateOrUpload "B2C_1A_ProfileEdit" $customPolicies $access_token CustomPolicyUpdateOrUpload "B2C_1A_PasswordReset" $customPolicies $access_token #endregion -#region "saving needed params to a .csv to be passed to the Deploy.ps1" -Write-Title "Saving params to b2cSavedParams.csv to be passed to Deploy.ps1; this will automatically be cleaned up after the values are loaded" -#TODO - perhaps in future change it to argument passing instead of via the .csv file; done for now for ease of prototyping - -$b2cSavedParamsPath = ".\b2cSavedParams.csv" -if(Test-Path $b2cSavedParamsPath -PathType Leaf){ - Clear-Content $b2cSavedParamsPath -} -else{ - New-Item $b2cSavedParamsPath > $null -} - -"MultiTenantAppID,$MultiTenantAppID" | Out-File -FilePath $b2cSavedParamsPath -Append -"MultiTenantAppSecret,$MultiTenantAppSecret" | Out-File -FilePath $b2cSavedParamsPath -Append -"WebClientID,$WebClientID" | Out-File -FilePath $b2cSavedParamsPath -Append -"WebClientSecret,$WebClientSecret" | Out-File -FilePath $b2cSavedParamsPath -Append -"PermissionClientID,$PermissionClientID" | Out-File -FilePath $b2cSavedParamsPath -Append -"PermissionClientSecret,$PermissionClientSecret" | Out-File -FilePath $b2cSavedParamsPath -Append -"B2cTenantName,$B2cTenantName" | Out-File -FilePath $b2cSavedParamsPath -Append -#TODO - add code to load these into the deploy script when needed -#TODO - prune this to only include those that are actually used - -#endregion \ No newline at end of file +#returning values required by the Deploy.ps1 script +return $WebClientID, $WebClientSecret, $B2cTenantName \ No newline at end of file diff --git a/deployment/Limited-Install-Deploy.ps1 b/deployment/Limited-Install-Deploy.ps1 index c3a8b06c..f1138d28 100644 --- a/deployment/Limited-Install-Deploy.ps1 +++ b/deployment/Limited-Install-Deploy.ps1 @@ -37,31 +37,14 @@ process { $clientId = "7979bcbb-c70b-46f0-b229-0e3f9cec56a5" $apiURI = "api://7979bcbb-c70b-46f0-b229-0e3f9cec56a5" - #Initializing B2C parameters - $b2c_secret = "hard-code value" - $REACT_APP_EDNA_B2C_CLIENT_ID = 'hard-code client id' - $REACT_APP_EDNA_B2C_TENANT = 'hard-code b2c tenant' - $REACT_APP_EDNA_AUTH_CLIENT_ID = 'hard-code client id' - - $headers = "Parameter","Value" - $configurations = (Import-CSV -Path "b2cSavedParams (2).csv" -Header $headers) - ForEach($row in $configurations) { - switch($row."Parameter"){ - "WebClientID" { - - $REACT_APP_EDNA_B2C_CLIENT_ID = $row."Value" - - $REACT_APP_EDNA_AUTH_CLIENT_ID =$row."Value" - } - "WebClientSecret" { $b2c_secret = $row."Value"} - "B2cTenantName" { $REACT_APP_EDNA_B2C_TENANT = $row."Value" } - } - } - - Write-Host $b2c_secret - Write-Host $REACT_APP_EDNA_B2C_CLIENT_ID - Write-Host $REACT_APP_EDNA_B2C_TENANT - Write-Host $REACT_APP_EDNA_AUTH_CLIENT_ID + #region "Calling B2CDeployment and retrieving the returned values" + $results = powershell.exe -file ".\B2CDeployment.ps1" + $REACT_APP_EDNA_B2C_CLIENT_ID = $results[0] #webclient ID + $REACT_APP_EDNA_AUTH_CLIENT_ID = $results[0] #webclient ID + $b2c_secret = $results[1] #webclient secret + $REACT_APP_EDNA_B2C_TENANT = $results[2] #b2c tenant name + #endregion + #region Show Learn LTI Banner Write-Host '' Write-Host ' _ ______ _____ _ _ _ _______ _____ ' From 6656e3718b29470887c49b83d9a44fe1b8ceba9f Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Wed, 20 Jul 2022 12:19:31 +0100 Subject: [PATCH 089/285] Modified Deploy.ps1 to give user choice of running in AD vs B2C; and extracted B2C set up components from Limited-Install-Deploy into the main deploy --- deployment/Deploy.ps1 | 94 ++++++++++++++++++++++++--- deployment/Limited-Install-Deploy.ps1 | 70 -------------------- 2 files changed, 84 insertions(+), 80 deletions(-) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index c69a9f21..0768840d 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -20,11 +20,6 @@ process { } try { - #region "TEMPORARY VALUES - REMOVE THESE" - #TODO - REMOVE THESE - $b2c_secret = "hard-code value" - #endregion - #region "formatting a unique identifier to ensure we create a new keyvault for each run" $uniqueIdentifier = [Int64]((Get-Date).ToString('yyyyMMddhhmmss')) #get the current second as being the unique identifier ((Get-Content -path ".\azuredeployTemplate.json" -Raw) -replace '', ("'"+$uniqueIdentifier+"'")) | Set-Content -path (".\azuredeploy.json") @@ -42,6 +37,13 @@ process { Write-Host '' #endregion + #region "getting the setup mode for b2c vs ad" + $b2cOrAD = "none" + while($b2cOrAD -ne "b2c" -and $b2cOrAD -ne "ad") { + $b2cOrAD = Read-Host "Would you like to set this up with b2c or AD? (b2c/ad) (b2c recommended as it can be single tenant or multitenant, ad only single tenant [less scalable])" + } + #endregion + #region Setup Logging . .\Write-Log.ps1 $ScriptPath = split-path -parent $MyInvocation.MyCommand.Definition @@ -55,6 +57,24 @@ process { Start-Transcript -Path $TranscriptFile; #endregion + + #region "B2C STEP 1: Calling B2CDeployment to set up the b2c script and retrieving the returned values to be used later on" + $REACT_APP_EDNA_B2C_CLIENT_ID = "" + $REACT_APP_EDNA_AUTH_CLIENT_ID = "" + $b2c_secret = "" + $REACT_APP_EDNA_B2C_TENANT = "" + if($b2cOrAD -eq "b2c"){ + Write-Title "B2C Step #1: Running the B2C Setup Script" + # TODO - verify these values are correct + $results = powershell.exe -file ".\B2CDeployment.ps1" + $REACT_APP_EDNA_B2C_CLIENT_ID = $results[0] #webclient ID + $REACT_APP_EDNA_AUTH_CLIENT_ID = $results[0] #webclient ID + $b2c_secret = $results[1] #webclient secret + $REACT_APP_EDNA_B2C_TENANT = $results[2] #b2c tenant name + } + #endregion + + #region Login to Azure CLI Write-Title 'STEP #1 - Logging into Azure' @@ -84,6 +104,65 @@ process { Write-Log -Message "Successfully logged in to Azure." #endregion + #region "B2C Step 2: Update required parameter in .env.production/ .env.development for front-end build and B2C secret in azuredeploy.json" + if($b2cOrAD -eq "b2c"){ + Write-Title "B2C Step #2: updating the b2c parameters and secrets" + $b2c_secret = '"'+$b2c_secret+'"' + ((Get-Content -path ".\azuredeploy.json" -Raw) -replace '""', $b2c_secret) | Set-Content -path (".\azuredeploy.json") + + [string]$dir = Get-Location + $dir += "/../client/.env.production" + #$dir += ".env.production" + + $old_REACT_APP_EDNA_B2C_CLIENT_ID='' + $old_REACT_APP_EDNA_B2C_TENANT='' + $old_REACT_APP_EDNA_AUTH_CLIENT_ID='' + [System.IO.File]::ReadLines($dir) | ForEach-Object { + if( $_ -Match "REACT_APP_EDNA_B2C_CLIENT_ID" ){ + $configuration_line = $_ -split "=" + $old_REACT_APP_EDNA_B2C_CLIENT_ID = $_.Trim() + $REACT_APP_EDNA_B2C_CLIENT_ID = ($configuration_line[0]+"="+"'"+$REACT_APP_EDNA_B2C_CLIENT_ID+"'").Trim() + } + elseif ( $_ -Match "REACT_APP_EDNA_B2C_TENANT"){ + $configuration_line = $_ -split "=" + $old_REACT_APP_EDNA_B2C_TENANT = $_.Trim() + $REACT_APP_EDNA_B2C_TENANT = ($configuration_line[0]+"="+"'"+$REACT_APP_EDNA_B2C_TENANT+"'").Trim() + } + elseif ( $_ -Match "REACT_APP_EDNA_AUTH_CLIENT_ID"){ + $configuration_line = $_ -split "=" + $old_REACT_APP_EDNA_AUTH_CLIENT_ID = $_.Trim() + $REACT_APP_EDNA_AUTH_CLIENT_ID = ($configuration_line[0]+"="+"'"+$REACT_APP_EDNA_AUTH_CLIENT_ID+"'").Trim() + } + else{ + } + } + Write-Host "Old value:",$old_REACT_APP_EDNA_B2C_CLIENT_ID + $filecontent = Get-Content $dir + $filecontent -replace $old_REACT_APP_EDNA_B2C_CLIENT_ID,$REACT_APP_EDNA_B2C_CLIENT_ID | Set-Content $dir + + $filecontent = Get-Content $dir + $filecontent -replace $old_REACT_APP_EDNA_B2C_TENANT,$REACT_APP_EDNA_B2C_TENANT | Set-Content $dir + + $filecontent = Get-Content $dir + $filecontent -replace $old_REACT_APP_EDNA_AUTH_CLIENT_ID,$REACT_APP_EDNA_AUTH_CLIENT_ID | Set-Content $dir + + [string]$dir = Get-Location + $dir += "/../client/.env.development" + + Write-Host "New value:",$old_REACT_APP_EDNA_B2C_CLIENT_ID + + $filecontent = Get-Content $dir + $filecontent -replace $old_REACT_APP_EDNA_B2C_CLIENT_ID,$REACT_APP_EDNA_B2C_CLIENT_ID | Set-Content $dir + + $filecontent = Get-Content $dir + $filecontent -replace $old_REACT_APP_EDNA_B2C_TENANT,$REACT_APP_EDNA_B2C_TENANT | Set-Content $dir + + $filecontent = Get-Content $dir + $filecontent -replace $old_REACT_APP_EDNA_AUTH_CLIENT_ID,$REACT_APP_EDNA_AUTH_CLIENT_ID | Set-Content $dir + } + + #endregion + #region Choose Active Subcription Write-Title 'STEP #2 - Choose Subscription' @@ -161,11 +240,6 @@ process { } #endregion - Write-Title "Choose the authentication mode from below`r`n1.AD mode`r`n2.B2C mode" - [int]$ch = Read-Host "choose the mode by typing it's index (for eg: for AD mode, enter 1):" - - - #region Create New App Registration in AzureAD Write-Title 'STEP #4 - Registering Azure Active Directory App' diff --git a/deployment/Limited-Install-Deploy.ps1 b/deployment/Limited-Install-Deploy.ps1 index f1138d28..6c420cc2 100644 --- a/deployment/Limited-Install-Deploy.ps1 +++ b/deployment/Limited-Install-Deploy.ps1 @@ -37,14 +37,6 @@ process { $clientId = "7979bcbb-c70b-46f0-b229-0e3f9cec56a5" $apiURI = "api://7979bcbb-c70b-46f0-b229-0e3f9cec56a5" - #region "Calling B2CDeployment and retrieving the returned values" - $results = powershell.exe -file ".\B2CDeployment.ps1" - $REACT_APP_EDNA_B2C_CLIENT_ID = $results[0] #webclient ID - $REACT_APP_EDNA_AUTH_CLIENT_ID = $results[0] #webclient ID - $b2c_secret = $results[1] #webclient secret - $REACT_APP_EDNA_B2C_TENANT = $results[2] #b2c tenant name - #endregion - #region Show Learn LTI Banner Write-Host '' Write-Host ' _ ______ _____ _ _ _ _______ _____ ' @@ -99,68 +91,6 @@ process { Write-Log -Message "Successfully logged in to Azure." #endregion - - - #region "updating the b2c parameters and secrets" - $b2c_secret = '"'+$b2c_secret+'"' - ((Get-Content -path ".\azuredeploy.json" -Raw) -replace '""', $b2c_secret) | Set-Content -path (".\azuredeploy.json") - - [string]$dir = Get-Location - $dir += "/../client/.env.production" - #$dir += ".env.production" - - $old_REACT_APP_EDNA_B2C_CLIENT_ID='' - $old_REACT_APP_EDNA_B2C_TENANT='' - $old_REACT_APP_EDNA_AUTH_CLIENT_ID='' - [System.IO.File]::ReadLines($dir) | ForEach-Object { - if( $_ -Match "REACT_APP_EDNA_B2C_CLIENT_ID" ){ - $configuration_line = $_ -split "=" - $old_REACT_APP_EDNA_B2C_CLIENT_ID = $_.Trim() - $REACT_APP_EDNA_B2C_CLIENT_ID = ($configuration_line[0]+"="+"'"+$REACT_APP_EDNA_B2C_CLIENT_ID+"'").Trim() - } - elseif ( $_ -Match "REACT_APP_EDNA_B2C_TENANT"){ - $configuration_line = $_ -split "=" - $old_REACT_APP_EDNA_B2C_TENANT = $_.Trim() - $REACT_APP_EDNA_B2C_TENANT = ($configuration_line[0]+"="+"'"+$REACT_APP_EDNA_B2C_TENANT+"'").Trim() - } - elseif ( $_ -Match "REACT_APP_EDNA_AUTH_CLIENT_ID"){ - $configuration_line = $_ -split "=" - $old_REACT_APP_EDNA_AUTH_CLIENT_ID = $_.Trim() - $REACT_APP_EDNA_AUTH_CLIENT_ID = ($configuration_line[0]+"="+"'"+$REACT_APP_EDNA_AUTH_CLIENT_ID+"'").Trim() - } - else{ - } - } - echo "Old value:",$old_REACT_APP_EDNA_B2C_CLIENT_ID - $filecontent = Get-Content $dir - $filecontent -replace $old_REACT_APP_EDNA_B2C_CLIENT_ID,$REACT_APP_EDNA_B2C_CLIENT_ID | Set-Content $dir - - $filecontent = Get-Content $dir - $filecontent -replace $old_REACT_APP_EDNA_B2C_TENANT,$REACT_APP_EDNA_B2C_TENANT | Set-Content $dir - - $filecontent = Get-Content $dir - $filecontent -replace $old_REACT_APP_EDNA_AUTH_CLIENT_ID,$REACT_APP_EDNA_AUTH_CLIENT_ID | Set-Content $dir - - [string]$dir = Get-Location - $dir += "/../client/.env.development" - - echo "New value:",$old_REACT_APP_EDNA_B2C_CLIENT_ID - - $filecontent = Get-Content $dir - $filecontent -replace $old_REACT_APP_EDNA_B2C_CLIENT_ID,$REACT_APP_EDNA_B2C_CLIENT_ID | Set-Content $dir - - $filecontent = Get-Content $dir - $filecontent -replace $old_REACT_APP_EDNA_B2C_TENANT,$REACT_APP_EDNA_B2C_TENANT | Set-Content $dir - - $filecontent = Get-Content $dir - $filecontent -replace $old_REACT_APP_EDNA_AUTH_CLIENT_ID,$REACT_APP_EDNA_AUTH_CLIENT_ID | Set-Content $dir - - #endregion - - - - - #region Choose Active Subcription Write-Title 'STEP #2 - Choose Subscription' From f6325e23217898a58f3f25ddec8e474df24dd2ed Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Wed, 20 Jul 2022 14:26:23 +0100 Subject: [PATCH 090/285] Updated appname and RGname for testing purposes --- deployment/Deploy.ps1 | 4 ++-- deployment/azuredeploy.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 0768840d..78e37084 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "RB_a2_MSLearnLTI", - [string]$AppName = "RB_a2_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "DM_a01_MSLearnLTI", + [string]$AppName = "DM_a01_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null diff --git a/deployment/azuredeploy.json b/deployment/azuredeploy.json index b81c9a24..77ee52a6 100644 --- a/deployment/azuredeploy.json +++ b/deployment/azuredeploy.json @@ -20,7 +20,7 @@ } }, "variables": { - "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, '1'),0,9)]", + "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, '20220720021040'),0,9)]", "functionList": [ "connect", "assignments", From dcc61160b3488ab5a379817320259cd1fd295463 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Wed, 20 Jul 2022 15:43:13 +0100 Subject: [PATCH 091/285] removed old unique ID that caused crashes so it isn't overwriting the newer one that uses datetime --- deployment/Cleanup.ps1 | 4 ++-- deployment/Deploy.ps1 | 15 +++------------ deployment/azuredeploy.json | 2 +- 3 files changed, 6 insertions(+), 15 deletions(-) diff --git a/deployment/Cleanup.ps1 b/deployment/Cleanup.ps1 index 982b384d..cff4c1c3 100644 --- a/deployment/Cleanup.ps1 +++ b/deployment/Cleanup.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "DM_a01_MSLearnLTI", - [string]$AppName = "DM_a01_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "DM_ad2_MSLearnLTI", + [string]$AppName = "DM_ad2_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null ) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 32380791..1457e82a 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "DM_a01_MSLearnLTI", - [string]$AppName = "DM_a01_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "DM_ad2_MSLearnLTI", + [string]$AppName = "DM_ad2_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null @@ -284,21 +284,12 @@ process { [int]$azver0= (az version | ConvertFrom-Json | Select -ExpandProperty "azure-cli").Split(".")[0] [int]$azver1= (az version | ConvertFrom-Json | Select -ExpandProperty "azure-cli").Split(".")[1] - if( $azver0 -ge 2 && $azver1 -ge 37){ + if( $azver0 -ge 2 -and $azver1 -ge 37){ $userObjectId = az ad signed-in-user show --query id } else { $userObjectId = az ad signed-in-user show --query objectId } - #$userObjectId - - [string]$dir = Get-Location - $dir = $dir + "/azuredeploy.json" - [string]$ran = Get-Random -Maximum 1000 - - $json = Get-Content $dir | ConvertFrom-Json - $json.variables.uniqueIdentifier = "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, $ran),0,9)]" - $json | ConvertTo-Json | Out-File $dir $templateFileName = "azuredeploy.json" $deploymentName = "Deployment-$ExecutionStartTime" diff --git a/deployment/azuredeploy.json b/deployment/azuredeploy.json index 77ee52a6..0707ecc1 100644 --- a/deployment/azuredeploy.json +++ b/deployment/azuredeploy.json @@ -20,7 +20,7 @@ } }, "variables": { - "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, '20220720021040'),0,9)]", + "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, '20220720025848'),0,9)]", "functionList": [ "connect", "assignments", From 3d2cef01d5581382a72e231fea7bf6c6f41355ff Mon Sep 17 00:00:00 2001 From: Lilin Huang Date: Thu, 21 Jul 2022 14:03:10 +0100 Subject: [PATCH 092/285] Add a new claim to identify the b2c token. --- .../B2C_1A_TrustFrameworkExtensions.xml | 10 +++++++++- .../CustomPolicyTemplates/B2C_1A_signup_signin.xml | 1 + 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/deployment/CustomPolicyTemplates/B2C_1A_TrustFrameworkExtensions.xml b/deployment/CustomPolicyTemplates/B2C_1A_TrustFrameworkExtensions.xml index 1a2e4705..c3eb698c 100644 --- a/deployment/CustomPolicyTemplates/B2C_1A_TrustFrameworkExtensions.xml +++ b/deployment/CustomPolicyTemplates/B2C_1A_TrustFrameworkExtensions.xml @@ -3,7 +3,15 @@ <>.onmicrosoft.com B2C_1A_TrustFrameworkLocalization - + + + + _isB2CToken + boolean + To identify if the token is a b2c token. + + + commonaad diff --git a/deployment/CustomPolicyTemplates/B2C_1A_signup_signin.xml b/deployment/CustomPolicyTemplates/B2C_1A_signup_signin.xml index 63e9b14d..3f4a63da 100644 --- a/deployment/CustomPolicyTemplates/B2C_1A_signup_signin.xml +++ b/deployment/CustomPolicyTemplates/B2C_1A_signup_signin.xml @@ -16,6 +16,7 @@ + From 39c699c1a7fd6715f130770ca50ca56be12130b9 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Thu, 21 Jul 2022 17:49:08 +0100 Subject: [PATCH 093/285] Added functionality for whitelisting tenants we wish to give access to via the b2c --- deployment/B2CDeployment.ps1 | 74 +++++++++++++----- deployment/B2C_Docs/B2C_Deployment.md | 15 +++- .../Images/Deployment/07_failWhitelist.png | Bin 0 -> 40189 bytes .../Deployment/07_successfulWhitelist.png | Bin 0 -> 19607 bytes .../B2C_1A_TrustFrameworkExtensions.xml | 4 +- 5 files changed, 68 insertions(+), 25 deletions(-) create mode 100644 deployment/B2C_Docs/Images/Deployment/07_failWhitelist.png create mode 100644 deployment/B2C_Docs/Images/Deployment/07_successfulWhitelist.png diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 3b811552..9c9db8d3 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -203,9 +203,41 @@ az ad app permission add --id $PermissionClientID --api 00000003-0000-0000-c000- az ad app permission admin-consent --id $PermissionClientID --only-show-errors #endregion +#region "STEP 7: restrict access via whitelisting tenants" +# https://docs.microsoft.com/en-us/azure/active-directory-b2c/identity-provider-azure-ad-multi-tenant?pivots=b2c-custom-policy#restrict-access +Write-Title "STEP 7: Creating a whitelist for the tenants we wish to give access to" +Write-Host "Important - if no tenants are whitelisted; nobody will be able to access the AD" +$continue = "y" +$whitelist = @() +while($continue -eq "y"){ + $wlTenantID = Read-Host "Please enter the tenant ID field of the tenant you wish to add to the whitelist: " -#region "STEP 7: (Optional) linking facebook apps" -Write-Title "STEP 7: (Optional) linking facebook app" + try{ + #region "HTTP request to get the issuer claim we want to add to the whitelist" + $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" + $headers.Add("Cookie", "esctx=AQABAAAAAAD--DLA3VO7QrddgJg7Wevrz5AJFK2BuCxYc25okcgEMIhli-M9GRnC77gX9U2agXqRChe5Tk3qNfEPzYWBnDAUp-o9RWFY5KNcFx-vXSzS0awJmoC7qDfdimSHwN_cVTAk3AVnFnGSxQfcY9xfjJxnZI_bqBXjO6MUJ0rjdw14dd7jnRNLmUGqljuVubDJWG8gAA; fpc=AkuS-X1BCTpNr-MiUS-IqaM; stsservicecookie=estsfd; x-ms-gateway-slice=estsfd") + + $response = Invoke-RestMethod "https://login.microsoftonline.com/$wlTenantID/v2.0/.well-known/openid-configuration" -Method 'GET' -Headers $headers + $issuer = $response.issuer + #endregion + + $whitelist += $issuer #adding the issuer for this tenant to the whitelist + } + catch{ + Write-Host "" + Write-Error ("HTTP request to get the issuer claim failed, please ensure the tenant ID is correct`n`n"+$Error[0]) + Write-Host "" + } + + $continue = Read-Host "Would you like to add another tenant? (y/n)" +} + +$whitelistString = $whitelist -join "," +#endregion + + +#region "STEP 8: (Optional) linking facebook apps" +Write-Title "STEP 8: (Optional) linking facebook app" $HasFaceBookApp = "" while($HasFaceBookApp -ne "y" -and $HasFaceBookApp -ne "n"){ $HasFaceBookApp = Read-Host "Do you have a facebook application set up that you'd like to link? (y/n)" @@ -219,16 +251,16 @@ if($HasFaceBookApp -eq "y"){ #endregion -#region "STEP 8: looping through each CustomPolicyTemplate and creating bases of them in CustomTemplates" -Write-Title "STEP 8: Creating template custom policies" +#region "STEP 9: looping through each CustomPolicyTemplate and creating bases of them in CustomTemplates" +Write-Title "STEP 9: Creating template custom policies" Get-ChildItem ".\CustomPolicyTemplates\" | Foreach-Object { ((Get-Content -path $_.FullName -Raw)) | Set-Content -path (".\CustomPolicy\"+$_.Name) } #endregion -#region "STEP 9: looping through each CustomPolicy and replacing their placeholder values to generate the final custom policies" -Write-Title "STEP 9: Replacing values in template custom policies to generate finalised custom policies" +#region "Step 10: looping through each CustomPolicy and replacing their placeholder values to generate the final custom policies" +Write-Title "Step 10: Replacing values in template custom policies to generate finalised custom policies" Get-ChildItem ".\CustomPolicy\" | Foreach-Object { #ignore the gitkeep if($_.Name -ne ".gitkeep"){ @@ -241,12 +273,15 @@ Get-ChildItem ".\CustomPolicy\" | Foreach-Object { ((Get-Content -path $_.FullName -Raw) -replace '<>', $FacebookId) | Set-Content -path (".\CustomPolicy\"+$_.Name) ((Get-Content -path $_.FullName -Raw) -replace '<>', $MultitenantAppID) | Set-Content -path (".\CustomPolicy\"+$_.Name) + + ((Get-Content -path $_.FullName -Raw) -replace '<>', $whitelistString) | Set-Content -path (".\CustomPolicy\"+$_.Name) + } } #endregion -#region "STEP 10: Add signing and encryption keys and AADAppSecret for the IEF applications" +#region "STEP 11: Add signing and encryption keys and AADAppSecret for the IEF applications" #region "Function for calculating the not before and expiry datetimes for the keys" function getNbfExp($num_months){ @@ -259,13 +294,14 @@ function getNbfExp($num_months){ } #endregion -Write-Title "STEP 10: Adding signing and encryption keys and AADAppSecret for the IEF applications" +Write-Title "Step 11: Adding signing and encryption keys and AADAppSecret for the IEF applications" $num_months = 0 while($num_months -le 0){ [uint16] $num_months = Read-Host "How many months do you want the keys to be valid for? (must be greater than 0)" } + Write-Host "Getting the token to be used in the HTML Requests and the list of existing keysets to check for conflicts when creating new ones" $response = "" $keysets = "" @@ -304,10 +340,9 @@ while(1){ Read-Host "Press enter after manually granting the admin consent permission" } } -#endregion -#region "STEP 10.A: Create the signing key" -Write-Title "STEP 10.A: Creating the Signing Key" +#region "Step 11.A: Create the signing key" +Write-Title "Step 11.A: Creating the Signing Key" if($keysets -contains "B2C_1A_TokenSigningKeyContainer"){ Read-Host "B2C_1A_TokenSigningKeyContainer already exists, so cannot upload it again. If this is not expected, please terminate this script and run B2CCleanup.ps1 first." @@ -357,8 +392,8 @@ else{ #endregion -#region "STEP 10.B: Create the encryption key" -Write-Title "STEP 10.B: Creating the Signing Key" +#region "Step 11.B: Create the encryption key" +Write-Title "Step 11.B: Creating the Signing Key" if($keysets -contains "B2C_1A_TokenSigningKeyContainer"){ Read-Host "B2C_1A_TokenSigningKeyContainer already exists, so cannot upload it again. If this is not expected, please terminate this script and run B2CCleanup.ps1 first." @@ -407,8 +442,8 @@ Write-Host "Successfully generated and uploaded the encryption key" #endregion -#region "STEP 10.C: Create the AADSecret keyset" -Write-Title "STEP 10.C: Creating the AADAppSecret Key" +#region "Step 11.C: Create the AADSecret keyset" +Write-Title "Step 11.C: Creating the AADAppSecret Key" if($keysets -contains "B2C_1A_AADAppSecret"){ Read-Host "B2C_1A_AADAppSecret already exists, so cannot upload it again. If this is not expected, please terminate this script and run B2CCleanup.ps1 first." @@ -457,9 +492,9 @@ else{ #endregion -#region "STEP 10.D: Create the Facebook keyset" +#region "Step 11.D: Create the Facebook keyset" #TODO - eventually only run this step if we are using Facebook (and then use different contract templates for linking facebook vs without) -Write-Title "STEP 10.D: Creating the Facebook Key" +Write-Title "Step 11.D: Creating the Facebook Key" if($keysets -contains "B2C_1A_FacebookSecret"){ Read-Host "B2C_1A_FacebookSecret already exists, so cannot upload it again. If this is not expected, please terminate this script and run B2CCleanup.ps1 first." @@ -506,9 +541,10 @@ else{ } #endregion +#endregion #endregion -#region "STEP 11: uploading the custom policies to the b2c tenant" +#region "STEP 12: uploading the custom policies to the b2c tenant" #region "Function for updating existing custom policy or uploading new custom policies" function CustomPolicyUpdateOrUpload($customPolicyName, $customPolicies, $access_token) { @@ -542,7 +578,7 @@ function CustomPolicyUpdateOrUpload($customPolicyName, $customPolicies, $access_ } #endregion -Write-Title "STEP 11: Uploading the custom policies to the b2c tenant" +Write-Title "STEP 12: Uploading the custom policies to the b2c tenant" #getting list of all users in the tenant Write-Host "Getting the list of all custom policies in the tenant" diff --git a/deployment/B2C_Docs/B2C_Deployment.md b/deployment/B2C_Docs/B2C_Deployment.md index 4e360f7f..7248d74d 100644 --- a/deployment/B2C_Docs/B2C_Deployment.md +++ b/deployment/B2C_Docs/B2C_Deployment.md @@ -11,6 +11,7 @@ * 1x AD tenant * 1x B2C tenant * If not already set up information is available [here](https://docs.microsoft.com/en-us/azure/active-directory-b2c/tutorial-create-tenant) at step 1: "Create an Azure AD B2C Tenant" +* You should have ready a **list of the tenant id's for the tenants you wish to give access** ## Starting The Script @@ -93,7 +94,13 @@ * ![secret PMA value](Images/Deployment/06b_secret.png) -## Step 7: (Optional) linking facebook app +## Step 7: Creating a whitelist for the tenants we wish to give access to + +* Now input 1 by 1 the tenant id's for each of the tenants you wish to give access to. After inputting each one's ID, select 'y' to continue until you have input them all then select 'n' + * ![inputting ID's](Images/Deployment/07_successfulWhitelist.png) +* if at any point you see an error as shown below, contact the system admin for that tenant to verify they sent you the correct ID + * ![failure to get issuer claim](Images/Deployment/07_failWhitelist.png) +## Step 8: (Optional) linking facebook app ### Don't link Facebook App @@ -110,11 +117,11 @@ -## Step 8 & 9: Creating and Generating Custom Policies from templates +## Step 9 & 10: Creating and Generating Custom Policies from templates * No user input is required in these steps; simply wait for them to finish -## Step 10: Adding Signing and Encryption keys and AADAppSecret for the IEF Applications +## Step 11: Adding Signing and Encryption keys and AADAppSecret for the IEF Applications ### Input key duration * You will first be prompted to input how long you wish the created keys to be valid for before they expire @@ -139,7 +146,7 @@ * The script should then continue without requiring any further user inputs -## Step 11: Creating the AADAppSecret Key +## Step 12: Creating the AADAppSecret Key * No user input is required in this step; simply wait for it to finish * Upon this steps completion the B2C setup is now complete and can be configured with Learn-LTI diff --git a/deployment/B2C_Docs/Images/Deployment/07_failWhitelist.png b/deployment/B2C_Docs/Images/Deployment/07_failWhitelist.png new file mode 100644 index 0000000000000000000000000000000000000000..db657e6d48a651ece02ac2b658be3f220f660075 GIT binary patch literal 40189 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 literal 0 HcmV?d00001 diff --git a/deployment/B2C_Docs/Images/Deployment/07_successfulWhitelist.png b/deployment/B2C_Docs/Images/Deployment/07_successfulWhitelist.png new file mode 100644 index 0000000000000000000000000000000000000000..556c5470b38b73b3c1c5cda60bc74bd70d4b13ba GIT binary patch literal 19607 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 kyoceuD%&UHx3vIVCg!03)h0Jpcdz literal 0 HcmV?d00001 diff --git a/deployment/CustomPolicyTemplates/B2C_1A_TrustFrameworkExtensions.xml b/deployment/CustomPolicyTemplates/B2C_1A_TrustFrameworkExtensions.xml index 1a2e4705..024aa0ba 100644 --- a/deployment/CustomPolicyTemplates/B2C_1A_TrustFrameworkExtensions.xml +++ b/deployment/CustomPolicyTemplates/B2C_1A_TrustFrameworkExtensions.xml @@ -24,9 +24,9 @@ false true - + <> - https://login.microsoftonline.com/ + From fa8174994137fcbfe96caf318b3eeff54ac9ac72 Mon Sep 17 00:00:00 2001 From: Tianchen Zhang Date: Thu, 21 Jul 2022 18:58:46 +0100 Subject: [PATCH 094/285] set customized hardcode values --- .gitignore | 3 +++ deployment/Deploy.ps1 | 4 ++-- deployment/Limited-Install-Deploy.ps1 | 4 ++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index dfcfd56f..de1b9a66 100644 --- a/.gitignore +++ b/.gitignore @@ -348,3 +348,6 @@ MigrationBackup/ # Ionide (cross platform F# VS Code tools) working folder .ionide/ + +# Jetbrains working folder +**/.idea \ No newline at end of file diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 8138a17b..e84dba2d 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "RB_a2_MSLearnLTI", - [string]$AppName = "RB_a2_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "TZ_policy_validation", + [string]$AppName = "TZ_policy_val_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null diff --git a/deployment/Limited-Install-Deploy.ps1 b/deployment/Limited-Install-Deploy.ps1 index 670b23c9..a6eeb91d 100644 --- a/deployment/Limited-Install-Deploy.ps1 +++ b/deployment/Limited-Install-Deploy.ps1 @@ -13,8 +13,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "RB_policy2_MSLearnLTI", - [string]$AppName = "RB_policy2_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "TZ_policy_validation", + [string]$AppName = "TZ_policy_val_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null From 016f6bf86f8fc4fc2edbed7b4441e7996757023f Mon Sep 17 00:00:00 2001 From: Tianchen Zhang Date: Thu, 21 Jul 2022 19:55:46 +0100 Subject: [PATCH 095/285] fix: npm dependency issues --- client/package-lock.json | 21036 +------------------------------------ client/package.json | 7 +- 2 files changed, 50 insertions(+), 20993 deletions(-) diff --git a/client/package-lock.json b/client/package-lock.json index 95fcbe35..26d58c00 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -1,20916 +1,8 @@ { "name": "edna-lite", "version": "1.0.0", - "lockfileVersion": 2, + "lockfileVersion": 1, "requires": true, - "packages": { - "": { - "name": "edna-lite", - "version": "1.0.0", - "dependencies": { - "@fluentui/react": "^7.110.3", - "@types/lodash": "^4.14.150", - "@types/node": "^12.12.37", - "@types/react": "^16.9.34", - "@types/react-dom": "^16.9.7", - "@types/react-router-dom": "^5.1.5", - "@types/react-virtualized-auto-sizer": "^1.0.0", - "@types/react-window": "^1.8.2", - "@types/uuid": "^7.0.3", - "@uifabric/fluent-theme": "^7.1.88", - "axios": "^0.21.2", - "mobx": "^5.15.4", - "mobx-react-lite": "^2.0.6", - "mobx-utils": "^5.5.7", - "moment": "^2.25.3", - "msal": "^1.3.0", - "react": "^17.0.1", - "react-aad-msal": "^2.3.5", - "react-dom": "^17.0.1", - "react-router-dom": "^5.1.2", - "react-virtualized-auto-sizer": "^1.0.2", - "react-window": "^1.8.5", - "rxjs": "^7.0.0", - "uuid": "^8.0.0", - "web-vitals": "^0.2.4" - }, - "devDependencies": { - "@testing-library/jest-dom": "^5.11.6", - "@testing-library/react": "^11.2.2", - "@testing-library/user-event": "^12.2.2", - "@types/jest": "^24.9.1", - "@typescript-eslint/eslint-plugin": "^4.33.0", - "@typescript-eslint/parser": "^4.33.0", - "eslint": "^7.32.0", - "eslint-config-prettier": "^6.11.0", - "eslint-config-react": "^1.1.7", - "eslint-plugin-prettier": "^3.1.3", - "eslint-plugin-react": "^7.29.4", - "prettier": "^2.7.1", - "react-scripts": "^5.0.0", - "typescript": "^4.1.2" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", - "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@apideck/better-ajv-errors": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.3.tgz", - "integrity": "sha512-9o+HO2MbJhJHjDYZaDxJmSDckvDpiuItEsrIShV0DXeCshXWRHhqYyU/PKHMkuClOmFnZhRd6wzv4vpDu/dRKg==", - "dev": true, - "dependencies": { - "json-schema": "^0.4.0", - "jsonpointer": "^5.0.0", - "leven": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "ajv": ">=8" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", - "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.9.tgz", - "integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.9", - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helpers": "^7.17.9", - "@babel/parser": "^7.17.9", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/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, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/eslint-parser": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.17.0.tgz", - "integrity": "sha512-PUEJ7ZBXbRkbq3qqM/jZ2nIuakUBqCYc7Qf52Lj7dlZ6zERnqisdHioL0l4wwQZnmskMeasqUNzLBFKs3nylXA==", - "dev": true, - "dependencies": { - "eslint-scope": "^5.1.1", - "eslint-visitor-keys": "^2.1.0", - "semver": "^6.3.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || >=14.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.11.0", - "eslint": "^7.5.0 || ^8.0.0" - } - }, - "node_modules/@babel/eslint-parser/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, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", - "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/generator/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", - "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", - "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", - "dev": true, - "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.16.7", - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", - "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-compilation-targets/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, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz", - "integrity": "sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-member-expression-to-functions": "^7.17.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz", - "integrity": "sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "regexpu-core": "^5.0.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", - "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0-0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/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, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", - "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", - "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", - "dev": true, - "dependencies": { - "@babel/template": "^7.16.7", - "@babel/types": "^7.17.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", - "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.17.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", - "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", - "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", - "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-wrap-function": "^7.16.8", - "@babel/types": "^7.16.8" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", - "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-member-expression-to-functions": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", - "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.17.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", - "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", - "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", - "dev": true, - "dependencies": { - "@babel/helper-function-name": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.8", - "@babel/types": "^7.16.8" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", - "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", - "dev": true, - "dependencies": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", - "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/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/@babel/parser": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz", - "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz", - "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", - "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", - "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-remap-async-to-generator": "^7.16.8", - "@babel/plugin-syntax-async-generators": "^7.8.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", - "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.17.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz", - "integrity": "sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.17.6", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, - "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.9.tgz", - "integrity": "sha512-EfH2LZ/vPa2wuPwJ26j+kYRkaubf89UlwxKXtxqEm57HrgSEYDB8t4swFP+p8LcI9yiP9ZRJJjo/58hS6BnaDA==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.17.9", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/plugin-syntax-decorators": "^7.17.0", - "charcodes": "^0.2.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", - "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", - "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", - "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-json-strings": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", - "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", - "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", - "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz", - "integrity": "sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.17.0", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", - "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", - "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.16.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", - "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.10", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", - "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", - "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-decorators": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.17.0.tgz", - "integrity": "sha512-qWe85yCXsvDEluNP0OyeQjH63DlhAR3W7K9BxxU1MvbDb48tgBG+Ao6IJJ6smPDrrVzSQZrbF6donpkFBMcs3A==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-flow": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.16.7.tgz", - "integrity": "sha512-UDo3YGQO0jH6ytzVwgSLv9i/CzMcUjbKenL67dTrAZPPv6GFAtDhe6jqnvmoKzC/7htNTohhos+onPtDMqJwaQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz", - "integrity": "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz", - "integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", - "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", - "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-remap-async-to-generator": "^7.16.8" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", - "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", - "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", - "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-classes/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/@babel/plugin-transform-computed-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", - "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz", - "integrity": "sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", - "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", - "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", - "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", - "dev": true, - "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-flow-strip-types": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.16.7.tgz", - "integrity": "sha512-mzmCq3cNsDpZZu9FADYYyfZJIOrSONmHcop2XEKPdBNMa4PDC4eEvcOvzZaCNcjKu72v0XQlA5y1g58aLRXdYg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-flow": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", - "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", - "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", - "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", - "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", - "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz", - "integrity": "sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.17.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz", - "integrity": "sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==", - "dev": true, - "dependencies": { - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", - "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz", - "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", - "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", - "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", - "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", - "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-constant-elements": { - "version": "7.17.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.17.6.tgz", - "integrity": "sha512-OBv9VkyyKtsHZiHLoSfCn+h6yU7YKX8nrs32xUmOa1SRSk+t03FosB6fBZ0Yz4BpD1WV7l73Nsad+2Tz7APpqw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz", - "integrity": "sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz", - "integrity": "sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-jsx": "^7.16.7", - "@babel/types": "^7.17.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz", - "integrity": "sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==", - "dev": true, - "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz", - "integrity": "sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz", - "integrity": "sha512-Lc2TfbxR1HOyn/c6b4Y/b6NHoTb67n/IoWLxTu4kC7h4KQnWlhCq2S8Tx0t2SVvv5Uu87Hs+6JEJ5kt2tYGylQ==", - "dev": true, - "dependencies": { - "regenerator-transform": "^0.15.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", - "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-runtime": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.0.tgz", - "integrity": "sha512-fr7zPWnKXNc1xoHfrIU9mN/4XKX4VLZ45Q+oMhfsYIaHvg7mHgmhfOy/ckRWqDK7XF3QDigRpkh5DKq6+clE8A==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "babel-plugin-polyfill-corejs2": "^0.3.0", - "babel-plugin-polyfill-corejs3": "^0.5.0", - "babel-plugin-polyfill-regenerator": "^0.3.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-runtime/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, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", - "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", - "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", - "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", - "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", - "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typescript": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz", - "integrity": "sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-typescript": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", - "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", - "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-env": { - "version": "7.16.11", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz", - "integrity": "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.16.8", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-option": "^7.16.7", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", - "@babel/plugin-proposal-async-generator-functions": "^7.16.8", - "@babel/plugin-proposal-class-properties": "^7.16.7", - "@babel/plugin-proposal-class-static-block": "^7.16.7", - "@babel/plugin-proposal-dynamic-import": "^7.16.7", - "@babel/plugin-proposal-export-namespace-from": "^7.16.7", - "@babel/plugin-proposal-json-strings": "^7.16.7", - "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", - "@babel/plugin-proposal-numeric-separator": "^7.16.7", - "@babel/plugin-proposal-object-rest-spread": "^7.16.7", - "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", - "@babel/plugin-proposal-optional-chaining": "^7.16.7", - "@babel/plugin-proposal-private-methods": "^7.16.11", - "@babel/plugin-proposal-private-property-in-object": "^7.16.7", - "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.16.7", - "@babel/plugin-transform-async-to-generator": "^7.16.8", - "@babel/plugin-transform-block-scoped-functions": "^7.16.7", - "@babel/plugin-transform-block-scoping": "^7.16.7", - "@babel/plugin-transform-classes": "^7.16.7", - "@babel/plugin-transform-computed-properties": "^7.16.7", - "@babel/plugin-transform-destructuring": "^7.16.7", - "@babel/plugin-transform-dotall-regex": "^7.16.7", - "@babel/plugin-transform-duplicate-keys": "^7.16.7", - "@babel/plugin-transform-exponentiation-operator": "^7.16.7", - "@babel/plugin-transform-for-of": "^7.16.7", - "@babel/plugin-transform-function-name": "^7.16.7", - "@babel/plugin-transform-literals": "^7.16.7", - "@babel/plugin-transform-member-expression-literals": "^7.16.7", - "@babel/plugin-transform-modules-amd": "^7.16.7", - "@babel/plugin-transform-modules-commonjs": "^7.16.8", - "@babel/plugin-transform-modules-systemjs": "^7.16.7", - "@babel/plugin-transform-modules-umd": "^7.16.7", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8", - "@babel/plugin-transform-new-target": "^7.16.7", - "@babel/plugin-transform-object-super": "^7.16.7", - "@babel/plugin-transform-parameters": "^7.16.7", - "@babel/plugin-transform-property-literals": "^7.16.7", - "@babel/plugin-transform-regenerator": "^7.16.7", - "@babel/plugin-transform-reserved-words": "^7.16.7", - "@babel/plugin-transform-shorthand-properties": "^7.16.7", - "@babel/plugin-transform-spread": "^7.16.7", - "@babel/plugin-transform-sticky-regex": "^7.16.7", - "@babel/plugin-transform-template-literals": "^7.16.7", - "@babel/plugin-transform-typeof-symbol": "^7.16.7", - "@babel/plugin-transform-unicode-escapes": "^7.16.7", - "@babel/plugin-transform-unicode-regex": "^7.16.7", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.16.8", - "babel-plugin-polyfill-corejs2": "^0.3.0", - "babel-plugin-polyfill-corejs3": "^0.5.0", - "babel-plugin-polyfill-regenerator": "^0.3.0", - "core-js-compat": "^3.20.2", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-env/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, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-react": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.7.tgz", - "integrity": "sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-option": "^7.16.7", - "@babel/plugin-transform-react-display-name": "^7.16.7", - "@babel/plugin-transform-react-jsx": "^7.16.7", - "@babel/plugin-transform-react-jsx-development": "^7.16.7", - "@babel/plugin-transform-react-pure-annotations": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-typescript": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz", - "integrity": "sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-option": "^7.16.7", - "@babel/plugin-transform-typescript": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz", - "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==", - "dependencies": { - "regenerator-runtime": "^0.13.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/runtime-corejs3": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.17.9.tgz", - "integrity": "sha512-WxYHHUWF2uZ7Hp1K+D1xQgbgkGUfA+5UPOegEXGt2Y5SMog/rYCVaifLZDbw8UkNXozEqqrZTy6bglL7xTaCOw==", - "dev": true, - "dependencies": { - "core-js-pure": "^3.20.2", - "regenerator-runtime": "^0.13.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz", - "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.9", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.9", - "@babel/types": "^7.17.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/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/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "node_modules/@csstools/normalize.css": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-12.0.0.tgz", - "integrity": "sha512-M0qqxAcwCsIVfpFQSlGN5XjXWu8l5JDZN+fPt1LeW5SZexQTgnaEvgXAY+CeygRw0EeppWHi12JxESWiWrB0Sg==", - "dev": true - }, - "node_modules/@csstools/postcss-color-function": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.0.tgz", - "integrity": "sha512-5D5ND/mZWcQoSfYnSPsXtuiFxhzmhxt6pcjrFLJyldj+p0ZN2vvRpYNX+lahFTtMhAYOa2WmkdGINr0yP0CvGA==", - "dev": true, - "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/@csstools/postcss-font-format-keywords": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.0.tgz", - "integrity": "sha512-oO0cZt8do8FdVBX8INftvIA4lUrKUSCcWUf9IwH9IPWOgKT22oAZFXeHLoDK7nhB2SmkNycp5brxfNMRLIhd6Q==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.3" - } - }, - "node_modules/@csstools/postcss-hwb-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.0.tgz", - "integrity": "sha512-VSTd7hGjmde4rTj1rR30sokY3ONJph1reCBTUXqeW1fKwETPy1x4t/XIeaaqbMbC5Xg4SM/lyXZ2S8NELT2TaA==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.3" - } - }, - "node_modules/@csstools/postcss-ic-unit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.0.tgz", - "integrity": "sha512-i4yps1mBp2ijrx7E96RXrQXQQHm6F4ym1TOD0D69/sjDjZvQ22tqiEvaNw7pFZTUO5b9vWRHzbHzP9+UKuw+bA==", - "dev": true, - "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.3" - } - }, - "node_modules/@csstools/postcss-is-pseudo-class": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.2.tgz", - "integrity": "sha512-L9h1yxXMj7KpgNzlMrw3isvHJYkikZgZE4ASwssTnGEH8tm50L6QsM9QQT5wR4/eO5mU0rN5axH7UzNxEYg5CA==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.10" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/@csstools/postcss-normalize-display-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.0.tgz", - "integrity": "sha512-bX+nx5V8XTJEmGtpWTO6kywdS725t71YSLlxWt78XoHUbELWgoCXeOFymRJmL3SU1TLlKSIi7v52EWqe60vJTQ==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.3" - } - }, - "node_modules/@csstools/postcss-oklab-function": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.0.tgz", - "integrity": "sha512-e/Q5HopQzmnQgqimG9v3w2IG4VRABsBq3itOcn4bnm+j4enTgQZ0nWsaH/m9GV2otWGQ0nwccYL5vmLKyvP1ww==", - "dev": true, - "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/@csstools/postcss-progressive-custom-properties": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz", - "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.3" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/@eslint/eslintrc/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/@fluentui/date-time-utilities": { - "version": "7.9.1", - "resolved": "https://registry.npmjs.org/@fluentui/date-time-utilities/-/date-time-utilities-7.9.1.tgz", - "integrity": "sha512-o8iU1VIY+QsqVRWARKiky29fh4KR1xaKSgMClXIi65qkt8EDDhjmlzL0KVDEoDA2GWukwb/1PpaVCWDg4v3cUQ==", - "dependencies": { - "@uifabric/set-version": "^7.0.24", - "tslib": "^1.10.0" - } - }, - "node_modules/@fluentui/dom-utilities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@fluentui/dom-utilities/-/dom-utilities-1.1.2.tgz", - "integrity": "sha512-XqPS7l3YoMwxdNlaYF6S2Mp0K3FmVIOIy2K3YkMc+eRxu9wFK6emr2Q/3rBhtG5u/On37NExRT7/5CTLnoi9gw==", - "dependencies": { - "@uifabric/set-version": "^7.0.24", - "tslib": "^1.10.0" - } - }, - "node_modules/@fluentui/keyboard-key": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/@fluentui/keyboard-key/-/keyboard-key-0.2.17.tgz", - "integrity": "sha512-iT1bU56rKrKEOfODoW6fScY11qj3iaYrZ+z11T6fo5+TDm84UGkkXjLXJTE57ZJzg0/gbccHQWYv+chY7bJN8Q==", - "dependencies": { - "tslib": "^1.10.0" - } - }, - "node_modules/@fluentui/react": { - "version": "7.185.1", - "resolved": "https://registry.npmjs.org/@fluentui/react/-/react-7.185.1.tgz", - "integrity": "sha512-2LfU8DmZmUraj71ZBlQZdyBQMzErF3H11YYwq3ZdWw8awv9AHlFURAxDg9NWZqqQvy0v6NujmF+eOuFv7SzLVQ==", - "dependencies": { - "@uifabric/set-version": "^7.0.24", - "office-ui-fabric-react": "^7.185.1", - "tslib": "^1.10.0" - }, - "peerDependencies": { - "@types/react": ">=16.8.0 <17.0.0", - "@types/react-dom": ">=16.8.0 <17.0.0", - "react": ">=16.8.0 <17.0.0", - "react-dom": ">=16.8.0 <17.0.0" - } - }, - "node_modules/@fluentui/react-focus": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/@fluentui/react-focus/-/react-focus-7.18.3.tgz", - "integrity": "sha512-ZgaUHdBSlyefAM0a5HVpJY80iQuiLztB7ylLjePO1ltWE6R/f7q1hf+KBz7tEjZfzYgX6zU+kfcgtRuze6uDoQ==", - "dependencies": { - "@fluentui/keyboard-key": "^0.2.12", - "@uifabric/merge-styles": "^7.19.2", - "@uifabric/set-version": "^7.0.24", - "@uifabric/styling": "^7.20.1", - "@uifabric/utilities": "^7.34.0", - "tslib": "^1.10.0" - }, - "peerDependencies": { - "@types/react": ">=16.8.0 <17.0.0", - "@types/react-dom": ">=16.8.0 <17.0.0", - "react": ">=16.8.0 <17.0.0", - "react-dom": ">=16.8.0 <17.0.0" - } - }, - "node_modules/@fluentui/react-window-provider": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@fluentui/react-window-provider/-/react-window-provider-1.0.2.tgz", - "integrity": "sha512-fGSgL3Vp/+6t1Ysfz21FWZmqsU+iFVxOigvHnm5uKVyyRPwtaabv/F6kQ2y5isLMI2YmJaUd2i0cDJKu8ggrvw==", - "dependencies": { - "@uifabric/set-version": "^7.0.24", - "tslib": "^1.10.0" - }, - "peerDependencies": { - "@types/react": ">=16.8.0 <17.0.0", - "@types/react-dom": ">=16.8.0 <17.0.0", - "react": ">=16.8.0 <17.0.0", - "react-dom": ">=16.8.0 <17.0.0" - } - }, - "node_modules/@fluentui/theme": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/@fluentui/theme/-/theme-1.7.5.tgz", - "integrity": "sha512-617mrYkn8M+7Iy0eM9UG5ophh0bxyQfHiqxp8RmV3NO1xcJQw28DrXM/wwZoK3b4+rpgdxGufMWRl1V7B4oIVA==", - "dependencies": { - "@uifabric/merge-styles": "^7.19.2", - "@uifabric/set-version": "^7.0.24", - "@uifabric/utilities": "^7.34.0", - "tslib": "^1.10.0" - }, - "peerDependencies": { - "@types/react": ">=16.8.0 <17.0.0", - "@types/react-dom": ">=16.8.0 <17.0.0", - "react": ">=16.8.0 <17.0.0", - "react-dom": ">=16.8.0 <17.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/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/@istanbuljs/load-nyc-config/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/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/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", - "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/console/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/console/node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@jest/console/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/console/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/console/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/console/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/console/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@jest/console/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/core": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", - "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", - "dev": true, - "dependencies": { - "@jest/console": "^27.5.1", - "@jest/reporters": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^27.5.1", - "jest-config": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-resolve-dependencies": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "jest-watcher": "^27.5.1", - "micromatch": "^4.0.4", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/core/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/core/node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@jest/core/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/core/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/core/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/core/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/core/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@jest/core/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/core/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/environment": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", - "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", - "dev": true, - "dependencies": { - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/environment/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/environment/node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@jest/environment/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/environment/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/environment/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/environment/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/environment/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@jest/environment/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/environment/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/fake-timers": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", - "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@sinonjs/fake-timers": "^8.0.1", - "@types/node": "*", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/fake-timers/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/fake-timers/node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@jest/fake-timers/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/fake-timers/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/fake-timers/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/fake-timers/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/fake-timers/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@jest/fake-timers/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/fake-timers/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/globals": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", - "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/types": "^27.5.1", - "expect": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/globals/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/globals/node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@jest/globals/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/globals/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/globals/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/globals/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/globals/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@jest/globals/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/globals/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/reporters": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", - "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", - "dev": true, - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-haste-map": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "slash": "^3.0.0", - "source-map": "^0.6.0", - "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^8.1.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/reporters/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/reporters/node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@jest/reporters/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/reporters/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/reporters/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/reporters/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/reporters/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@jest/reporters/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/reporters/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/source-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", - "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9", - "source-map": "^0.6.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/test-result": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", - "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", - "dev": true, - "dependencies": { - "@jest/console": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/test-result/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/test-result/node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@jest/test-result/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/test-result/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/test-result/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/test-result/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/test-result/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@jest/test-result/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/test-result/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", - "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", - "dev": true, - "dependencies": { - "@jest/test-result": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-runtime": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", - "dev": true, - "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.5.1", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/transform/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/transform/node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@jest/transform/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/transform/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/transform/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/transform/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/transform/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@jest/transform/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/transform/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/types": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", - "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", - "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.11", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", - "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", - "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@leichtgewicht/ip-codec": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.3.tgz", - "integrity": "sha512-nkalE/f1RvRGChwBnEIoBfSEYOXnCRdleKuv6+lePbMDrMZXeDQnqak5XDOeBgrPPyPfAdcCu/B5z+v3VhplGg==", - "dev": true - }, - "node_modules/@microsoft/load-themed-styles": { - "version": "1.10.251", - "resolved": "https://registry.npmjs.org/@microsoft/load-themed-styles/-/load-themed-styles-1.10.251.tgz", - "integrity": "sha512-Ro0EiAwOIwC6YP00Fw8ixY2xWDQmV+HdfMskcrCfEUZidwBBEt7wlWnjx4SnaJH+sdDTlnnHzuERE2lzH9IvPA==" - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@pmmmwh/react-refresh-webpack-plugin": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.5.tgz", - "integrity": "sha512-RbG7h6TuP6nFFYKJwbcToA1rjC1FyPg25NR2noAZ0vKI+la01KTSRPkuVPE+U88jXv7javx2JHglUcL1MHcshQ==", - "dev": true, - "dependencies": { - "ansi-html-community": "^0.0.8", - "common-path-prefix": "^3.0.0", - "core-js-pure": "^3.8.1", - "error-stack-parser": "^2.0.6", - "find-up": "^5.0.0", - "html-entities": "^2.1.0", - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0", - "source-map": "^0.7.3" - }, - "engines": { - "node": ">= 10.13" - }, - "peerDependencies": { - "@types/webpack": "4.x || 5.x", - "react-refresh": ">=0.10.0 <1.0.0", - "sockjs-client": "^1.4.0", - "type-fest": ">=0.17.0 <3.0.0", - "webpack": ">=4.43.0 <6.0.0", - "webpack-dev-server": "3.x || 4.x", - "webpack-hot-middleware": "2.x", - "webpack-plugin-serve": "0.x || 1.x" - }, - "peerDependenciesMeta": { - "@types/webpack": { - "optional": true - }, - "sockjs-client": { - "optional": true - }, - "type-fest": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - }, - "webpack-hot-middleware": { - "optional": true - }, - "webpack-plugin-serve": { - "optional": true - } - } - }, - "node_modules/@pmmmwh/react-refresh-webpack-plugin/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@rollup/plugin-babel": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", - "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.10.4", - "@rollup/pluginutils": "^3.1.0" - }, - "engines": { - "node": ">= 10.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "@types/babel__core": "^7.1.9", - "rollup": "^1.20.0||^2.0.0" - }, - "peerDependenciesMeta": { - "@types/babel__core": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-node-resolve": { - "version": "11.2.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", - "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^3.1.0", - "@types/resolve": "1.17.1", - "builtin-modules": "^3.1.0", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.19.0" - }, - "engines": { - "node": ">= 10.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" - } - }, - "node_modules/@rollup/plugin-node-resolve/node_modules/resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@rollup/plugin-replace": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", - "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^3.1.0", - "magic-string": "^0.25.7" - }, - "peerDependencies": { - "rollup": "^1.20.0 || ^2.0.0" - } - }, - "node_modules/@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", - "dev": true, - "dependencies": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - }, - "engines": { - "node": ">= 8.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" - } - }, - "node_modules/@rollup/pluginutils/node_modules/@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true - }, - "node_modules/@rushstack/eslint-patch": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.1.1.tgz", - "integrity": "sha512-BUyKJGdDWqvWC5GEhyOiUrGNi9iJUr4CU0O2WxJL6QJhHeeA/NVBalH+FeK0r/x/W0rPymXt5s78TDS7d6lCwg==", - "dev": true - }, - "node_modules/@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", - "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^1.7.0" - } - }, - "node_modules/@surma/rollup-plugin-off-main-thread": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", - "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", - "dev": true, - "dependencies": { - "ejs": "^3.1.6", - "json5": "^2.2.0", - "magic-string": "^0.25.0", - "string.prototype.matchall": "^4.0.6" - } - }, - "node_modules/@svgr/babel-plugin-add-jsx-attribute": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz", - "integrity": "sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz", - "integrity": "sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz", - "integrity": "sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz", - "integrity": "sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/babel-plugin-svg-dynamic-title": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz", - "integrity": "sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/babel-plugin-svg-em-dimensions": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz", - "integrity": "sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/babel-plugin-transform-react-native-svg": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz", - "integrity": "sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/babel-plugin-transform-svg-component": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz", - "integrity": "sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/babel-preset": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz", - "integrity": "sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==", - "dev": true, - "dependencies": { - "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0", - "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0", - "@svgr/babel-plugin-remove-jsx-empty-expression": "^5.0.1", - "@svgr/babel-plugin-replace-jsx-attribute-value": "^5.0.1", - "@svgr/babel-plugin-svg-dynamic-title": "^5.4.0", - "@svgr/babel-plugin-svg-em-dimensions": "^5.4.0", - "@svgr/babel-plugin-transform-react-native-svg": "^5.4.0", - "@svgr/babel-plugin-transform-svg-component": "^5.5.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/core": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz", - "integrity": "sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==", - "dev": true, - "dependencies": { - "@svgr/plugin-jsx": "^5.5.0", - "camelcase": "^6.2.0", - "cosmiconfig": "^7.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/hast-util-to-babel-ast": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz", - "integrity": "sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.12.6" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/plugin-jsx": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz", - "integrity": "sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@svgr/babel-preset": "^5.5.0", - "@svgr/hast-util-to-babel-ast": "^5.5.0", - "svg-parser": "^2.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/plugin-svgo": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz", - "integrity": "sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==", - "dev": true, - "dependencies": { - "cosmiconfig": "^7.0.0", - "deepmerge": "^4.2.2", - "svgo": "^1.2.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/webpack": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz", - "integrity": "sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/plugin-transform-react-constant-elements": "^7.12.1", - "@babel/preset-env": "^7.12.1", - "@babel/preset-react": "^7.12.5", - "@svgr/core": "^5.5.0", - "@svgr/plugin-jsx": "^5.5.0", - "@svgr/plugin-svgo": "^5.5.0", - "loader-utils": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@testing-library/dom": { - "version": "7.31.2", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-7.31.2.tgz", - "integrity": "sha512-3UqjCpey6HiTZT92vODYLPxTBWlM8ZOOjr3LX5F37/VRipW2M1kX6I/Cm4VXzteZqfGfagg8yXywpcOgQBlNsQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/runtime": "^7.12.5", - "@types/aria-query": "^4.2.0", - "aria-query": "^4.2.2", - "chalk": "^4.1.0", - "dom-accessibility-api": "^0.5.6", - "lz-string": "^1.4.4", - "pretty-format": "^26.6.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@testing-library/dom/node_modules/@jest/types": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", - "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^15.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/@testing-library/dom/node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@testing-library/dom/node_modules/@types/yargs": { - "version": "15.0.14", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", - "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@testing-library/dom/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/@testing-library/dom/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@testing-library/dom/node_modules/aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.10.2", - "@babel/runtime-corejs3": "^7.10.2" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/@testing-library/dom/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@testing-library/dom/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@testing-library/dom/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@testing-library/dom/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@testing-library/dom/node_modules/pretty-format": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", - "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", - "dev": true, - "dependencies": { - "@jest/types": "^26.6.2", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@testing-library/dom/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, - "node_modules/@testing-library/dom/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@testing-library/jest-dom": { - "version": "5.16.4", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.16.4.tgz", - "integrity": "sha512-Gy+IoFutbMQcky0k+bqqumXZ1cTGswLsFqmNLzNdSKkU9KGV2u9oXhukCbbJ9/LRPKiqwxEE8VpV/+YZlfkPUA==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.9.2", - "@types/testing-library__jest-dom": "^5.9.1", - "aria-query": "^5.0.0", - "chalk": "^3.0.0", - "css": "^3.0.0", - "css.escape": "^1.5.1", - "dom-accessibility-api": "^0.5.6", - "lodash": "^4.17.15", - "redent": "^3.0.0" - }, - "engines": { - "node": ">=8", - "npm": ">=6", - "yarn": ">=1" - } - }, - "node_modules/@testing-library/react": { - "version": "11.2.7", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-11.2.7.tgz", - "integrity": "sha512-tzRNp7pzd5QmbtXNG/mhdcl7Awfu/Iz1RaVHY75zTdOkmHCuzMhRL83gWHSgOAcjS3CCbyfwUHMZgRJb4kAfpA==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.12.5", - "@testing-library/dom": "^7.28.1" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "react": "*", - "react-dom": "*" - } - }, - "node_modules/@testing-library/user-event": { - "version": "12.8.3", - "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-12.8.3.tgz", - "integrity": "sha512-IR0iWbFkgd56Bu5ZI/ej8yQwrkCv8Qydx6RzwbKz9faXazR/+5tvYKsZQgyXJiwgpcva127YO6JcWy7YlCfofQ==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.12.5" - }, - "engines": { - "node": ">=10", - "npm": ">=6" - }, - "peerDependencies": { - "@testing-library/dom": ">=7.21.4" - } - }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/@types/aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==", - "dev": true - }, - "node_modules/@types/babel__core": { - "version": "7.1.19", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", - "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", - "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.3.0" - } - }, - "node_modules/@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "dev": true, - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/bonjour": { - "version": "3.5.10", - "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", - "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/connect-history-api-fallback": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", - "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", - "dev": true, - "dependencies": { - "@types/express-serve-static-core": "*", - "@types/node": "*" - } - }, - "node_modules/@types/eslint": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.29.0.tgz", - "integrity": "sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==", - "dev": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", - "dev": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "dev": true - }, - "node_modules/@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", - "dev": true, - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.17.28", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", - "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", - "dev": true, - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", - "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/history": { - "version": "4.7.11", - "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz", - "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==" - }, - "node_modules/@types/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", - "dev": true - }, - "node_modules/@types/http-proxy": { - "version": "1.17.8", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.8.tgz", - "integrity": "sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", - "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "24.9.1", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.9.1.tgz", - "integrity": "sha512-Fb38HkXSVA4L8fGKEZ6le5bB8r6MRWlOCZbVuWZcmOMSCd2wCYOwN1ibj8daIoV9naq7aaOZjrLCoCMptKU/4Q==", - "dev": true, - "dependencies": { - "jest-diff": "^24.3.0" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", - "dev": true - }, - "node_modules/@types/lodash": { - "version": "4.14.181", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.181.tgz", - "integrity": "sha512-n3tyKthHJbkiWhDZs3DkhkCzt2MexYHXlX0td5iMplyfwketaOeKboEVBqzceH7juqvEg3q5oUoBFxSLu7zFag==" - }, - "node_modules/@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", - "dev": true - }, - "node_modules/@types/node": { - "version": "12.20.47", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.47.tgz", - "integrity": "sha512-BzcaRsnFuznzOItW1WpQrDHM7plAa7GIDMZ6b5pnMbkqEtM/6WCOhvZar39oeMQP79gwvFUWjjptE7/KGcNqFg==" - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "node_modules/@types/prettier": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.4.tgz", - "integrity": "sha512-ReVR2rLTV1kvtlWFyuot+d1pkpG2Fw/XKE3PDAdj57rbM97ttSp9JZ2UsP+2EHTylra9cUf6JA7tGwW1INzUrA==", - "dev": true - }, - "node_modules/@types/prop-types": { - "version": "15.7.4", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", - "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==" - }, - "node_modules/@types/q": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", - "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==", - "dev": true - }, - "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true - }, - "node_modules/@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", - "dev": true - }, - "node_modules/@types/react": { - "version": "16.14.24", - "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.24.tgz", - "integrity": "sha512-e7U2WC8XQP/xfR7bwhOhNFZKPTfW1ph+MiqtudKb8tSV8RyCsovQx2sNVtKoOryjxFKpHPPC/yNiGfdeVM5Gyw==", - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-dom": { - "version": "16.9.14", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.14.tgz", - "integrity": "sha512-FIX2AVmPTGP30OUJ+0vadeIFJJ07Mh1m+U0rxfgyW34p3rTlXI+nlenvAxNn4BP36YyI9IJ/+UJ7Wu22N1pI7A==", - "dependencies": { - "@types/react": "^16" - } - }, - "node_modules/@types/react-router": { - "version": "5.1.18", - "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.18.tgz", - "integrity": "sha512-YYknwy0D0iOwKQgz9v8nOzt2J6l4gouBmDnWqUUznltOTaon+r8US8ky8HvN0tXvc38U9m6z/t2RsVsnd1zM0g==", - "dependencies": { - "@types/history": "^4.7.11", - "@types/react": "*" - } - }, - "node_modules/@types/react-router-dom": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz", - "integrity": "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==", - "dependencies": { - "@types/history": "^4.7.11", - "@types/react": "*", - "@types/react-router": "*" - } - }, - "node_modules/@types/react-virtualized-auto-sizer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.1.tgz", - "integrity": "sha512-GH8sAnBEM5GV9LTeiz56r4ZhMOUSrP43tAQNSRVxNexDjcNKLCEtnxusAItg1owFUFE6k0NslV26gqVClVvong==", - "dependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/react-window": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@types/react-window/-/react-window-1.8.5.tgz", - "integrity": "sha512-V9q3CvhC9Jk9bWBOysPGaWy/Z0lxYcTXLtLipkt2cnRj1JOSFNF7wqGpkScSXMgBwC+fnVRg/7shwgddBG5ICw==", - "dependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/resolve": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/retry": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", - "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", - "dev": true - }, - "node_modules/@types/scheduler": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" - }, - "node_modules/@types/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", - "dev": true, - "dependencies": { - "@types/express": "*" - } - }, - "node_modules/@types/serve-static": { - "version": "1.13.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", - "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", - "dev": true, - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "node_modules/@types/sockjs": { - "version": "0.3.33", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", - "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true - }, - "node_modules/@types/testing-library__jest-dom": { - "version": "5.14.3", - "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.3.tgz", - "integrity": "sha512-oKZe+Mf4ioWlMuzVBaXQ9WDnEm1+umLx0InILg+yvZVBBDmzV5KfZyLrCvadtWcx8+916jLmHafcmqqffl+iIw==", - "dev": true, - "dependencies": { - "@types/jest": "*" - } - }, - "node_modules/@types/trusted-types": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz", - "integrity": "sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==", - "dev": true - }, - "node_modules/@types/uuid": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-7.0.5.tgz", - "integrity": "sha512-hKB88y3YHL8oPOs/CNlaXtjWn93+Bs48sDQR37ZUqG2tLeCS7EA1cmnkKsuQsub9OKEB/y/Rw9zqJqqNSbqVlQ==" - }, - "node_modules/@types/ws": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", - "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/yargs": { - "version": "13.0.12", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", - "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "dev": true - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", - "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", - "dev": true, - "dependencies": { - "@typescript-eslint/experimental-utils": "4.33.0", - "@typescript-eslint/scope-manager": "4.33.0", - "debug": "^4.3.1", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.1.0", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^4.0.0", - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/experimental-utils": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", - "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.7", - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", - "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "debug": "^4.3.1" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", - "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.18.0.tgz", - "integrity": "sha512-vcn9/6J5D6jtHxpEJrgK8FhaM8r6J1/ZiNu70ZUJN554Y3D9t3iovi6u7JF8l/e7FcBIxeuTEidZDR70UuCIfA==", - "dev": true, - "dependencies": { - "@typescript-eslint/utils": "5.18.0", - "debug": "^4.3.2", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", - "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", - "dev": true, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", - "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.18.0.tgz", - "integrity": "sha512-+hFGWUMMri7OFY26TsOlGa+zgjEy1ssEipxpLjtl4wSll8zy85x0GrUSju/FHdKfVorZPYJLkF3I4XPtnCTewA==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.18.0", - "@typescript-eslint/types": "5.18.0", - "@typescript-eslint/typescript-estree": "5.18.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.18.0.tgz", - "integrity": "sha512-C0CZML6NyRDj+ZbMqh9FnPscg2PrzSaVQg3IpTmpe0NURMVBXlghGZgMYqBw07YW73i0MCqSDqv2SbywnCS8jQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.18.0", - "@typescript-eslint/visitor-keys": "5.18.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.18.0.tgz", - "integrity": "sha512-bhV1+XjM+9bHMTmXi46p1Led5NP6iqQcsOxgx7fvk6gGiV48c6IynY0apQb7693twJDsXiVzNXTflhplmaiJaw==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.18.0.tgz", - "integrity": "sha512-wa+2VAhOPpZs1bVij9e5gyVu60ReMi/KuOx4LKjGx2Y3XTNUDJgQ+5f77D49pHtqef/klglf+mibuHs9TrPxdQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.18.0", - "@typescript-eslint/visitor-keys": "5.18.0", - "debug": "^4.3.2", - "globby": "^11.0.4", - "is-glob": "^4.0.3", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.18.0.tgz", - "integrity": "sha512-Hf+t+dJsjAKpKSkg3EHvbtEpFFb/1CiOHnvI8bjHgOD4/wAw3gKrA0i94LrbekypiZVanJu3McWJg7rWDMzRTg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.18.0", - "eslint-visitor-keys": "^3.0.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", - "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@uifabric/fluent-theme": { - "version": "7.6.21", - "resolved": "https://registry.npmjs.org/@uifabric/fluent-theme/-/fluent-theme-7.6.21.tgz", - "integrity": "sha512-2/0pEgeFrwtoKYeAmujp3syDHUor2mM+JkYuIQLsMfR88nP7FcGPPJIJVsXktdu9karVfX8sRHin5VnmU7DbTA==", - "dependencies": { - "@fluentui/theme": "^1.7.5", - "@uifabric/merge-styles": "^7.19.2", - "@uifabric/set-version": "^7.0.24", - "@uifabric/styling": "^7.20.1", - "@uifabric/variants": "^7.2.36", - "office-ui-fabric-react": "^7.185.1", - "tslib": "^1.10.0" - } - }, - "node_modules/@uifabric/foundation": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@uifabric/foundation/-/foundation-7.10.2.tgz", - "integrity": "sha512-8J8oBoc5Pr3oGL6uiWHGek/cmjXxYVg5tgPs9YQUsPs1IE9G5R4A4nXTtYEG3I2ZuF+fLfmWhnbKmgFVfKts2w==", - "dependencies": { - "@uifabric/merge-styles": "^7.19.2", - "@uifabric/set-version": "^7.0.24", - "@uifabric/styling": "^7.20.1", - "@uifabric/utilities": "^7.34.0", - "tslib": "^1.10.0" - }, - "peerDependencies": { - "@types/react": ">=16.8.0 <17.0.0", - "@types/react-dom": ">=16.8.0 <17.0.0", - "react": ">=16.8.0 <17.0.0", - "react-dom": ">=16.8.0 <17.0.0" - } - }, - "node_modules/@uifabric/icons": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@uifabric/icons/-/icons-7.6.3.tgz", - "integrity": "sha512-lAx3Xy6tfTwEmvE8x4xjEquFiyoqzHcnMLfHLDUweiqr9ZOlGkUFMJQZblrwOjAsibUFxFd3jUVYdBPja7TFyw==", - "dependencies": { - "@uifabric/set-version": "^7.0.24", - "@uifabric/styling": "^7.20.1", - "tslib": "^1.10.0" - } - }, - "node_modules/@uifabric/merge-styles": { - "version": "7.19.2", - "resolved": "https://registry.npmjs.org/@uifabric/merge-styles/-/merge-styles-7.19.2.tgz", - "integrity": "sha512-kTlhwglDqwVgIaJq+0yXgzi65plGhmFcPrfme/rXUGMJZoU+qlGT5jXj5d3kuI59p6VB8jWEg9DAxHozhYeu0g==", - "dependencies": { - "@uifabric/set-version": "^7.0.24", - "tslib": "^1.10.0" - } - }, - "node_modules/@uifabric/react-hooks": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@uifabric/react-hooks/-/react-hooks-7.14.1.tgz", - "integrity": "sha512-y5xCXEG3j25nbPkiZjJ6qipJot8QOn/ppr8eDtVkSm6JJ6lDU8cv4j01Ff1HcHbB0WnQWasiT1NITMsJZBbk0g==", - "dependencies": { - "@fluentui/react-window-provider": "^1.0.2", - "@uifabric/set-version": "^7.0.24", - "@uifabric/utilities": "^7.34.0", - "tslib": "^1.10.0" - }, - "peerDependencies": { - "@types/react": ">=16.8.0 <17.0.0", - "@types/react-dom": ">=16.8.0 <17.0.0", - "react": ">=16.8.0 <17.0.0", - "react-dom": ">=16.8.0 <17.0.0" - } - }, - "node_modules/@uifabric/set-version": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@uifabric/set-version/-/set-version-7.0.24.tgz", - "integrity": "sha512-t0Pt21dRqdC707/ConVJC0WvcQ/KF7tKLU8AZY7YdjgJpMHi1c0C427DB4jfUY19I92f60LOQyhJ4efH+KpFEg==", - "dependencies": { - "tslib": "^1.10.0" - } - }, - "node_modules/@uifabric/styling": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@uifabric/styling/-/styling-7.20.1.tgz", - "integrity": "sha512-xxoIv5tkeJ02XQfJ1IQloAijWVxUm2QlyKzpbnA5SF+HhtKsv0rgADuNALhGTvYKYwKqaFc5rKWygAxLeEaFtg==", - "dependencies": { - "@fluentui/theme": "^1.7.5", - "@microsoft/load-themed-styles": "^1.10.26", - "@uifabric/merge-styles": "^7.19.2", - "@uifabric/set-version": "^7.0.24", - "@uifabric/utilities": "^7.34.0", - "tslib": "^1.10.0" - } - }, - "node_modules/@uifabric/utilities": { - "version": "7.34.0", - "resolved": "https://registry.npmjs.org/@uifabric/utilities/-/utilities-7.34.0.tgz", - "integrity": "sha512-nJSrWw6IK8uLCYKrr7nQIxKnEr8iMkcIq0s7WBDbqtLfQB29jHLUtwbD928hhFm5zYMC1g46AOObb4lj7ER/hA==", - "dependencies": { - "@fluentui/dom-utilities": "^1.1.2", - "@uifabric/merge-styles": "^7.19.2", - "@uifabric/set-version": "^7.0.24", - "prop-types": "^15.7.2", - "tslib": "^1.10.0" - }, - "peerDependencies": { - "@types/react": ">=16.8.0 <17.0.0", - "@types/react-dom": ">=16.8.0 <17.0.0", - "react": ">=16.8.0 <17.0.0", - "react-dom": ">=16.8.0 <17.0.0" - } - }, - "node_modules/@uifabric/variants": { - "version": "7.2.36", - "resolved": "https://registry.npmjs.org/@uifabric/variants/-/variants-7.2.36.tgz", - "integrity": "sha512-zF9ykHwLgStebvmKvYaxJSkNmeTcAbruhtSumAKrAUXojVw9aGLSzOiW7LsQ8sEK3eSdiMfRP2mbb30vZHovAw==", - "dependencies": { - "@fluentui/theme": "^1.7.5", - "@uifabric/set-version": "^7.0.24", - "tslib": "^1.10.0" - } - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dev": true, - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dev": true, - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dev": true, - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dev": true, - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "node_modules/abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", - "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": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dev": true, - "dependencies": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - } - }, - "node_modules/acorn-globals/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "peerDependencies": { - "acorn": "^8" - } - }, - "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-node": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", - "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", - "dev": true, - "dependencies": { - "acorn": "^7.0.0", - "acorn-walk": "^7.0.0", - "xtend": "^4.0.2" - } - }, - "node_modules/acorn-node/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/address": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", - "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==", - "dev": true, - "engines": { - "node": ">= 0.12.0" - } - }, - "node_modules/adjust-sourcemap-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", - "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", - "dev": true, - "dependencies": { - "loader-utils": "^2.0.0", - "regex-parser": "^2.2.11" - }, - "engines": { - "node": ">=8.9" - } - }, - "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/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-formats/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/ajv-formats/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/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", - "dev": true, - "engines": [ - "node >= 0.8.0" - ], - "bin": { - "ansi-html": "bin/ansi-html" - } - }, - "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/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/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/arg": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.1.tgz", - "integrity": "sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA==", - "dev": true - }, - "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/aria-query": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.0.tgz", - "integrity": "sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg==", - "dev": true, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - }, - "node_modules/array-includes": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", - "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", - "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz", - "integrity": "sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", - "dev": true - }, - "node_modules/ast-types-flow": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", - "dev": true - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "dev": true, - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true, - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } - }, - "node_modules/autoprefixer": { - "version": "10.4.4", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.4.tgz", - "integrity": "sha512-Tm8JxsB286VweiZ5F0anmbyGiNI3v3wGv3mz9W+cxEDYB/6jbnj6GM9H9mK3wIL8ftgl+C07Lcwb8PG5PCCPzA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - } - ], - "dependencies": { - "browserslist": "^4.20.2", - "caniuse-lite": "^1.0.30001317", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/axe-core": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.1.tgz", - "integrity": "sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "dependencies": { - "follow-redirects": "^1.14.0" - } - }, - "node_modules/axobject-query": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", - "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", - "dev": true - }, - "node_modules/babel-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", - "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", - "dev": true, - "dependencies": { - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-jest/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/babel-jest/node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/babel-jest/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/babel-jest/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/babel-jest/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/babel-jest/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/babel-jest/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/babel-jest/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-jest/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-loader": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.4.tgz", - "integrity": "sha512-8dytA3gcvPPPv4Grjhnt8b5IIiTcq/zeXOPk4iTYI0SVXcsmuGg7JtBRDp8S9X+gJfhQ8ektjXZlDu1Bb33U8A==", - "dev": true, - "dependencies": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "engines": { - "node": ">= 8.9" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "webpack": ">=2" - } - }, - "node_modules/babel-loader/node_modules/schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "dependencies": { - "object.assign": "^4.1.0" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", - "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", - "dev": true, - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/babel-plugin-macros": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", - "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.12.5", - "cosmiconfig": "^7.0.0", - "resolve": "^1.19.0" - }, - "engines": { - "node": ">=10", - "npm": ">=6" - } - }, - "node_modules/babel-plugin-macros/node_modules/resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/babel-plugin-named-asset-import": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz", - "integrity": "sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==", - "dev": true, - "peerDependencies": { - "@babel/core": "^7.1.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", - "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.3.1", - "semver": "^6.1.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2/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, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", - "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.1", - "core-js-compat": "^3.21.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", - "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-transform-react-remove-prop-types": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", - "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==", - "dev": true - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-preset-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", - "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", - "dev": true, - "dependencies": { - "babel-plugin-jest-hoist": "^27.5.1", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-preset-react-app": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz", - "integrity": "sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.16.0", - "@babel/plugin-proposal-class-properties": "^7.16.0", - "@babel/plugin-proposal-decorators": "^7.16.4", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", - "@babel/plugin-proposal-numeric-separator": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.0", - "@babel/plugin-proposal-private-methods": "^7.16.0", - "@babel/plugin-transform-flow-strip-types": "^7.16.0", - "@babel/plugin-transform-react-display-name": "^7.16.0", - "@babel/plugin-transform-runtime": "^7.16.4", - "@babel/preset-env": "^7.16.4", - "@babel/preset-react": "^7.16.0", - "@babel/preset-typescript": "^7.16.0", - "@babel/runtime": "^7.16.3", - "babel-plugin-macros": "^3.1.0", - "babel-plugin-transform-react-remove-prop-types": "^0.4.24" - } - }, - "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/batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", - "dev": true - }, - "node_modules/bfj": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/bfj/-/bfj-7.0.2.tgz", - "integrity": "sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw==", - "dev": true, - "dependencies": { - "bluebird": "^3.5.5", - "check-types": "^11.1.1", - "hoopy": "^0.1.4", - "tryer": "^1.0.1" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "node_modules/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.9.7", - "raw-body": "2.4.3", - "type-is": "~1.6.18" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/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/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": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/bonjour-service": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.11.tgz", - "integrity": "sha512-drMprzr2rDTCtgEE3VgdA9uUFaUHF+jXduwYSThHJnKMYM+FhI9Z3ph+TX3xy0LtgYHae6CHYPJ/2UnK8nQHcA==", - "dev": true, - "dependencies": { - "array-flatten": "^2.1.2", - "dns-equal": "^1.0.0", - "fast-deep-equal": "^3.1.3", - "multicast-dns": "^7.2.4" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", - "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/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, - "node_modules/browserslist": { - "version": "4.20.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz", - "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001317", - "electron-to-chromium": "^1.4.84", - "escalade": "^3.1.1", - "node-releases": "^2.0.2", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "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/builtin-modules": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", - "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "dev": true, - "engines": { - "node": ">= 0.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/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dev": true, - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "node_modules/camel-case/node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", - "dev": true - }, - "node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "dev": true, - "dependencies": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001325", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001325.tgz", - "integrity": "sha512-sB1bZHjseSjDtijV1Hb7PB2Zd58Kyx+n/9EotvZ4Qcz2K3d0lWB8dB4nb8wN/TsOGFq3UuAm0zQZNQ4SoR7TrQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ] - }, - "node_modules/case-sensitive-paths-webpack-plugin": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", - "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/chalk/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/chalk/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/chalk/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/chalk/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/charcodes": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/charcodes/-/charcodes-0.2.0.tgz", - "integrity": "sha512-Y4kiDb+AM4Ecy58YkuZrrSRJBDQdQ2L+NyS1vHHFtNtUjgutcZfx3yp1dAONI/oPaPmyGfCLx5CxL+zauIMyKQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/check-types": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/check-types/-/check-types-11.1.2.tgz", - "integrity": "sha512-tzWzvgePgLORb9/3a0YenggReLKAIb2owL03H2Xdoe5pKcUyWRSEQ8xfCar8t2SIAuEDwtmx2da1YB52YuHQMQ==", - "dev": true - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, - "node_modules/cjs-module-lexer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", - "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", - "dev": true - }, - "node_modules/clean-css": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.0.tgz", - "integrity": "sha512-YYuuxv4H/iNb1Z/5IbMRoxgrzjWGhOEFfd+groZ5dMCVkpENiMZmwspdrzBo9286JjM1gZJPAyL7ZIdzuvu2AQ==", - "dev": true, - "dependencies": { - "source-map": "~0.6.0" - }, - "engines": { - "node": ">= 10.0" - } - }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true, - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "dev": true, - "dependencies": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/coa/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/collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", - "dev": true - }, - "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": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/colord": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz", - "integrity": "sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==", - "dev": true - }, - "node_modules/colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", - "dev": true - }, - "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/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/common-path-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", - "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", - "dev": true - }, - "node_modules/common-tags": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", - "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "dependencies": { - "mime-db": ">= 1.43.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dev": true, - "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/compression/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/compression/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "node_modules/confusing-browser-globals": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", - "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", - "dev": true - }, - "node_modules/connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "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/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "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/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", - "dev": true - }, - "node_modules/core-js": { - "version": "3.21.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.21.1.tgz", - "integrity": "sha512-FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig==", - "dev": true, - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-compat": { - "version": "3.21.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.21.1.tgz", - "integrity": "sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g==", - "dev": true, - "dependencies": { - "browserslist": "^4.19.1", - "semver": "7.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-compat/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/core-js-pure": { - "version": "3.21.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.21.1.tgz", - "integrity": "sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ==", - "dev": true, - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "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/cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", - "dev": true, - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/css": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", - "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.4", - "source-map": "^0.6.1", - "source-map-resolve": "^0.6.0" - } - }, - "node_modules/css-blank-pseudo": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", - "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.9" - }, - "bin": { - "css-blank-pseudo": "dist/cli.cjs" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/css-declaration-sorter": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.2.2.tgz", - "integrity": "sha512-Ufadglr88ZLsrvS11gjeu/40Lw74D9Am/Jpr3LlYm5Q4ZP5KdlUhG+6u2EjyXeZcxmZ2h1ebCKngDjolpeLHpg==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.0.9" - } - }, - "node_modules/css-has-pseudo": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", - "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.9" - }, - "bin": { - "css-has-pseudo": "dist/cli.cjs" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/css-loader": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz", - "integrity": "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==", - "dev": true, - "dependencies": { - "icss-utils": "^5.1.0", - "postcss": "^8.4.7", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.2.0", - "semver": "^7.3.5" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/css-minimizer-webpack-plugin": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz", - "integrity": "sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==", - "dev": true, - "dependencies": { - "cssnano": "^5.0.6", - "jest-worker": "^27.0.2", - "postcss": "^8.3.5", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "@parcel/css": { - "optional": true - }, - "clean-css": { - "optional": true - }, - "csso": { - "optional": true - }, - "esbuild": { - "optional": true - } - } - }, - "node_modules/css-minimizer-webpack-plugin/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/css-minimizer-webpack-plugin/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/css-minimizer-webpack-plugin/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/css-minimizer-webpack-plugin/node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/css-prefers-color-scheme": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", - "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", - "dev": true, - "bin": { - "css-prefers-color-scheme": "dist/cli.cjs" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "node_modules/css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", - "dev": true - }, - "node_modules/css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", - "dev": true, - "dependencies": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", - "dev": true, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css.escape": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", - "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=", - "dev": true - }, - "node_modules/cssdb": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-6.5.0.tgz", - "integrity": "sha512-Rh7AAopF2ckPXe/VBcoUS9JrCZNSyc60+KpgE6X25vpVxA32TmiqvExjkfhwP4wGSb6Xe8Z/JIyGqwgx/zZYFA==", - "dev": true - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cssnano": { - "version": "5.1.7", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.7.tgz", - "integrity": "sha512-pVsUV6LcTXif7lvKKW9ZrmX+rGRzxkEdJuVJcp5ftUjWITgwam5LMZOgaTvUrWPkcORBey6he7JKb4XAJvrpKg==", - "dev": true, - "dependencies": { - "cssnano-preset-default": "^5.2.7", - "lilconfig": "^2.0.3", - "yaml": "^1.10.2" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/cssnano" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/cssnano-preset-default": { - "version": "5.2.7", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.7.tgz", - "integrity": "sha512-JiKP38ymZQK+zVKevphPzNSGHSlTI+AOwlasoSRtSVMUU285O7/6uZyd5NbW92ZHp41m0sSHe6JoZosakj63uA==", - "dev": true, - "dependencies": { - "css-declaration-sorter": "^6.2.2", - "cssnano-utils": "^3.1.0", - "postcss-calc": "^8.2.3", - "postcss-colormin": "^5.3.0", - "postcss-convert-values": "^5.1.0", - "postcss-discard-comments": "^5.1.1", - "postcss-discard-duplicates": "^5.1.0", - "postcss-discard-empty": "^5.1.1", - "postcss-discard-overridden": "^5.1.0", - "postcss-merge-longhand": "^5.1.4", - "postcss-merge-rules": "^5.1.1", - "postcss-minify-font-values": "^5.1.0", - "postcss-minify-gradients": "^5.1.1", - "postcss-minify-params": "^5.1.2", - "postcss-minify-selectors": "^5.2.0", - "postcss-normalize-charset": "^5.1.0", - "postcss-normalize-display-values": "^5.1.0", - "postcss-normalize-positions": "^5.1.0", - "postcss-normalize-repeat-style": "^5.1.0", - "postcss-normalize-string": "^5.1.0", - "postcss-normalize-timing-functions": "^5.1.0", - "postcss-normalize-unicode": "^5.1.0", - "postcss-normalize-url": "^5.1.0", - "postcss-normalize-whitespace": "^5.1.1", - "postcss-ordered-values": "^5.1.1", - "postcss-reduce-initial": "^5.1.0", - "postcss-reduce-transforms": "^5.1.0", - "postcss-svgo": "^5.1.0", - "postcss-unique-selectors": "^5.1.1" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/cssnano-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", - "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "dev": true, - "dependencies": { - "css-tree": "^1.1.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/csso/node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dev": true, - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/csso/node_modules/mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dev": true - }, - "node_modules/cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true - }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "dependencies": { - "cssom": "~0.3.6" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - }, - "node_modules/csstype": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.11.tgz", - "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==" - }, - "node_modules/damerau-levenshtein": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", - "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", - "dev": true - }, - "node_modules/data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "dev": true, - "dependencies": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "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/decimal.js": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", - "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", - "dev": true - }, - "node_modules/decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", - "dev": true - }, - "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/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", - "dev": true, - "dependencies": { - "execa": "^5.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", - "dev": true - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true - }, - "node_modules/detect-port-alt": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", - "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", - "dev": true, - "dependencies": { - "address": "^1.0.1", - "debug": "^2.6.0" - }, - "bin": { - "detect": "bin/detect-port", - "detect-port": "bin/detect-port" - }, - "engines": { - "node": ">= 4.2.1" - } - }, - "node_modules/detect-port-alt/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/detect-port-alt/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/detective": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", - "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==", - "dev": true, - "dependencies": { - "acorn-node": "^1.6.1", - "defined": "^1.0.0", - "minimist": "^1.1.1" - }, - "bin": { - "detective": "bin/detective.js" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true - }, - "node_modules/diff-sequences": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", - "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true - }, - "node_modules/dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", - "dev": true - }, - "node_modules/dns-packet": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.3.1.tgz", - "integrity": "sha512-spBwIj0TK0Ey3666GwIdWVfUpLyubpU53BTCu8iPn4r4oXd9O14Hjg3EHw3ts2oed77/SeckunUYCyRlSngqHw==", - "dev": true, - "dependencies": { - "@leichtgewicht/ip-codec": "^2.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "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-accessibility-api": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.13.tgz", - "integrity": "sha512-R305kwb5CcMDIpSHUnLyIAp7SrSPBx6F0VfQFB3M75xVMHhXJJIdePYgbPPh1o57vCHNu5QztokWUPsLjWzFqw==", - "dev": true - }, - "node_modules/dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "dev": true, - "dependencies": { - "utila": "~0.4" - } - }, - "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/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/domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "dev": true, - "dependencies": { - "webidl-conversions": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/domexception/node_modules/webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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/domhandler/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/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/dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dev": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/dot-case/node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", - "dev": true - }, - "node_modules/dotenv": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", - "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/dotenv-expand": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", - "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", - "dev": true - }, - "node_modules/duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", - "dev": true - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, - "node_modules/ejs": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz", - "integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==", - "dev": true, - "dependencies": { - "jake": "^10.6.1" - }, - "bin": { - "ejs": "bin/cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.106", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.106.tgz", - "integrity": "sha512-ZYfpVLULm67K7CaaGP7DmjyeMY4naxsbTy+syVVxT6QHI1Ww8XbJjmr9fDckrhq44WzCrcC5kH3zGpdusxwwqg==", - "dev": true - }, - "node_modules/emittery": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", - "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.9.2", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz", - "integrity": "sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.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": "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/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/error-stack-parser": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.7.tgz", - "integrity": "sha512-chLOW0ZGRf4s8raLrDxa5sdkvPec5YdvwbFnqJme4rk0rFajP8mPtrDL1+I+CwrQDCjswDA5sREX7jYQDQs9vA==", - "dev": true, - "dependencies": { - "stackframe": "^1.1.1" - } - }, - "node_modules/es-abstract": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.2.tgz", - "integrity": "sha512-gfSBJoZdlL2xRiOCy0g8gLMryhoe1TlimjzU99L/31Z8QEGIhVQI+EWwt5lT+AuU9SnorVupXFqqOGqGfsyO6w==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", - "is-string": "^1.0.7", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "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": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", - "dev": true, - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/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/escodegen/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/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/escodegen/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-prettier": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz", - "integrity": "sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw==", - "dev": true, - "dependencies": { - "get-stdin": "^6.0.0" - }, - "bin": { - "eslint-config-prettier-check": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=3.14.1" - } - }, - "node_modules/eslint-config-react": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/eslint-config-react/-/eslint-config-react-1.1.7.tgz", - "integrity": "sha1-oJGND8R9DpvRYaRzCAIdqF0lhbM=", - "dev": true - }, - "node_modules/eslint-config-react-app": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-7.0.0.tgz", - "integrity": "sha512-xyymoxtIt1EOsSaGag+/jmcywRuieQoA2JbPCjnw9HukFj9/97aGPoZVFioaotzk1K5Qt9sHO5EutZbkrAXS0g==", - "dev": true, - "dependencies": { - "@babel/core": "^7.16.0", - "@babel/eslint-parser": "^7.16.3", - "@rushstack/eslint-patch": "^1.1.0", - "@typescript-eslint/eslint-plugin": "^5.5.0", - "@typescript-eslint/parser": "^5.5.0", - "babel-preset-react-app": "^10.0.1", - "confusing-browser-globals": "^1.0.11", - "eslint-plugin-flowtype": "^8.0.3", - "eslint-plugin-import": "^2.25.3", - "eslint-plugin-jest": "^25.3.0", - "eslint-plugin-jsx-a11y": "^6.5.1", - "eslint-plugin-react": "^7.27.1", - "eslint-plugin-react-hooks": "^4.3.0", - "eslint-plugin-testing-library": "^5.0.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "eslint": "^8.0.0" - } - }, - "node_modules/eslint-config-react-app/node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.18.0.tgz", - "integrity": "sha512-tzrmdGMJI/uii9/V6lurMo4/o+dMTKDH82LkNjhJ3adCW22YQydoRs5MwTiqxGF9CSYxPxQ7EYb4jLNlIs+E+A==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.18.0", - "@typescript-eslint/type-utils": "5.18.0", - "@typescript-eslint/utils": "5.18.0", - "debug": "^4.3.2", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.2.0", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/eslint-config-react-app/node_modules/@typescript-eslint/parser": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.18.0.tgz", - "integrity": "sha512-+08nYfurBzSSPndngnHvFw/fniWYJ5ymOrn/63oMIbgomVQOvIDhBoJmYZ9lwQOCnQV9xHGvf88ze3jFGUYooQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.18.0", - "@typescript-eslint/types": "5.18.0", - "@typescript-eslint/typescript-estree": "5.18.0", - "debug": "^4.3.2" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/eslint-config-react-app/node_modules/@typescript-eslint/scope-manager": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.18.0.tgz", - "integrity": "sha512-C0CZML6NyRDj+ZbMqh9FnPscg2PrzSaVQg3IpTmpe0NURMVBXlghGZgMYqBw07YW73i0MCqSDqv2SbywnCS8jQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.18.0", - "@typescript-eslint/visitor-keys": "5.18.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/eslint-config-react-app/node_modules/@typescript-eslint/types": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.18.0.tgz", - "integrity": "sha512-bhV1+XjM+9bHMTmXi46p1Led5NP6iqQcsOxgx7fvk6gGiV48c6IynY0apQb7693twJDsXiVzNXTflhplmaiJaw==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/eslint-config-react-app/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.18.0.tgz", - "integrity": "sha512-wa+2VAhOPpZs1bVij9e5gyVu60ReMi/KuOx4LKjGx2Y3XTNUDJgQ+5f77D49pHtqef/klglf+mibuHs9TrPxdQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.18.0", - "@typescript-eslint/visitor-keys": "5.18.0", - "debug": "^4.3.2", - "globby": "^11.0.4", - "is-glob": "^4.0.3", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/eslint-config-react-app/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.18.0.tgz", - "integrity": "sha512-Hf+t+dJsjAKpKSkg3EHvbtEpFFb/1CiOHnvI8bjHgOD4/wAw3gKrA0i94LrbekypiZVanJu3McWJg7rWDMzRTg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.18.0", - "eslint-visitor-keys": "^3.0.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/eslint-config-react-app/node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", - "dev": true, - "dependencies": { - "debug": "^3.2.7", - "resolve": "^1.20.0" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", - "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", - "dev": true, - "dependencies": { - "debug": "^3.2.7", - "find-up": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-module-utils/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-flowtype": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz", - "integrity": "sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==", - "dev": true, - "dependencies": { - "lodash": "^4.17.21", - "string-natural-compare": "^3.0.1" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "@babel/plugin-syntax-flow": "^7.14.5", - "@babel/plugin-transform-react-jsx": "^7.14.9", - "eslint": "^8.1.0" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.26.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", - "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.3", - "has": "^1.0.3", - "is-core-module": "^2.8.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.values": "^1.1.5", - "resolve": "^1.22.0", - "tsconfig-paths": "^3.14.1" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" - } - }, - "node_modules/eslint-plugin-import/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/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/eslint-plugin-import/node_modules/resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-plugin-jest": { - "version": "25.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz", - "integrity": "sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/experimental-utils": "^5.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - }, - "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^4.0.0 || ^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "@typescript-eslint/eslint-plugin": { - "optional": true - }, - "jest": { - "optional": true - } - } - }, - "node_modules/eslint-plugin-jest/node_modules/@typescript-eslint/experimental-utils": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.18.0.tgz", - "integrity": "sha512-hypiw5N0aM2aH91/uMmG7RpyUH3PN/iOhilMwkMFZIbm/Bn/G3ZnbaYdSoAN4PG/XHQjdhBYLi0ZoRZsRYT4hA==", - "dev": true, - "dependencies": { - "@typescript-eslint/utils": "5.18.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz", - "integrity": "sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.16.3", - "aria-query": "^4.2.2", - "array-includes": "^3.1.4", - "ast-types-flow": "^0.0.7", - "axe-core": "^4.3.5", - "axobject-query": "^2.2.0", - "damerau-levenshtein": "^1.0.7", - "emoji-regex": "^9.2.2", - "has": "^1.0.3", - "jsx-ast-utils": "^3.2.1", - "language-tags": "^1.0.5", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=4.0" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.10.2", - "@babel/runtime-corejs3": "^7.10.2" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/eslint-plugin-prettier": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz", - "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==", - "dev": true, - "dependencies": { - "prettier-linter-helpers": "^1.0.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "peerDependencies": { - "eslint": ">=5.0.0", - "prettier": ">=1.13.0" - }, - "peerDependenciesMeta": { - "eslint-config-prettier": { - "optional": true - } - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.29.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz", - "integrity": "sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.4", - "array.prototype.flatmap": "^1.2.5", - "doctrine": "^2.1.0", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.5", - "object.fromentries": "^2.0.5", - "object.hasown": "^1.1.0", - "object.values": "^1.1.5", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.3", - "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.6" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, - "node_modules/eslint-plugin-react-hooks": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.4.0.tgz", - "integrity": "sha512-U3RVIfdzJaeKDQKEJbz5p3NW8/L80PCATJAfuojwbaEL+gBjfGdhUcGde+WGUW46Q5sr/NgxevsIiDtNXrvZaQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" - } - }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-react/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/eslint-plugin-react/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, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-plugin-testing-library": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.2.1.tgz", - "integrity": "sha512-88qJv6uzYALtiYJDzhelP3ov0Px/GLgnu+UekjjDxL2nMyvgdTyboKqcDBsvFPmAeizlCoSWOjeBN4DxO0BxaA==", - "dev": true, - "dependencies": { - "@typescript-eslint/utils": "^5.13.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0", - "npm": ">=6" - }, - "peerDependencies": { - "eslint": "^7.5.0 || ^8.0.0" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-webpack-plugin": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.1.1.tgz", - "integrity": "sha512-xSucskTN9tOkfW7so4EaiFIkulWLXwCB/15H917lR6pTv0Zot6/fetFucmENRb7J5whVSFKIvwnrnsa78SG2yg==", - "dev": true, - "dependencies": { - "@types/eslint": "^7.28.2", - "jest-worker": "^27.3.1", - "micromatch": "^4.0.4", - "normalize-path": "^3.0.0", - "schema-utils": "^3.1.1" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0", - "webpack": "^5.0.0" - } - }, - "node_modules/eslint/node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint/node_modules/eslint-utils/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/eslint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/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/eslint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, - "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/espree/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/espree/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/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.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "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/estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", - "dev": true - }, - "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": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expect": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/expect/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/expect/node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/expect/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/expect/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/expect/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/expect/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/expect/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/expect/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/expect/node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/expect/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/express": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", - "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", - "dev": true, - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.19.2", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.4.2", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.9.7", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.17.2", - "serve-static": "1.14.2", - "setprototypeof": "1.2.0", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express/node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", - "dev": true - }, - "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": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/express/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": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", - "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/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.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "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": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dev": true, - "dependencies": { - "websocket-driver": ">=0.5.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/fb-watchman": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", - "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", - "dev": true, - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/file-loader": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", - "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", - "dev": true, - "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/filelist": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz", - "integrity": "sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==", - "dev": true, - "dependencies": { - "minimatch": "^3.0.4" - } - }, - "node_modules/filesize": { - "version": "8.0.7", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", - "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "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": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", - "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", - "dev": true - }, - "node_modules/follow-redirects": { - "version": "1.14.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", - "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/fork-ts-checker-webpack-plugin": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.1.tgz", - "integrity": "sha512-x1wumpHOEf4gDROmKTaB6i4/Q6H3LwmjVO7fIX47vBwlZbtPjU33hgoMuD/Q/y6SU8bnuYSoN6ZQOLshGp0T/g==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.8.3", - "@types/json-schema": "^7.0.5", - "chalk": "^4.1.0", - "chokidar": "^3.4.2", - "cosmiconfig": "^6.0.0", - "deepmerge": "^4.2.2", - "fs-extra": "^9.0.0", - "glob": "^7.1.6", - "memfs": "^3.1.2", - "minimatch": "^3.0.4", - "schema-utils": "2.7.0", - "semver": "^7.3.2", - "tapable": "^1.0.0" - }, - "engines": { - "node": ">=10", - "yarn": ">=1.0.0" - }, - "peerDependencies": { - "eslint": ">= 6", - "typescript": ">= 2.7", - "vue-template-compiler": "*", - "webpack": ">= 4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - }, - "vue-template-compiler": { - "optional": true - } - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", - "dev": true, - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", - "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.4", - "ajv": "^6.12.2", - "ajv-keywords": "^3.4.1" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "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/fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", - "dev": true, - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://www.patreon.com/infusion" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-extra": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", - "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/fs-monkey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", - "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", - "dev": true - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "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": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-own-enumerable-property-symbols": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", - "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", - "dev": true - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "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": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "node_modules/global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "dev": true, - "dependencies": { - "global-prefix": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "dev": true, - "dependencies": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/global-prefix/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/globals": { - "version": "13.13.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", - "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "node_modules/gzip-size": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", - "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", - "dev": true, - "dependencies": { - "duplexer": "^0.1.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true - }, - "node_modules/harmony-reflect": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz", - "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==", - "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-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "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-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, - "node_modules/history": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", - "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", - "dependencies": { - "@babel/runtime": "^7.1.2", - "loose-envify": "^1.2.0", - "resolve-pathname": "^3.0.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0", - "value-equal": "^1.0.1" - } - }, - "node_modules/hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "dependencies": { - "react-is": "^16.7.0" - } - }, - "node_modules/hoopy": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", - "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", - "dev": true, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - } - }, - "node_modules/hpack.js/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "node_modules/hpack.js/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "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/html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "dev": true, - "dependencies": { - "whatwg-encoding": "^1.0.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/html-entities": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", - "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", - "dev": true - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "node_modules/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", - "dev": true, - "dependencies": { - "camel-case": "^4.1.2", - "clean-css": "^5.2.2", - "commander": "^8.3.0", - "he": "^1.2.0", - "param-case": "^3.0.4", - "relateurl": "^0.2.7", - "terser": "^5.10.0" - }, - "bin": { - "html-minifier-terser": "cli.js" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/html-minifier-terser/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/html-webpack-plugin": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", - "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", - "dev": true, - "dependencies": { - "@types/html-minifier-terser": "^6.0.0", - "html-minifier-terser": "^6.0.2", - "lodash": "^4.17.21", - "pretty-error": "^4.0.0", - "tapable": "^2.0.0" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/html-webpack-plugin" - }, - "peerDependencies": { - "webpack": "^5.20.0" - } - }, - "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/htmlparser2/node_modules/dom-serializer": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", - "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/htmlparser2/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/htmlparser2/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/http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", - "dev": true - }, - "node_modules/http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", - "dev": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-parser-js": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", - "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", - "dev": true - }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/http-proxy-middleware": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.4.tgz", - "integrity": "sha512-m/4FxX17SUvz4lJ5WPXOHDUuCwIqXLfLHs1s0uZ3oYjhoXlx9csYxaOa0ElDEJ+h8Q4iJ1s+lTMbiCa4EXIJqg==", - "dev": true, - "dependencies": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "@types/express": "^4.17.13" - }, - "peerDependenciesMeta": { - "@types/express": { - "optional": true - } - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "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/icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/idb": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/idb/-/idb-6.1.5.tgz", - "integrity": "sha512-IJtugpKkiVXQn5Y+LteyBCNk1N8xpGV3wWZk9EVtZWH8DYkjBn0bX1XnGP9RkyZF0sAcywa6unHqSWKe7q4LGw==", - "dev": true - }, - "node_modules/identity-obj-proxy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", - "integrity": "sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ=", - "dev": true, - "dependencies": { - "harmony-reflect": "^1.4.6" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/immer": { - "version": "9.0.12", - "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.12.tgz", - "integrity": "sha512-lk7UNmSbAukB5B6dh9fnh5D0bJTOFKxVg2cyJWTYrWRfhLrLMBquONcUs3aFq507hNoIZEDDh8lb8UtOizSMhA==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/immer" - } - }, - "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/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "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": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "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==", - "dev": true - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "node_modules/internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/ipaddr.js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", - "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", - "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", - "dev": true - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-root": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", - "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", - "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument/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, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-reports": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", - "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", - "dev": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jake": { - "version": "10.8.4", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.4.tgz", - "integrity": "sha512-MtWeTkl1qGsWUtbl/Jsca/8xSoK3x0UmS82sNbjqxxG/de/M/3b1DntdjHgPMC50enlTNwXOCRqPXLLt5cCfZA==", - "dev": true, - "dependencies": { - "async": "0.9.x", - "chalk": "^4.0.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" - }, - "bin": { - "jake": "bin/cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jake/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jake/node_modules/async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", - "dev": true - }, - "node_modules/jake/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jake/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jake/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jake/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jake/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", - "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", - "dev": true, - "dependencies": { - "@jest/core": "^27.5.1", - "import-local": "^3.0.2", - "jest-cli": "^27.5.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-changed-files": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", - "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "execa": "^5.0.0", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-changed-files/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-changed-files/node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/jest-changed-files/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-changed-files/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-changed-files/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-changed-files/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-changed-files/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-changed-files/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-changed-files/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-circus": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", - "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-circus/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-circus/node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/jest-circus/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-circus/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-circus/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-circus/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-circus/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-circus/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-circus/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-circus/node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-circus/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-circus/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, - "node_modules/jest-circus/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-config": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", - "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.8.0", - "@jest/test-sequencer": "^27.5.1", - "@jest/types": "^27.5.1", - "babel-jest": "^27.5.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.9", - "jest-circus": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-jasmine2": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "ts-node": { - "optional": true - } - } - }, - "node_modules/jest-config/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-config/node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/jest-config/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-config/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-config/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-config/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-config/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-config/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-config/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-config/node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-config/node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-config/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-config/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, - "node_modules/jest-config/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-diff": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", - "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", - "dev": true, - "dependencies": { - "chalk": "^2.0.1", - "diff-sequences": "^24.9.0", - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-diff/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/jest-docblock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", - "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", - "dev": true, - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-each": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", - "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-each/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-each/node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/jest-each/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-each/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-each/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-each/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-each/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-each/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-each/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-each/node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-each/node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-each/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-each/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, - "node_modules/jest-each/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-environment-jsdom": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", - "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1", - "jsdom": "^16.6.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-environment-jsdom/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-environment-jsdom/node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/jest-environment-jsdom/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-environment-jsdom/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-environment-jsdom/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-environment-jsdom/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-environment-jsdom/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-environment-jsdom/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-environment-jsdom/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-environment-node": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", - "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-environment-node/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-environment-node/node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/jest-environment-node/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-environment-node/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-environment-node/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-environment-node/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-environment-node/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-environment-node/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-environment-node/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-get-type": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", - "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-haste-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", - "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^27.5.1", - "jest-serializer": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-haste-map/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-haste-map/node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/jest-haste-map/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-haste-map/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-haste-map/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-haste-map/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-haste-map/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-haste-map/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-haste-map/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-jasmine2": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", - "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/jest-jasmine2/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-jasmine2/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-jasmine2/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-jasmine2/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-jasmine2/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-jasmine2/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-jasmine2/node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-jasmine2/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, - "node_modules/jest-jasmine2/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-leak-detector": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", - "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", - "dev": true, - "dependencies": { - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-leak-detector/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-leak-detector/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-leak-detector/node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-leak-detector/node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-leak-detector/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, - "node_modules/jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-matcher-utils/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-matcher-utils/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-matcher-utils/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-matcher-utils/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-matcher-utils/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-matcher-utils/node_modules/diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-matcher-utils/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-matcher-utils/node_modules/jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-matcher-utils/node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-matcher-utils/node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-matcher-utils/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-matcher-utils/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, - "node_modules/jest-matcher-utils/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-message-util/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-message-util/node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/jest-message-util/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-message-util/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-message-util/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-message-util/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-message-util/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-message-util/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-message-util/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-message-util/node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-message-util/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, - "node_modules/jest-message-util/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-mock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", - "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-mock/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-mock/node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/jest-mock/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-mock/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-mock/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-mock/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-mock/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-mock/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-mock/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", - "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", - "dev": true, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", - "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", - "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-snapshot": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-resolve-dependencies/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-resolve/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve/node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/jest-resolve/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-resolve/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-resolve/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-resolve/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-resolve/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-resolve/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-resolve/node_modules/resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/jest-resolve/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runner": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", - "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", - "dev": true, - "dependencies": { - "@jest/console": "^27.5.1", - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-leak-detector": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "source-map-support": "^0.5.6", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runner/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runner/node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/jest-runner/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-runner/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-runner/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-runner/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-runner/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-runner/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runner/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", - "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/globals": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runtime/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runtime/node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/jest-runtime/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-runtime/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-runtime/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-runtime/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-runtime/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-runtime/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime/node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-serializer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", - "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", - "dev": true, - "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", - "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.7.2", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.0.0", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^27.5.1", - "semver": "^7.3.2" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/jest-snapshot/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-snapshot/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-snapshot/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-snapshot/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-snapshot/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-snapshot/node_modules/diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-snapshot/node_modules/jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-snapshot/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, - "node_modules/jest-snapshot/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-util/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-util/node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/jest-util/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-util/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-util/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-util/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-util/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-util/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-util/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-validate": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", - "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "leven": "^3.1.0", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-validate/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-validate/node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/jest-validate/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-validate/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-validate/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-validate/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-validate/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-validate/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-validate/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-validate/node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-validate/node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-validate/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-validate/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, - "node_modules/jest-validate/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watch-typeahead": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-1.0.0.tgz", - "integrity": "sha512-jxoszalAb394WElmiJTFBMzie/RDCF+W7Q29n5LzOPtcoQoHWfdUtHFkbhgf5NwWe8uMOxvKb/g7ea7CshfkTw==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.3.1", - "chalk": "^4.0.0", - "jest-regex-util": "^27.0.0", - "jest-watcher": "^27.0.0", - "slash": "^4.0.0", - "string-length": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "jest": "^27.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/jest-watch-typeahead/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-watch-typeahead/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-watch-typeahead/node_modules/char-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-2.0.1.tgz", - "integrity": "sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw==", - "dev": true, - "engines": { - "node": ">=12.20" - } - }, - "node_modules/jest-watch-typeahead/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-watch-typeahead/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watch-typeahead/node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-watch-typeahead/node_modules/string-length": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-5.0.1.tgz", - "integrity": "sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==", - "dev": true, - "dependencies": { - "char-regex": "^2.0.0", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-watch-typeahead/node_modules/strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/jest-watch-typeahead/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watcher": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", - "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", - "dev": true, - "dependencies": { - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "jest-util": "^27.5.1", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-watcher/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-watcher/node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/jest-watcher/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-watcher/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-watcher/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-watcher/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-watcher/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-watcher/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watcher/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/jest/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest/node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/jest/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest/node_modules/jest-cli": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", - "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", - "dev": true, - "dependencies": { - "@jest/core": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "prompts": "^2.0.1", - "yargs": "^16.2.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "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==" - }, - "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/jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", - "dev": true, - "dependencies": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "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": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "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/jsonpointer": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.0.tgz", - "integrity": "sha512-PNYZIdMjVIvVgDSYKTT63Y+KZ6IZvGRNNWcxwD+GNnUz1MKPfv30J8ueCjdwcN0nDx2SlshgyB7Oy0epAzVRRg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jsx-ast-utils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.2.tgz", - "integrity": "sha512-HDAyJ4MNQBboGpUnHAVUNJs6X0lh058s6FuixsFGP7MgJYpD6Vasd6nzSG5iIfXu1zAYlHJ/zsOKNlrenTUBnw==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.4", - "object.assign": "^4.1.2" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/klona": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/language-subtag-registry": { - "version": "0.3.21", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz", - "integrity": "sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==", - "dev": true - }, - "node_modules/language-tags": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", - "integrity": "sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=", - "dev": true, - "dependencies": { - "language-subtag-registry": "~0.3.2" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lilconfig": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", - "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "node_modules/loader-runner": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", - "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", - "dev": true, - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "dev": true - }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", - "dev": true - }, - "node_modules/lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", - "dev": true - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dev": true, - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/lower-case/node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", - "dev": true - }, - "node_modules/lru-cache": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.7.3.tgz", - "integrity": "sha512-WY9wjJNQt9+PZilnLbuFKM+SwDull9+6IAguOrarOMoOHTcJ9GnXSO11+Gw6c7xtDkBkthR57OZMtZKYr+1CEw==", - "deprecated": "Please update to latest patch version to fix memory leak https://github.com/isaacs/node-lru-cache/issues/227", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/lz-string": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz", - "integrity": "sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=", - "dev": true, - "bin": { - "lz-string": "bin/bin.js" - } - }, - "node_modules/magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.8" - } - }, - "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, - "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, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", - "dev": true - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memfs": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.1.tgz", - "integrity": "sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw==", - "dev": true, - "dependencies": { - "fs-monkey": "1.0.3" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/memoize-one": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", - "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", - "dev": true - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "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/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": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/mini-create-react-context": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz", - "integrity": "sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==", - "dependencies": { - "@babel/runtime": "^7.12.1", - "tiny-warning": "^1.0.3" - }, - "peerDependencies": { - "prop-types": "^15.0.0", - "react": "^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, - "node_modules/mini-css-extract-plugin": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.0.tgz", - "integrity": "sha512-ndG8nxCEnAemsg4FSgS+yNyHKgkTB4nPKqCOgh65j3/30qqC5RaSQQXMm++Y6sb6E1zRSxPkztj9fqxhS1Eo6w==", - "dev": true, - "dependencies": { - "schema-utils": "^4.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/mini-css-extract-plugin/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/mini-css-extract-plugin/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/mini-css-extract-plugin/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/mini-css-extract-plugin/node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "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.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "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/mobx": { - "version": "5.15.7", - "resolved": "https://registry.npmjs.org/mobx/-/mobx-5.15.7.tgz", - "integrity": "sha512-wyM3FghTkhmC+hQjyPGGFdpehrcX1KOXsDuERhfK2YbJemkUhEB+6wzEN639T21onxlfYBmriA1PFnvxTUhcKw==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mobx" - } - }, - "node_modules/mobx-react-lite": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/mobx-react-lite/-/mobx-react-lite-2.2.2.tgz", - "integrity": "sha512-2SlXALHIkyUPDsV4VTKVR9DW7K3Ksh1aaIv3NrNJygTbhXe2A9GrcKHZ2ovIiOp/BXilOcTYemfHHZubP431dg==", - "peerDependencies": { - "mobx": "^4.0.0 || ^5.0.0", - "react": "^16.8.0" - }, - "peerDependenciesMeta": { - "react-dom": { - "optional": true - }, - "react-native": { - "optional": true - } - } - }, - "node_modules/mobx-utils": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/mobx-utils/-/mobx-utils-5.6.2.tgz", - "integrity": "sha512-a/WlXyGkp6F12b01sTarENpxbmlRgPHFyR1Xv2bsSjQBm5dcOtd16ONb40/vOqck8L99NHpI+C9MXQ+SZ8f+yw==", - "peerDependencies": { - "mobx": "^4.13.1 || ^5.13.1" - } - }, - "node_modules/moment": { - "version": "2.29.2", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.2.tgz", - "integrity": "sha512-UgzG4rvxYpN15jgCmVJwac49h9ly9NurikMWGPdVxm8GZD6XjkKPxDTjQQ43gtGgnV3X0cAyWDdP2Wexoquifg==", - "engines": { - "node": "*" - } - }, - "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/msal": { - "version": "1.4.16", - "resolved": "https://registry.npmjs.org/msal/-/msal-1.4.16.tgz", - "integrity": "sha512-Q6jIV5RG6mD9O0bzZrR/f8v5QikrVWU0sccwOyqWE1xlBkKYVKRa/L8Gxt1X58M+J/N9V0JskhvO4KIfRHlE8g==", - "dependencies": { - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/multicast-dns": { - "version": "7.2.4", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.4.tgz", - "integrity": "sha512-XkCYOU+rr2Ft3LI6w4ye51M3VK31qJXFIxu0XLw169PtKG0Zx47OrXeVW/GCYOfpC9s1yyyf1S+L8/4LY0J9Zw==", - "dev": true, - "dependencies": { - "dns-packet": "^5.2.2", - "thunky": "^1.0.2" - }, - "bin": { - "multicast-dns": "cli.js" - } - }, - "node_modules/nanoid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz", - "integrity": "sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "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/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dev": true, - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node_modules/no-case/node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", - "dev": true - }, - "node_modules/node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", - "dev": true, - "engines": { - "node": ">= 6.13.0" - } - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", - "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", - "dev": true - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "dev": true, - "dependencies": { - "boolbase": "~1.0.0" - } - }, - "node_modules/nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", - "dev": true - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-hash": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", - "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", - "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", - "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.getownpropertydescriptors": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz", - "integrity": "sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.hasown": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz", - "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true - }, - "node_modules/office-ui-fabric-react": { - "version": "7.185.1", - "resolved": "https://registry.npmjs.org/office-ui-fabric-react/-/office-ui-fabric-react-7.185.1.tgz", - "integrity": "sha512-XSuVdqctyphHutzof0IrGSkrMq8XNGg7Nm77r8OFNBADj7Tqu2S3RQcAtZs8ukzpPitIEMzGYGmy01tFDv+k8A==", - "dependencies": { - "@fluentui/date-time-utilities": "^7.9.1", - "@fluentui/react-focus": "^7.18.3", - "@fluentui/react-window-provider": "^1.0.2", - "@microsoft/load-themed-styles": "^1.10.26", - "@uifabric/foundation": "^7.10.2", - "@uifabric/icons": "^7.6.3", - "@uifabric/merge-styles": "^7.19.2", - "@uifabric/react-hooks": "^7.14.1", - "@uifabric/set-version": "^7.0.24", - "@uifabric/styling": "^7.20.1", - "@uifabric/utilities": "^7.34.0", - "prop-types": "^15.7.2", - "tslib": "^1.10.0" - }, - "peerDependencies": { - "@types/react": ">=16.8.0 <17.0.0", - "@types/react-dom": ">=16.8.0 <17.0.0", - "react": ">=16.8.0 <17.0.0", - "react-dom": ">=16.8.0 <17.0.0" - } - }, - "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "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": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "dev": true, - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-retry": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", - "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", - "dev": true, - "dependencies": { - "@types/retry": "^0.12.0", - "retry": "^0.13.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "dev": true, - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/param-case/node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", - "dev": true - }, - "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/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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/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/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dev": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/pascal-case/node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", - "dev": true - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", - "dependencies": { - "isarray": "0.0.1" - } - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pirates": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", - "dev": true, - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-up/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-up/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/portfinder": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", - "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", - "dev": true, - "dependencies": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" - }, - "engines": { - "node": ">= 0.12.0" - } - }, - "node_modules/portfinder/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/postcss": { - "version": "8.4.12", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz", - "integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - ], - "dependencies": { - "nanoid": "^3.3.1", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-attribute-case-insensitive": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.0.tgz", - "integrity": "sha512-b4g9eagFGq9T5SWX4+USfVyjIb3liPnjhHHRMP7FMB2kFVpYyfEscV0wP3eaXhKlcHKUut8lt5BGoeylWA/dBQ==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.2" - }, - "peerDependencies": { - "postcss": "^8.0.2" - } - }, - "node_modules/postcss-browser-comments": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz", - "integrity": "sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "peerDependencies": { - "browserslist": ">=4", - "postcss": ">=8" - } - }, - "node_modules/postcss-calc": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", - "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.9", - "postcss-value-parser": "^4.2.0" - }, - "peerDependencies": { - "postcss": "^8.2.2" - } - }, - "node_modules/postcss-clamp": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", - "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": ">=7.6.0" - }, - "peerDependencies": { - "postcss": "^8.4.6" - } - }, - "node_modules/postcss-color-functional-notation": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.2.tgz", - "integrity": "sha512-DXVtwUhIk4f49KK5EGuEdgx4Gnyj6+t2jBSEmxvpIK9QI40tWrpS2Pua8Q7iIZWBrki2QOaeUdEaLPPa91K0RQ==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/postcss-color-hex-alpha": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.3.tgz", - "integrity": "sha512-fESawWJCrBV035DcbKRPAVmy21LpoyiXdPTuHUfWJ14ZRjY7Y7PA6P4g8z6LQGYhU1WAxkTxjIjurXzoe68Glw==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/postcss-color-rebeccapurple": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.0.2.tgz", - "integrity": "sha512-SFc3MaocHaQ6k3oZaFwH8io6MdypkUtEy/eXzXEB1vEQlO3S3oDc/FSZA8AsS04Z25RirQhlDlHLh3dn7XewWw==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.3" - } - }, - "node_modules/postcss-colormin": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", - "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "colord": "^2.9.1", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-convert-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.0.tgz", - "integrity": "sha512-GkyPbZEYJiWtQB0KZ0X6qusqFHUepguBCNFi9t5JJc7I2OTXG7C0twbTLvCfaKOLl3rSXmpAwV7W5txd91V84g==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-custom-media": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.0.tgz", - "integrity": "sha512-FvO2GzMUaTN0t1fBULDeIvxr5IvbDXcIatt6pnJghc736nqNgsGao5NT+5+WVLAQiTt6Cb3YUms0jiPaXhL//g==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-custom-properties": { - "version": "12.1.6", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.6.tgz", - "integrity": "sha512-QEnQkDkb+J+j2bfJisJJpTAFL+lUFl66rUNvnjPBIvRbZACLG4Eu5bmBCIY4FJCqhwsfbBpmJUyb3FcR/31lAg==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/postcss-custom-selectors": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.0.tgz", - "integrity": "sha512-/1iyBhz/W8jUepjGyu7V1OPcGbc636snN1yXEQCinb6Bwt7KxsiU7/bLQlp8GwAXzCh7cobBU5odNn/2zQWR8Q==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "postcss": "^8.1.2" - } - }, - "node_modules/postcss-dir-pseudo-class": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.4.tgz", - "integrity": "sha512-I8epwGy5ftdzNWEYok9VjW9whC4xnelAtbajGv4adql4FIF09rnrxnA9Y8xSHN47y7gqFIv10C5+ImsLeJpKBw==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.9" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/postcss-discard-comments": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.1.tgz", - "integrity": "sha512-5JscyFmvkUxz/5/+TB3QTTT9Gi9jHkcn8dcmmuN68JQcv3aQg4y88yEHHhwFB52l/NkaJ43O0dbksGMAo49nfQ==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-duplicates": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", - "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-empty": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", - "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-overridden": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", - "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-double-position-gradients": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.1.tgz", - "integrity": "sha512-jM+CGkTs4FcG53sMPjrrGE0rIvLDdCrqMzgDC5fLI7JHDO7o6QG8C5TQBtExb13hdBdoH9C2QVbG4jo2y9lErQ==", - "dev": true, - "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/postcss-env-function": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz", - "integrity": "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/postcss-flexbugs-fixes": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz", - "integrity": "sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==", - "dev": true, - "peerDependencies": { - "postcss": "^8.1.4" - } - }, - "node_modules/postcss-focus-visible": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz", - "integrity": "sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.9" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/postcss-focus-within": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz", - "integrity": "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.9" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/postcss-font-variant": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", - "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", - "dev": true, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-gap-properties": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.3.tgz", - "integrity": "sha512-rPPZRLPmEKgLk/KlXMqRaNkYTUpE7YC+bOIQFN5xcu1Vp11Y4faIXv6/Jpft6FMnl6YRxZqDZG0qQOW80stzxQ==", - "dev": true, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/postcss-image-set-function": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.6.tgz", - "integrity": "sha512-KfdC6vg53GC+vPd2+HYzsZ6obmPqOk6HY09kttU19+Gj1nC3S3XBVEXDHxkhxTohgZqzbUb94bKXvKDnYWBm/A==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/postcss-initial": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz", - "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==", - "dev": true, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-js": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz", - "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==", - "dev": true, - "dependencies": { - "camelcase-css": "^2.0.1" - }, - "engines": { - "node": "^12 || ^14 || >= 16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.3.3" - } - }, - "node_modules/postcss-lab-function": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.0.tgz", - "integrity": "sha512-Zb1EO9DGYfa3CP8LhINHCcTTCTLI+R3t7AX2mKsDzdgVQ/GkCpHOTgOr6HBHslP7XDdVbqgHW5vvRPMdVANQ8w==", - "dev": true, - "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/postcss-load-config": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", - "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", - "dev": true, - "dependencies": { - "lilconfig": "^2.0.5", - "yaml": "^1.10.2" - }, - "engines": { - "node": ">= 10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/postcss-loader": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", - "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", - "dev": true, - "dependencies": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.5", - "semver": "^7.3.5" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "postcss": "^7.0.0 || ^8.0.1", - "webpack": "^5.0.0" - } - }, - "node_modules/postcss-logical": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", - "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==", - "dev": true, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/postcss-media-minmax": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz", - "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-merge-longhand": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.4.tgz", - "integrity": "sha512-hbqRRqYfmXoGpzYKeW0/NCZhvNyQIlQeWVSao5iKWdyx7skLvCfQFGIUsP9NUs3dSbPac2IC4Go85/zG+7MlmA==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0", - "stylehacks": "^5.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-merge-rules": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.1.tgz", - "integrity": "sha512-8wv8q2cXjEuCcgpIB1Xx1pIy8/rhMPIQqYKNzEdyx37m6gpq83mQQdCxgIkFgliyEnKvdwJf/C61vN4tQDq4Ww==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "cssnano-utils": "^3.1.0", - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-font-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", - "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-gradients": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", - "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", - "dev": true, - "dependencies": { - "colord": "^2.9.1", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-params": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.2.tgz", - "integrity": "sha512-aEP+p71S/urY48HWaRHasyx4WHQJyOYaKpQ6eXl8k0kxg66Wt/30VR6/woh8THgcpRbonJD5IeD+CzNhPi1L8g==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.6", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-selectors": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.0.tgz", - "integrity": "sha512-vYxvHkW+iULstA+ctVNx0VoRAR4THQQRkG77o0oa4/mBS0OzGvvzLIvHDv/nNEM0crzN2WIyFU5X7wZhaUK3RA==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-modules-extract-imports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-local-by-default": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", - "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", - "dev": true, - "dependencies": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", - "dev": true, - "dependencies": { - "icss-utils": "^5.0.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-nested": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", - "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.6" - }, - "engines": { - "node": ">=12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.2.14" - } - }, - "node_modules/postcss-nesting": { - "version": "10.1.4", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.1.4.tgz", - "integrity": "sha512-2ixdQ59ik/Gt1+oPHiI1kHdwEI8lLKEmui9B1nl6163ANLC+GewQn7fXMxJF2JSb4i2MKL96GU8fIiQztK4TTA==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.10" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/postcss-normalize": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-10.0.1.tgz", - "integrity": "sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA==", - "dev": true, - "dependencies": { - "@csstools/normalize.css": "*", - "postcss-browser-comments": "^4", - "sanitize.css": "*" - }, - "engines": { - "node": ">= 12" - }, - "peerDependencies": { - "browserslist": ">= 4", - "postcss": ">= 8" - } - }, - "node_modules/postcss-normalize-charset": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", - "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-display-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", - "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-positions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.0.tgz", - "integrity": "sha512-8gmItgA4H5xiUxgN/3TVvXRoJxkAWLW6f/KKhdsH03atg0cB8ilXnrB5PpSshwVu/dD2ZsRFQcR1OEmSBDAgcQ==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-repeat-style": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.0.tgz", - "integrity": "sha512-IR3uBjc+7mcWGL6CtniKNQ4Rr5fTxwkaDHwMBDGGs1x9IVRkYIT/M4NelZWkAOBdV6v3Z9S46zqaKGlyzHSchw==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-string": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", - "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-timing-functions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", - "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-unicode": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz", - "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.6", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", - "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", - "dev": true, - "dependencies": { - "normalize-url": "^6.0.1", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-whitespace": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", - "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-opacity-percentage": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.2.tgz", - "integrity": "sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w==", - "dev": true, - "funding": [ - { - "type": "kofi", - "url": "https://ko-fi.com/mrcgrtz" - }, - { - "type": "liberapay", - "url": "https://liberapay.com/mrcgrtz" - } - ], - "engines": { - "node": "^12 || ^14 || >=16" - } - }, - "node_modules/postcss-ordered-values": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.1.tgz", - "integrity": "sha512-7lxgXF0NaoMIgyihL/2boNAEZKiW0+HkMhdKMTD93CjW8TdCy2hSdj8lsAo+uwm7EDG16Da2Jdmtqpedl0cMfw==", - "dev": true, - "dependencies": { - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-overflow-shorthand": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.3.tgz", - "integrity": "sha512-CxZwoWup9KXzQeeIxtgOciQ00tDtnylYIlJBBODqkgS/PU2jISuWOL/mYLHmZb9ZhZiCaNKsCRiLp22dZUtNsg==", - "dev": true, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/postcss-page-break": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", - "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", - "dev": true, - "peerDependencies": { - "postcss": "^8" - } - }, - "node_modules/postcss-place": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.4.tgz", - "integrity": "sha512-MrgKeiiu5OC/TETQO45kV3npRjOFxEHthsqGtkh3I1rPbZSbXGD/lZVi9j13cYh+NA8PIAPyk6sGjT9QbRyvSg==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/postcss-preset-env": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.4.3.tgz", - "integrity": "sha512-dlPA65g9KuGv7YsmGyCKtFkZKCPLkoVMUE3omOl6yM+qrynVHxFvf0tMuippIrXB/sB/MyhL1FgTIbrO+qMERg==", - "dev": true, - "dependencies": { - "@csstools/postcss-color-function": "^1.0.3", - "@csstools/postcss-font-format-keywords": "^1.0.0", - "@csstools/postcss-hwb-function": "^1.0.0", - "@csstools/postcss-ic-unit": "^1.0.0", - "@csstools/postcss-is-pseudo-class": "^2.0.1", - "@csstools/postcss-normalize-display-values": "^1.0.0", - "@csstools/postcss-oklab-function": "^1.0.2", - "@csstools/postcss-progressive-custom-properties": "^1.3.0", - "autoprefixer": "^10.4.4", - "browserslist": "^4.20.2", - "css-blank-pseudo": "^3.0.3", - "css-has-pseudo": "^3.0.4", - "css-prefers-color-scheme": "^6.0.3", - "cssdb": "^6.5.0", - "postcss-attribute-case-insensitive": "^5.0.0", - "postcss-clamp": "^4.1.0", - "postcss-color-functional-notation": "^4.2.2", - "postcss-color-hex-alpha": "^8.0.3", - "postcss-color-rebeccapurple": "^7.0.2", - "postcss-custom-media": "^8.0.0", - "postcss-custom-properties": "^12.1.5", - "postcss-custom-selectors": "^6.0.0", - "postcss-dir-pseudo-class": "^6.0.4", - "postcss-double-position-gradients": "^3.1.1", - "postcss-env-function": "^4.0.6", - "postcss-focus-visible": "^6.0.4", - "postcss-focus-within": "^5.0.4", - "postcss-font-variant": "^5.0.0", - "postcss-gap-properties": "^3.0.3", - "postcss-image-set-function": "^4.0.6", - "postcss-initial": "^4.0.1", - "postcss-lab-function": "^4.1.2", - "postcss-logical": "^5.0.4", - "postcss-media-minmax": "^5.0.0", - "postcss-nesting": "^10.1.3", - "postcss-opacity-percentage": "^1.1.2", - "postcss-overflow-shorthand": "^3.0.3", - "postcss-page-break": "^3.0.4", - "postcss-place": "^7.0.4", - "postcss-pseudo-class-any-link": "^7.1.1", - "postcss-replace-overflow-wrap": "^4.0.0", - "postcss-selector-not": "^5.0.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/postcss-pseudo-class-any-link": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.2.tgz", - "integrity": "sha512-76XzEQv3g+Vgnz3tmqh3pqQyRojkcJ+pjaePsyhcyf164p9aZsu3t+NWxkZYbcHLK1ju5Qmalti2jPI5IWCe5w==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.10" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/postcss-reduce-initial": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz", - "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-reduce-transforms": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", - "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-replace-overflow-wrap": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", - "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", - "dev": true, - "peerDependencies": { - "postcss": "^8.0.3" - } - }, - "node_modules/postcss-selector-not": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-5.0.0.tgz", - "integrity": "sha512-/2K3A4TCP9orP4TNS7u3tGdRFVKqz/E6pX3aGnriPG0jU78of8wsUcqE4QAhWEU0d+WnMSF93Ah3F//vUtK+iQ==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-svgo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", - "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0", - "svgo": "^2.7.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-svgo/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/postcss-svgo/node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dev": true, - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/postcss-svgo/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/postcss-svgo/node_modules/dom-serializer": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", - "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/postcss-svgo/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/postcss-svgo/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/postcss-svgo/node_modules/mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dev": true - }, - "node_modules/postcss-svgo/node_modules/nth-check": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/postcss-svgo/node_modules/svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", - "dev": true, - "dependencies": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/postcss-unique-selectors": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", - "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", - "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "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/pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pretty-error": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", - "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", - "dev": true, - "dependencies": { - "lodash": "^4.17.20", - "renderkid": "^3.0.0" - } - }, - "node_modules/pretty-format": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", - "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", - "dev": true, - "dependencies": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" - }, - "engines": { - "node": ">= 6" - } - }, - "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/promise": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz", - "integrity": "sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q==", - "dev": true, - "dependencies": { - "asap": "~2.0.6" - } - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "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/proxy-addr/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/psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "dev": true, - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, - "node_modules/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", - "dev": true, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "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/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/raf": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", - "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", - "dev": true, - "dependencies": { - "performance-now": "^2.1.0" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "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.4.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", - "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/raw-body/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/react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-aad-msal": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/react-aad-msal/-/react-aad-msal-2.3.5.tgz", - "integrity": "sha512-QCJXk7LtAf8ssbcuLT6glFZNmqcc6d2dy1ek+GY/feiNE3RM+bCxnH53VOPytV1h7EsUP9IvwOFum2fHcITo5A==", - "dependencies": { - "redux": "4.0.4" - }, - "engines": { - "node": ">= 8.10.0", - "npm": ">= 5.6.0" - }, - "peerDependencies": { - "msal": ">=1.2.1", - "react": ">=16.8.0" - } - }, - "node_modules/react-app-polyfill": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz", - "integrity": "sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w==", - "dev": true, - "dependencies": { - "core-js": "^3.19.2", - "object-assign": "^4.1.1", - "promise": "^8.1.0", - "raf": "^3.4.1", - "regenerator-runtime": "^0.13.9", - "whatwg-fetch": "^3.6.2" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/react-dev-utils": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.0.tgz", - "integrity": "sha512-xBQkitdxozPxt1YZ9O1097EJiVpwHr9FoAuEVURCKV0Av8NBERovJauzP7bo1ThvuhZ4shsQ1AJiu4vQpoT1AQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.0", - "address": "^1.1.2", - "browserslist": "^4.18.1", - "chalk": "^4.1.2", - "cross-spawn": "^7.0.3", - "detect-port-alt": "^1.1.6", - "escape-string-regexp": "^4.0.0", - "filesize": "^8.0.6", - "find-up": "^5.0.0", - "fork-ts-checker-webpack-plugin": "^6.5.0", - "global-modules": "^2.0.0", - "globby": "^11.0.4", - "gzip-size": "^6.0.0", - "immer": "^9.0.7", - "is-root": "^2.1.0", - "loader-utils": "^3.2.0", - "open": "^8.4.0", - "pkg-up": "^3.1.0", - "prompts": "^2.4.2", - "react-error-overlay": "^6.0.10", - "recursive-readdir": "^2.2.2", - "shell-quote": "^1.7.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/react-dev-utils/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/react-dev-utils/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/react-dev-utils/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/react-dev-utils/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/react-dev-utils/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/react-dev-utils/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/react-dev-utils/node_modules/loader-utils": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz", - "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==", - "dev": true, - "engines": { - "node": ">= 12.13.0" - } - }, - "node_modules/react-dev-utils/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/react-dom": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", - "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" - }, - "peerDependencies": { - "react": "17.0.2" - } - }, - "node_modules/react-error-overlay": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.10.tgz", - "integrity": "sha512-mKR90fX7Pm5seCOfz8q9F+66VCc1PGsWSBxKbITjfKVQHMNF2zudxHnMdJiB1fRCb+XsbQV9sO9DCkgsMQgBIA==", - "dev": true - }, - "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "node_modules/react-refresh": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", - "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-router": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.1.tgz", - "integrity": "sha512-lIboRiOtDLFdg1VTemMwud9vRVuOCZmUIT/7lUoZiSpPODiiH1UQlfXy+vPLC/7IWdFYnhRwAyNqA/+I7wnvKQ==", - "dependencies": { - "@babel/runtime": "^7.12.13", - "history": "^4.9.0", - "hoist-non-react-statics": "^3.1.0", - "loose-envify": "^1.3.1", - "mini-create-react-context": "^0.4.0", - "path-to-regexp": "^1.7.0", - "prop-types": "^15.6.2", - "react-is": "^16.6.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0" - }, - "peerDependencies": { - "react": ">=15" - } - }, - "node_modules/react-router-dom": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.0.tgz", - "integrity": "sha512-ObVBLjUZsphUUMVycibxgMdh5jJ1e3o+KpAZBVeHcNQZ4W+uUGGWsokurzlF4YOldQYRQL4y6yFRWM4m3svmuQ==", - "dependencies": { - "@babel/runtime": "^7.12.13", - "history": "^4.9.0", - "loose-envify": "^1.3.1", - "prop-types": "^15.6.2", - "react-router": "5.2.1", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0" - }, - "peerDependencies": { - "react": ">=15" - } - }, - "node_modules/react-scripts": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.0.tgz", - "integrity": "sha512-3i0L2CyIlROz7mxETEdfif6Sfhh9Lfpzi10CtcGs1emDQStmZfWjJbAIMtRD0opVUjQuFWqHZyRZ9PPzKCFxWg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.16.0", - "@pmmmwh/react-refresh-webpack-plugin": "^0.5.3", - "@svgr/webpack": "^5.5.0", - "babel-jest": "^27.4.2", - "babel-loader": "^8.2.3", - "babel-plugin-named-asset-import": "^0.3.8", - "babel-preset-react-app": "^10.0.1", - "bfj": "^7.0.2", - "browserslist": "^4.18.1", - "camelcase": "^6.2.1", - "case-sensitive-paths-webpack-plugin": "^2.4.0", - "css-loader": "^6.5.1", - "css-minimizer-webpack-plugin": "^3.2.0", - "dotenv": "^10.0.0", - "dotenv-expand": "^5.1.0", - "eslint": "^8.3.0", - "eslint-config-react-app": "^7.0.0", - "eslint-webpack-plugin": "^3.1.1", - "file-loader": "^6.2.0", - "fs-extra": "^10.0.0", - "html-webpack-plugin": "^5.5.0", - "identity-obj-proxy": "^3.0.0", - "jest": "^27.4.3", - "jest-resolve": "^27.4.2", - "jest-watch-typeahead": "^1.0.0", - "mini-css-extract-plugin": "^2.4.5", - "postcss": "^8.4.4", - "postcss-flexbugs-fixes": "^5.0.2", - "postcss-loader": "^6.2.1", - "postcss-normalize": "^10.0.1", - "postcss-preset-env": "^7.0.1", - "prompts": "^2.4.2", - "react-app-polyfill": "^3.0.0", - "react-dev-utils": "^12.0.0", - "react-refresh": "^0.11.0", - "resolve": "^1.20.0", - "resolve-url-loader": "^4.0.0", - "sass-loader": "^12.3.0", - "semver": "^7.3.5", - "source-map-loader": "^3.0.0", - "style-loader": "^3.3.1", - "tailwindcss": "^3.0.2", - "terser-webpack-plugin": "^5.2.5", - "webpack": "^5.64.4", - "webpack-dev-server": "^4.6.0", - "webpack-manifest-plugin": "^4.0.2", - "workbox-webpack-plugin": "^6.4.1" - }, - "bin": { - "react-scripts": "bin/react-scripts.js" - }, - "engines": { - "node": ">=14.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - }, - "peerDependencies": { - "react": ">= 16", - "typescript": "^3.2.1 || ^4" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/react-scripts/node_modules/@eslint/eslintrc": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz", - "integrity": "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.3.1", - "globals": "^13.9.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/react-scripts/node_modules/@humanwhocodes/config-array": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", - "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/react-scripts/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/react-scripts/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/react-scripts/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/react-scripts/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/react-scripts/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/react-scripts/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/react-scripts/node_modules/eslint": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.12.0.tgz", - "integrity": "sha512-it1oBL9alZg1S8UycLm5YDMAkIhtH6FtAzuZs6YvoGVldWjbS08BkAdb/ymP9LlAyq8koANu32U7Ib/w+UNh8Q==", - "dev": true, - "dependencies": { - "@eslint/eslintrc": "^1.2.1", - "@humanwhocodes/config-array": "^0.9.2", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.6.0", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/react-scripts/node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/react-scripts/node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/react-scripts/node_modules/espree": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", - "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", - "dev": true, - "dependencies": { - "acorn": "^8.7.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/react-scripts/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/react-scripts/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/react-scripts/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/react-scripts/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/react-scripts/node_modules/resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/react-scripts/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/react-virtualized-auto-sizer": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.6.tgz", - "integrity": "sha512-7tQ0BmZqfVF6YYEWcIGuoR3OdYe8I/ZFbNclFlGOC3pMqunkYF/oL30NCjSGl9sMEb17AnzixDz98Kqc3N76HQ==", - "engines": { - "node": ">8.0.0" - }, - "peerDependencies": { - "react": "^15.3.0 || ^16.0.0-alpha || ^17.0.0", - "react-dom": "^15.3.0 || ^16.0.0-alpha || ^17.0.0" - } - }, - "node_modules/react-window": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/react-window/-/react-window-1.8.6.tgz", - "integrity": "sha512-8VwEEYyjz6DCnGBsd+MgkD0KJ2/OXFULyDtorIiTz+QzwoP94tBoA7CnbtyXMm+cCeAUER5KJcPtWl9cpKbOBg==", - "dependencies": { - "@babel/runtime": "^7.0.0", - "memoize-one": ">=3.1.1 <6" - }, - "engines": { - "node": ">8.0.0" - }, - "peerDependencies": { - "react": "^15.0.0 || ^16.0.0 || ^17.0.0", - "react-dom": "^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, - "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/recursive-readdir": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", - "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", - "dev": true, - "dependencies": { - "minimatch": "3.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/recursive-readdir/node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dev": true, - "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/redux": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/redux/-/redux-4.0.4.tgz", - "integrity": "sha512-vKv4WdiJxOWKxK0yRoaK3Y4pxxB0ilzVx6dszU2W8wLxlb2yikRph4iV/ymtdJ6ZxpBLFbyrxklnT5yBbQSl3Q==", - "dependencies": { - "loose-envify": "^1.4.0", - "symbol-observable": "^1.2.0" - } - }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", - "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" - }, - "node_modules/regenerator-transform": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "node_modules/regex-parser": { - "version": "2.2.11", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", - "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", - "dev": true - }, - "node_modules/regexp.prototype.flags": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz", - "integrity": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/regexpu-core": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", - "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.0.1", - "regjsgen": "^0.6.0", - "regjsparser": "^0.8.2", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regjsgen": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", - "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", - "dev": true - }, - "node_modules/regjsparser": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", - "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", - "dev": true, - "dependencies": { - "jsesc": "~0.5.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/renderkid": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", - "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", - "dev": true, - "dependencies": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^6.0.1" - } - }, - "node_modules/renderkid/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/renderkid/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/renderkid/node_modules/dom-serializer": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", - "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/renderkid/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/renderkid/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/renderkid/node_modules/nth-check": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true - }, - "node_modules/resolve": { - "version": "2.0.0-next.3", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", - "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", - "dev": true, - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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/resolve-pathname": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", - "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" - }, - "node_modules/resolve-url-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz", - "integrity": "sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==", - "dev": true, - "dependencies": { - "adjust-sourcemap-loader": "^4.0.0", - "convert-source-map": "^1.7.0", - "loader-utils": "^2.0.0", - "postcss": "^7.0.35", - "source-map": "0.6.1" - }, - "engines": { - "node": ">=8.9" - }, - "peerDependencies": { - "rework": "1.0.1", - "rework-visit": "1.0.0" - }, - "peerDependenciesMeta": { - "rework": { - "optional": true - }, - "rework-visit": { - "optional": true - } - } - }, - "node_modules/resolve-url-loader/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/resolve-url-loader/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/resolve.exports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", - "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "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, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "2.70.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.70.1.tgz", - "integrity": "sha512-CRYsI5EuzLbXdxC6RnYhOuRdtz4bhejPMSWjsFLfVM/7w/85n2szZv6yExqUXsBdz5KT8eoubeyDUDjhLHEslA==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=10.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/rollup-plugin-terser": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", - "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.10.4", - "jest-worker": "^26.2.1", - "serialize-javascript": "^4.0.0", - "terser": "^5.0.0" - }, - "peerDependencies": { - "rollup": "^2.0.0" - } - }, - "node_modules/rollup-plugin-terser/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/rollup-plugin-terser/node_modules/jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/rollup-plugin-terser/node_modules/serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/rollup-plugin-terser/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "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": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/rxjs": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", - "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/rxjs/node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" - }, - "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==", - "dev": true - }, - "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/sanitize.css": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/sanitize.css/-/sanitize.css-13.0.0.tgz", - "integrity": "sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA==", - "dev": true - }, - "node_modules/sass-loader": { - "version": "12.6.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", - "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", - "dev": true, - "dependencies": { - "klona": "^2.0.4", - "neo-async": "^2.6.2" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "fibers": ">= 3.1.0", - "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", - "sass": "^1.3.0", - "sass-embedded": "*", - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "fibers": { - "optional": true - }, - "node-sass": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": 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/saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "dev": true, - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/scheduler": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", - "dev": true - }, - "node_modules/selfsigned": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", - "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", - "dev": true, - "dependencies": { - "node-forge": "^1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==", - "dev": true, - "dependencies": { - "lru-cache": "^7.4.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/send": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", - "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "1.8.1", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "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": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "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/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", - "dev": true, - "dependencies": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/serve-index/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/serve-index/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "dev": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "node_modules/serve-index/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/serve-index/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "node_modules/serve-static": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", - "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", - "dev": true, - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "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/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/shell-quote": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", - "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", - "dev": true - }, - "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/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/slice-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/sockjs": { - "version": "0.3.24", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", - "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", - "dev": true, - "dependencies": { - "faye-websocket": "^0.11.3", - "uuid": "^8.3.2", - "websocket-driver": "^0.7.4" - } - }, - "node_modules/source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-loader": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.1.tgz", - "integrity": "sha512-Vp1UsfyPvgujKQzi4pyDiTOnE3E4H+yHvkVRN3c/9PJmQS4CQJExvcDvaX/D+RV+xQben9HJ56jMJS3CgUeWyA==", - "dev": true, - "dependencies": { - "abab": "^2.0.5", - "iconv-lite": "^0.6.3", - "source-map-js": "^1.0.1" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/source-map-loader/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/source-map-resolve": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", - "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", - "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", - "dev": true, - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, - "node_modules/spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", - "dev": true, - "dependencies": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", - "dev": true, - "dependencies": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "node_modules/stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", - "dev": true - }, - "node_modules/stack-utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", - "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/stackframe": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.2.1.tgz", - "integrity": "sha512-h88QkzREN/hy8eRdyNhhsO7RSJ5oyTqxxmmn0dzBIMUclZsjpfmrsg81vp8mjjAs2vAZ72nyWxRUwSwmh0e4xg==", - "dev": true - }, - "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "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/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-natural-compare": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz", - "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==", - "dev": true - }, - "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, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width/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 - }, - "node_modules/string.prototype.matchall": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", - "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.4.1", - "side-channel": "^1.0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/stringify-object": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", - "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", - "dev": true, - "dependencies": { - "get-own-enumerable-property-symbols": "^3.0.0", - "is-obj": "^1.0.1", - "is-regexp": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "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, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", - "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "dependencies": { - "min-indent": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/style-loader": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", - "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", - "dev": true, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/stylehacks": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", - "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.6", - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "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/supports-hyperlinks": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", - "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-hyperlinks/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-hyperlinks/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/svg-parser": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", - "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", - "dev": true - }, - "node_modules/svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", - "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.", - "dev": true, - "dependencies": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/svgo/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/svgo/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/svgo/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/symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, - "node_modules/table": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz", - "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==", - "dev": true, - "dependencies": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table/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/table/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/tailwindcss": { - "version": "3.0.23", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.0.23.tgz", - "integrity": "sha512-+OZOV9ubyQ6oI2BXEhzw4HrqvgcARY38xv3zKcjnWtMIZstEsXdI9xftd1iB7+RbOnj2HOEzkA0OyB5BaSxPQA==", - "dev": true, - "dependencies": { - "arg": "^5.0.1", - "chalk": "^4.1.2", - "chokidar": "^3.5.3", - "color-name": "^1.1.4", - "cosmiconfig": "^7.0.1", - "detective": "^5.2.0", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.2.11", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "normalize-path": "^3.0.0", - "object-hash": "^2.2.0", - "postcss": "^8.4.6", - "postcss-js": "^4.0.0", - "postcss-load-config": "^3.1.0", - "postcss-nested": "5.0.6", - "postcss-selector-parser": "^6.0.9", - "postcss-value-parser": "^4.2.0", - "quick-lru": "^5.1.1", - "resolve": "^1.22.0" - }, - "bin": { - "tailwind": "lib/cli.js", - "tailwindcss": "lib/cli.js" - }, - "engines": { - "node": ">=12.13.0" - }, - "peerDependencies": { - "autoprefixer": "^10.0.2", - "postcss": "^8.0.9" - } - }, - "node_modules/tailwindcss/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/tailwindcss/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/tailwindcss/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/tailwindcss/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/tailwindcss/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/tailwindcss/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/tailwindcss/node_modules/resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tailwindcss/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/temp-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", - "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/tempy": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", - "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", - "dev": true, - "dependencies": { - "is-stream": "^2.0.0", - "temp-dir": "^2.0.0", - "type-fest": "^0.16.0", - "unique-string": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/tempy/node_modules/type-fest": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", - "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/terser": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.1.tgz", - "integrity": "sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ==", - "dev": true, - "dependencies": { - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", - "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", - "dev": true, - "dependencies": { - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", - "terser": "^5.7.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/terser/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "node_modules/throat": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", - "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", - "dev": true - }, - "node_modules/thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true - }, - "node_modules/tiny-invariant": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.2.0.tgz", - "integrity": "sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg==" - }, - "node_modules/tiny-warning": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", - "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" - }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.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": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tryer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", - "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", - "dev": true - }, - "node_modules/tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", - "dev": true, - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "node_modules/typescript": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz", - "integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", - "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "dev": true, - "dependencies": { - "crypto-random-string": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "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": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", - "dev": true - }, - "node_modules/upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true, - "engines": { - "node": ">=4", - "yarn": "*" - } - }, - "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": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "node_modules/util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", - "dev": true - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "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==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "node_modules/v8-to-istanbul": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", - "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/v8-to-istanbul/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/value-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", - "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "dev": true, - "dependencies": { - "browser-process-hrtime": "^1.0.0" - } - }, - "node_modules/w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", - "dev": true, - "dependencies": { - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "dependencies": { - "makeerror": "1.0.12" - } - }, - "node_modules/watchpack": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", - "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", - "dev": true, - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "dev": true, - "dependencies": { - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/web-vitals": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-0.2.4.tgz", - "integrity": "sha512-6BjspCO9VriYy12z356nL6JBS0GYeEcA457YyRzD+dD6XYCQ75NKhcOHUMHentOE7OcVCIXXDvOm0jKFfQG2Gg==" - }, - "node_modules/webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true, - "engines": { - "node": ">=10.4" - } - }, - "node_modules/webpack": { - "version": "5.71.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.71.0.tgz", - "integrity": "sha512-g4dFT7CFG8LY0iU5G8nBL6VlkT21Z7dcYDpJAEJV5Q1WLb9UwnFbrem1k7K52ILqEmomN7pnzWFxxE6SlDY56A==", - "dev": true, - "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.9.2", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.1", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-dev-middleware": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz", - "integrity": "sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg==", - "dev": true, - "dependencies": { - "colorette": "^2.0.10", - "memfs": "^3.4.1", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^4.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/webpack-dev-middleware/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/webpack-dev-middleware/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/webpack-dev-middleware/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/webpack-dev-middleware/node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/webpack-dev-server": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.8.1.tgz", - "integrity": "sha512-dwld70gkgNJa33czmcj/PlKY/nOy/BimbrgZRaR9vDATBQAYgLzggR0nxDtPLJiLrMgZwbE6RRfJ5vnBBasTyg==", - "dev": true, - "dependencies": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.1", - "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.0.11", - "chokidar": "^3.5.3", - "colorette": "^2.0.10", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "default-gateway": "^6.0.3", - "express": "^4.17.3", - "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.3", - "ipaddr.js": "^2.0.1", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "portfinder": "^1.0.28", - "rimraf": "^3.0.2", - "schema-utils": "^4.0.0", - "selfsigned": "^2.0.1", - "serve-index": "^1.9.1", - "sockjs": "^0.3.21", - "spdy": "^4.0.2", - "webpack-dev-middleware": "^5.3.1", - "ws": "^8.4.2" - }, - "bin": { - "webpack-dev-server": "bin/webpack-dev-server.js" - }, - "engines": { - "node": ">= 12.13.0" - }, - "peerDependencies": { - "webpack": "^4.37.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-dev-server/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/webpack-dev-server/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/webpack-dev-server/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/webpack-dev-server/node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", - "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/webpack-manifest-plugin": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-4.1.1.tgz", - "integrity": "sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow==", - "dev": true, - "dependencies": { - "tapable": "^2.0.0", - "webpack-sources": "^2.2.0" - }, - "engines": { - "node": ">=12.22.0" - }, - "peerDependencies": { - "webpack": "^4.44.2 || ^5.47.0" - } - }, - "node_modules/webpack-manifest-plugin/node_modules/webpack-sources": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz", - "integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==", - "dev": true, - "dependencies": { - "source-list-map": "^2.0.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dev": true, - "dependencies": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "dependencies": { - "iconv-lite": "0.4.24" - } - }, - "node_modules/whatwg-fetch": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", - "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==", - "dev": true - }, - "node_modules/whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "node_modules/whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "dependencies": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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/workbox-background-sync": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.5.2.tgz", - "integrity": "sha512-EjG37LSMDJ1TFlFg56wx6YXbH4/NkG09B9OHvyxx+cGl2gP5OuOzsCY3rOPJSpbcz6jpuA40VIC3HzSD4OvE1g==", - "dev": true, - "dependencies": { - "idb": "^6.1.4", - "workbox-core": "6.5.2" - } - }, - "node_modules/workbox-broadcast-update": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.5.2.tgz", - "integrity": "sha512-DjJYraYnprTZE/AQNoeogaxI1dPuYmbw+ZJeeP8uXBSbg9SNv5wLYofQgywXeRepv4yr/vglMo9yaHUmBMc+4Q==", - "dev": true, - "dependencies": { - "workbox-core": "6.5.2" - } - }, - "node_modules/workbox-build": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.5.2.tgz", - "integrity": "sha512-TVi4Otf6fgwikBeMpXF9n0awHfZTMNu/nwlMIT9W+c13yvxkmDFMPb7vHYK6RUmbcxwPnz4I/R+uL76+JxG4JQ==", - "dev": true, - "dependencies": { - "@apideck/better-ajv-errors": "^0.3.1", - "@babel/core": "^7.11.1", - "@babel/preset-env": "^7.11.0", - "@babel/runtime": "^7.11.2", - "@rollup/plugin-babel": "^5.2.0", - "@rollup/plugin-node-resolve": "^11.2.1", - "@rollup/plugin-replace": "^2.4.1", - "@surma/rollup-plugin-off-main-thread": "^2.2.3", - "ajv": "^8.6.0", - "common-tags": "^1.8.0", - "fast-json-stable-stringify": "^2.1.0", - "fs-extra": "^9.0.1", - "glob": "^7.1.6", - "lodash": "^4.17.20", - "pretty-bytes": "^5.3.0", - "rollup": "^2.43.1", - "rollup-plugin-terser": "^7.0.0", - "source-map": "^0.8.0-beta.0", - "stringify-object": "^3.3.0", - "strip-comments": "^2.0.1", - "tempy": "^0.6.0", - "upath": "^1.2.0", - "workbox-background-sync": "6.5.2", - "workbox-broadcast-update": "6.5.2", - "workbox-cacheable-response": "6.5.2", - "workbox-core": "6.5.2", - "workbox-expiration": "6.5.2", - "workbox-google-analytics": "6.5.2", - "workbox-navigation-preload": "6.5.2", - "workbox-precaching": "6.5.2", - "workbox-range-requests": "6.5.2", - "workbox-recipes": "6.5.2", - "workbox-routing": "6.5.2", - "workbox-strategies": "6.5.2", - "workbox-streams": "6.5.2", - "workbox-sw": "6.5.2", - "workbox-window": "6.5.2" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/workbox-build/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/workbox-build/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/workbox-build/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/workbox-build/node_modules/source-map": { - "version": "0.8.0-beta.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", - "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", - "dev": true, - "dependencies": { - "whatwg-url": "^7.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/workbox-build/node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/workbox-build/node_modules/webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, - "node_modules/workbox-build/node_modules/whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "node_modules/workbox-cacheable-response": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.5.2.tgz", - "integrity": "sha512-UnHGih6xqloV808T7ve1iNKZMbpML0jGLqkkmyXkJbZc5j16+HRSV61Qrh+tiq3E3yLvFMGJ3AUBODOPNLWpTg==", - "dev": true, - "dependencies": { - "workbox-core": "6.5.2" - } - }, - "node_modules/workbox-core": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.5.2.tgz", - "integrity": "sha512-IlxLGQf+wJHCR+NM0UWqDh4xe/Gu6sg2i4tfZk6WIij34IVk9BdOQgi6WvqSHd879jbQIUgL2fBdJUJyAP5ypQ==", - "dev": true - }, - "node_modules/workbox-expiration": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.5.2.tgz", - "integrity": "sha512-5Hfp0uxTZJrgTiy9W7AjIIec+9uTOtnxY/tRBm4DbqcWKaWbVTa+izrKzzOT4MXRJJIJUmvRhWw4oo8tpmMouw==", - "dev": true, - "dependencies": { - "idb": "^6.1.4", - "workbox-core": "6.5.2" - } - }, - "node_modules/workbox-google-analytics": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.5.2.tgz", - "integrity": "sha512-8SMar+N0xIreP5/2we3dwtN1FUmTMScoopL86aKdXBpio8vXc8Oqb5fCJG32ialjN8BAOzDqx/FnGeCtkIlyvw==", - "dev": true, - "dependencies": { - "workbox-background-sync": "6.5.2", - "workbox-core": "6.5.2", - "workbox-routing": "6.5.2", - "workbox-strategies": "6.5.2" - } - }, - "node_modules/workbox-navigation-preload": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.5.2.tgz", - "integrity": "sha512-iqDNWWMswjCsZuvGFDpcX1Z8InBVAlVBELJ28xShsWWntALzbtr0PXMnm2WHkXCc56JimmGldZi1N5yDPiTPOg==", - "dev": true, - "dependencies": { - "workbox-core": "6.5.2" - } - }, - "node_modules/workbox-precaching": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.5.2.tgz", - "integrity": "sha512-OZAlQ8AAT20KugGKKuJMHdQ8X1IyNQaLv+mPTHj+8Dmv8peBq5uWNzs4g/1OSFmXsbXZ6a1CBC6YtQWVPhJQ9w==", - "dev": true, - "dependencies": { - "workbox-core": "6.5.2", - "workbox-routing": "6.5.2", - "workbox-strategies": "6.5.2" - } - }, - "node_modules/workbox-range-requests": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.5.2.tgz", - "integrity": "sha512-zi5VqF1mWqfCyJLTMXn1EuH/E6nisqWDK1VmOJ+TnjxGttaQrseOhMn+BMvULFHeF8AvrQ0ogfQ6bSv0rcfAlg==", - "dev": true, - "dependencies": { - "workbox-core": "6.5.2" - } - }, - "node_modules/workbox-recipes": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.5.2.tgz", - "integrity": "sha512-2lcUKMYDiJKvuvRotOxLjH2z9K7jhj8GNUaHxHNkJYbTCUN3LsX1cWrsgeJFDZ/LgI565t3fntpbG9J415ZBXA==", - "dev": true, - "dependencies": { - "workbox-cacheable-response": "6.5.2", - "workbox-core": "6.5.2", - "workbox-expiration": "6.5.2", - "workbox-precaching": "6.5.2", - "workbox-routing": "6.5.2", - "workbox-strategies": "6.5.2" - } - }, - "node_modules/workbox-routing": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.5.2.tgz", - "integrity": "sha512-nR1w5PjF6IVwo0SX3oE88LhmGFmTnqqU7zpGJQQPZiKJfEKgDENQIM9mh3L1ksdFd9Y3CZVkusopHfxQvit/BA==", - "dev": true, - "dependencies": { - "workbox-core": "6.5.2" - } - }, - "node_modules/workbox-strategies": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.5.2.tgz", - "integrity": "sha512-fgbwaUMxbG39BHjJIs2y2X21C0bmf1Oq3vMQxJ1hr6y5JMJIm8rvKCcf1EIdAr+PjKdSk4ddmgyBQ4oO8be4Uw==", - "dev": true, - "dependencies": { - "workbox-core": "6.5.2" - } - }, - "node_modules/workbox-streams": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.5.2.tgz", - "integrity": "sha512-ovD0P4UrgPtZ2Lfc/8E8teb1RqNOSZr+1ZPqLR6sGRZnKZviqKbQC3zVvvkhmOIwhWbpL7bQlWveLVONHjxd5w==", - "dev": true, - "dependencies": { - "workbox-core": "6.5.2", - "workbox-routing": "6.5.2" - } - }, - "node_modules/workbox-sw": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.5.2.tgz", - "integrity": "sha512-2KhlYqtkoqlnPdllj2ujXUKRuEFsRDIp6rdE4l1PsxiFHRAFaRTisRQpGvRem5yxgXEr+fcEKiuZUW2r70KZaw==", - "dev": true - }, - "node_modules/workbox-webpack-plugin": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.2.tgz", - "integrity": "sha512-StrJ7wKp5tZuGVcoKLVjFWlhDy+KT7ZWsKnNcD6F08wA9Cpt6JN+PLIrplcsTHbQpoAV8+xg6RvcG0oc9z+RpQ==", - "dev": true, - "dependencies": { - "fast-json-stable-stringify": "^2.1.0", - "pretty-bytes": "^5.4.1", - "upath": "^1.2.0", - "webpack-sources": "^1.4.3", - "workbox-build": "6.5.2" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "webpack": "^4.4.0 || ^5.9.0" - } - }, - "node_modules/workbox-webpack-plugin/node_modules/webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "node_modules/workbox-window": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.5.2.tgz", - "integrity": "sha512-2kZH37r9Wx8swjEOL4B8uGM53lakMxsKkQ7mOKzGA/QAn/DQTEZGrdHWtypk2tbhKY5S0jvPS+sYDnb2Z3378A==", - "dev": true, - "dependencies": { - "@types/trusted-types": "^2.0.2", - "workbox-core": "6.5.2" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "node_modules/ws": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", - "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", - "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/xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, - "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/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - }, "dependencies": { "@ampproject/remapping": { "version": "2.1.2", @@ -24787,15 +3879,13 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "requires": {} + "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": {} + "dev": true }, "acorn-node": { "version": "1.8.2", @@ -24892,8 +3982,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "ansi-colors": { "version": "4.1.1", @@ -25281,8 +4370,7 @@ "version": "0.3.8", "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz", "integrity": "sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==", - "dev": true, - "requires": {} + "dev": true }, "babel-plugin-polyfill-corejs2": { "version": "0.3.1", @@ -26030,8 +5118,7 @@ "version": "6.2.2", "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.2.2.tgz", "integrity": "sha512-Ufadglr88ZLsrvS11gjeu/40Lw74D9Am/Jpr3LlYm5Q4ZP5KdlUhG+6u2EjyXeZcxmZ2h1ebCKngDjolpeLHpg==", - "dev": true, - "requires": {} + "dev": true }, "css-has-pseudo": { "version": "3.0.4", @@ -26117,8 +5204,7 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", - "dev": true, - "requires": {} + "dev": true }, "css-select": { "version": "2.1.0", @@ -26224,8 +5310,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", - "dev": true, - "requires": {} + "dev": true }, "csso": { "version": "4.2.0", @@ -27349,8 +6434,7 @@ "version": "4.4.0", "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.4.0.tgz", "integrity": "sha512-U3RVIfdzJaeKDQKEJbz5p3NW8/L80PCATJAfuojwbaEL+gBjfGdhUcGde+WGUW46Q5sr/NgxevsIiDtNXrvZaQ==", - "dev": true, - "requires": {} + "dev": true }, "eslint-plugin-testing-library": { "version": "5.2.1", @@ -28521,8 +7605,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "requires": {} + "dev": true }, "idb": { "version": "6.1.5", @@ -30487,8 +9570,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", - "dev": true, - "requires": {} + "dev": true }, "jest-regex-util": { "version": "27.5.1", @@ -32072,14 +11154,12 @@ "mobx-react-lite": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/mobx-react-lite/-/mobx-react-lite-2.2.2.tgz", - "integrity": "sha512-2SlXALHIkyUPDsV4VTKVR9DW7K3Ksh1aaIv3NrNJygTbhXe2A9GrcKHZ2ovIiOp/BXilOcTYemfHHZubP431dg==", - "requires": {} + "integrity": "sha512-2SlXALHIkyUPDsV4VTKVR9DW7K3Ksh1aaIv3NrNJygTbhXe2A9GrcKHZ2ovIiOp/BXilOcTYemfHHZubP431dg==" }, "mobx-utils": { "version": "5.6.2", "resolved": "https://registry.npmjs.org/mobx-utils/-/mobx-utils-5.6.2.tgz", - "integrity": "sha512-a/WlXyGkp6F12b01sTarENpxbmlRgPHFyR1Xv2bsSjQBm5dcOtd16ONb40/vOqck8L99NHpI+C9MXQ+SZ8f+yw==", - "requires": {} + "integrity": "sha512-a/WlXyGkp6F12b01sTarENpxbmlRgPHFyR1Xv2bsSjQBm5dcOtd16ONb40/vOqck8L99NHpI+C9MXQ+SZ8f+yw==" }, "moment": { "version": "2.29.2", @@ -32698,8 +11778,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz", "integrity": "sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==", - "dev": true, - "requires": {} + "dev": true }, "postcss-calc": { "version": "8.2.4", @@ -32772,8 +11851,7 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.0.tgz", "integrity": "sha512-FvO2GzMUaTN0t1fBULDeIvxr5IvbDXcIatt6pnJghc736nqNgsGao5NT+5+WVLAQiTt6Cb3YUms0jiPaXhL//g==", - "dev": true, - "requires": {} + "dev": true }, "postcss-custom-properties": { "version": "12.1.6", @@ -32806,29 +11884,25 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.1.tgz", "integrity": "sha512-5JscyFmvkUxz/5/+TB3QTTT9Gi9jHkcn8dcmmuN68JQcv3aQg4y88yEHHhwFB52l/NkaJ43O0dbksGMAo49nfQ==", - "dev": true, - "requires": {} + "dev": true }, "postcss-discard-duplicates": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", - "dev": true, - "requires": {} + "dev": true }, "postcss-discard-empty": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", - "dev": true, - "requires": {} + "dev": true }, "postcss-discard-overridden": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", - "dev": true, - "requires": {} + "dev": true }, "postcss-double-position-gradients": { "version": "3.1.1", @@ -32853,8 +11927,7 @@ "version": "5.0.2", "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz", "integrity": "sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==", - "dev": true, - "requires": {} + "dev": true }, "postcss-focus-visible": { "version": "6.0.4", @@ -32878,15 +11951,13 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", - "dev": true, - "requires": {} + "dev": true }, "postcss-gap-properties": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.3.tgz", "integrity": "sha512-rPPZRLPmEKgLk/KlXMqRaNkYTUpE7YC+bOIQFN5xcu1Vp11Y4faIXv6/Jpft6FMnl6YRxZqDZG0qQOW80stzxQ==", - "dev": true, - "requires": {} + "dev": true }, "postcss-image-set-function": { "version": "4.0.6", @@ -32901,8 +11972,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz", "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==", - "dev": true, - "requires": {} + "dev": true }, "postcss-js": { "version": "4.0.0", @@ -32948,15 +12018,13 @@ "version": "5.0.4", "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==", - "dev": true, - "requires": {} + "dev": true }, "postcss-media-minmax": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz", "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==", - "dev": true, - "requires": {} + "dev": true }, "postcss-merge-longhand": { "version": "5.1.4", @@ -33024,8 +12092,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true, - "requires": {} + "dev": true }, "postcss-modules-local-by-default": { "version": "4.0.0", @@ -33089,8 +12156,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", - "dev": true, - "requires": {} + "dev": true }, "postcss-normalize-display-values": { "version": "5.1.0", @@ -33186,15 +12252,13 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.3.tgz", "integrity": "sha512-CxZwoWup9KXzQeeIxtgOciQ00tDtnylYIlJBBODqkgS/PU2jISuWOL/mYLHmZb9ZhZiCaNKsCRiLp22dZUtNsg==", - "dev": true, - "requires": {} + "dev": true }, "postcss-page-break": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", - "dev": true, - "requires": {} + "dev": true }, "postcss-place": { "version": "7.0.4", @@ -33288,8 +12352,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", - "dev": true, - "requires": {} + "dev": true }, "postcss-selector-not": { "version": "5.0.0", @@ -33431,10 +12494,9 @@ "dev": true }, "prettier": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", - "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", - "dev": true + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", + "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==" }, "prettier-linter-helpers": { "version": "1.0.0", @@ -34051,8 +13113,7 @@ "react-virtualized-auto-sizer": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.6.tgz", - "integrity": "sha512-7tQ0BmZqfVF6YYEWcIGuoR3OdYe8I/ZFbNclFlGOC3pMqunkYF/oL30NCjSGl9sMEb17AnzixDz98Kqc3N76HQ==", - "requires": {} + "integrity": "sha512-7tQ0BmZqfVF6YYEWcIGuoR3OdYe8I/ZFbNclFlGOC3pMqunkYF/oL30NCjSGl9sMEb17AnzixDz98Kqc3N76HQ==" }, "react-window": { "version": "1.8.6", @@ -34931,15 +13992,6 @@ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", "dev": true }, - "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" - } - }, "string-length": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", @@ -35011,6 +14063,15 @@ "define-properties": "^1.1.3" } }, + "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" + } + }, "stringify-object": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", @@ -35076,8 +14137,7 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", - "dev": true, - "requires": {} + "dev": true }, "stylehacks": { "version": "5.1.0", @@ -35974,8 +15034,7 @@ "version": "8.5.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", - "dev": true, - "requires": {} + "dev": true } } }, @@ -36423,8 +15482,7 @@ "version": "7.5.7", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", - "dev": true, - "requires": {} + "dev": true }, "xml-name-validator": { "version": "3.0.0", @@ -36484,4 +15542,4 @@ "dev": true } } -} +} \ No newline at end of file diff --git a/client/package.json b/client/package.json index 25dbbee5..939ab84f 100644 --- a/client/package.json +++ b/client/package.json @@ -19,6 +19,7 @@ "mobx-utils": "^5.5.7", "moment": "^2.25.3", "msal": "^1.3.0", + "prettier": "^2.0.5", "react": "^17.0.1", "react-aad-msal": "^2.3.5", "react-dom": "^17.0.1", @@ -41,7 +42,6 @@ "eslint-config-react": "^1.1.7", "eslint-plugin-prettier": "^3.1.3", "eslint-plugin-react": "^7.29.4", - "prettier": "^2.7.1", "react-scripts": "^5.0.0", "typescript": "^4.1.2" }, @@ -50,8 +50,7 @@ "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject", - "lint": "eslint --ext .js --ext .ts --ext .tsx --ignore-path .gitignore --ignore-pattern \"!**/.*\" . --quiet --fix", - "prettier-format": "prettier --config .prettierrc 'src/**/*.ts' --write" + "lint": "eslint --ext .js --ext .ts --ext .tsx --ignore-path .gitignore --ignore-pattern \"!**/.*\" . --quiet --fix" }, "eslintConfig": { "extends": [ @@ -71,4 +70,4 @@ "last 1 safari version" ] } -} +} \ No newline at end of file From 6f2c09e994bfd9ccaca9235706c4f53224542a81 Mon Sep 17 00:00:00 2001 From: Tianchen Zhang Date: Thu, 21 Jul 2022 20:02:14 +0100 Subject: [PATCH 096/285] set cleanup customized values --- deployment/Cleanup.ps1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deployment/Cleanup.ps1 b/deployment/Cleanup.ps1 index 3ef2c8e2..a506288f 100644 --- a/deployment/Cleanup.ps1 +++ b/deployment/Cleanup.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "RB_a2_MSLearnLTI", - [string]$AppName = "RB_a2_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "TZ_policy_validation", + [string]$AppName = "TZ_policy_val_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null ) From bd2ac3215f2a0059539f686de4968d20f175a886 Mon Sep 17 00:00:00 2001 From: Lilin Huang Date: Thu, 21 Jul 2022 21:41:45 +0100 Subject: [PATCH 097/285] Fix Object ID --- deployment/Deploy.ps1 | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index e84dba2d..db887ad8 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -194,7 +194,14 @@ process { #region Provision Resources inside Resource Group on Azure using ARM template Write-Title 'STEP #6 - Creating Resources in Azure' + [int]$azver0= (az version | ConvertFrom-Json | Select -ExpandProperty "azure-cli").Split(".")[0] + [int]$azver1= (az version | ConvertFrom-Json | Select -ExpandProperty "azure-cli").Split(".")[1] + if( $azver0 -ge 2 && $azver1 -ge 37){ + $userObjectId = az ad signed-in-user show --query id + } + else { $userObjectId = az ad signed-in-user show --query objectId + } #$userObjectId $templateFileName = "azuredeploy.json" From fb405c934ebc7a12ccd23a292eaf347e2195f5c9 Mon Sep 17 00:00:00 2001 From: Lilin Huang Date: Fri, 22 Jul 2022 15:25:09 +0100 Subject: [PATCH 098/285] Update the custom policy template. --- .../B2C_1A_TrustFrameworkExtensions.xml | 80 +++++++++++++++++++ .../CustomPolicyTemplates/B2C_1A_signin.xml | 23 ++++++ 2 files changed, 103 insertions(+) create mode 100644 deployment/CustomPolicyTemplates/B2C_1A_signin.xml diff --git a/deployment/CustomPolicyTemplates/B2C_1A_TrustFrameworkExtensions.xml b/deployment/CustomPolicyTemplates/B2C_1A_TrustFrameworkExtensions.xml index 25e432af..54b8da49 100644 --- a/deployment/CustomPolicyTemplates/B2C_1A_TrustFrameworkExtensions.xml +++ b/deployment/CustomPolicyTemplates/B2C_1A_TrustFrameworkExtensions.xml @@ -173,5 +173,85 @@ + + + + + + + + + + + + + objectId + SkipThisOrchestrationStep + + + + + + + + + + + + authenticationSource + localAccountAuthentication + SkipThisOrchestrationStep + + + + + + + + + + + objectId + SkipThisOrchestrationStep + + + + + + + + + + + authenticationSource + socialIdpAuthentication + SkipThisOrchestrationStep + + + + + + + + + + + objectId + SkipThisOrchestrationStep + + + + + + + + + + \ No newline at end of file diff --git a/deployment/CustomPolicyTemplates/B2C_1A_signin.xml b/deployment/CustomPolicyTemplates/B2C_1A_signin.xml new file mode 100644 index 00000000..920cb0b3 --- /dev/null +++ b/deployment/CustomPolicyTemplates/B2C_1A_signin.xml @@ -0,0 +1,23 @@ + + + <>.onmicrosoft.com + B2C_1A_TrustFrameworkExtensions + + + + + PolicyProfile + + + + + + + + + + + + + + \ No newline at end of file From 14e3e88d43689558e975bb6b0a2481c1699a8300 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Fri, 22 Jul 2022 16:40:12 +0100 Subject: [PATCH 099/285] working auth and sending bearer token --- .../AssignmentLearnContentApi.cs | 8 +- .../Edna.Assignments/AssignmentsApi.cs | 10 +- client/package-lock.json | 88 +++++++++++- client/package.json | 4 +- client/src/App.tsx | 133 ++++++++++++++++-- client/src/Core/Auth/AppAuthConfig.ts | 63 ++++++--- .../Core/Auth/AxiosBasicAuthInitializer.tsx | 84 ++++++++++- client/src/Core/Auth/policies.ts | 4 +- client/src/Core/Components/UserMenu.tsx | 5 +- client/src/Services/Assignment.service.ts | 5 +- client/src/Services/MicrosoftLearn.service.ts | 7 + client/src/Services/Users.service.ts | 4 +- client/src/Stores/Assignment.store.ts | 4 + deployment/azuredeploy.json | 17 +-- 14 files changed, 378 insertions(+), 58 deletions(-) diff --git a/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs b/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs index 4e9e30cd..3b459ff3 100644 --- a/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs +++ b/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs @@ -64,7 +64,7 @@ public async Task GetAllAssignmentLearnContent( [Table(AssignmentLearnContentTableName)] CloudTable assignmentLearnContentTable, string assignmentId) { - _logger.LogInformation($"Fetching all selected learn content for assignment {assignmentId}."); + _logger.LogError($"Fetching all selected learn content for assignment {assignmentId}."); // TODO return to loginfo List assignmentSelectedLearnContent = await GetAllAssignmentLearnContentEntities(assignmentLearnContentTable, assignmentId); @@ -72,6 +72,12 @@ public async Task GetAllAssignmentLearnContent( .OrderBy(entity => entity.Timestamp.Ticks) .Select(_mapper.Map); + // TODO remove + _logger.LogError("My dtos are " + assignmentSelectedLearnContentDtos.Count().ToString()); + if (assignmentSelectedLearnContentDtos.Count() > 0) + { + _logger.LogError(assignmentSelectedLearnContentDtos.FirstOrDefault().ContentUid); + } return new OkObjectResult(assignmentSelectedLearnContentDtos); } diff --git a/backend/Functions/Edna.Assignments/Edna.Assignments/AssignmentsApi.cs b/backend/Functions/Edna.Assignments/Edna.Assignments/AssignmentsApi.cs index 663b78b2..9ad1bcb0 100644 --- a/backend/Functions/Edna.Assignments/Edna.Assignments/AssignmentsApi.cs +++ b/backend/Functions/Edna.Assignments/Edna.Assignments/AssignmentsApi.cs @@ -93,11 +93,11 @@ public async Task CreateOrUpdateAssignment( return new InternalServerErrorResult(); } - _logger.LogInformation($"Saved assignment {assignmentEntity.ToAssignmentId()}."); - + _logger.LogError($"Saved assignment {assignmentEntity.ToAssignmentId()}."); // TODO: switch back to loginfo + string assignmentUrl = $"{req.Scheme}://{req.Host}/api/{AssignmentsRoutePath}/{assignmentEntity.ToAssignmentId()}"; AssignmentDto savedAssignmentDto = _mapper.Map(assignmentEntity); - + _logger.LogError(savedAssignmentDto.CourseName + savedAssignmentDto.Id); return new CreatedResult(assignmentUrl, savedAssignmentDto); } @@ -108,6 +108,8 @@ public async Task GetAssignment( [Platform] PlatformsClient platformsClient, string assignmentId) { + _logger.LogError("In Get Assignment"); + AssignmentEntity assignmentEntity = await FetchAssignment(table, assignmentId); if (assignmentEntity == null) return new NotFoundResult(); @@ -119,7 +121,7 @@ public async Task GetAssignment( Platform platform = await platformsClient.GetPlatform(assignmentEntity.PlatformId); assignmentDto.PlatformPersonalization = _mapper.Map(platform); } - + _logger.LogError(assignmentDto.CourseName + assignmentDto.Name); return new OkObjectResult(assignmentDto); } diff --git a/client/package-lock.json b/client/package-lock.json index 95fcbe35..7e669a6e 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -8,6 +8,9 @@ "name": "edna-lite", "version": "1.0.0", "dependencies": { + "@azure/msal-angular": "^2.4.0", + "@azure/msal-browser": "^2.28.0", + "@azure/msal-react": "^1.4.4", "@fluentui/react": "^7.110.3", "@types/lodash": "^4.14.150", "@types/node": "^12.12.37", @@ -23,7 +26,6 @@ "mobx-react-lite": "^2.0.6", "mobx-utils": "^5.5.7", "moment": "^2.25.3", - "msal": "^1.3.0", "react": "^17.0.1", "react-aad-msal": "^2.3.5", "react-dom": "^17.0.1", @@ -80,6 +82,54 @@ "ajv": ">=8" } }, + "node_modules/@azure/msal-angular": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@azure/msal-angular/-/msal-angular-2.4.0.tgz", + "integrity": "sha512-aOYy1LMrMnssq4GNfUCFo5nOJ+gIsG6iS3nEVEBJGNDAG1rWQHQ42Sre9NbZX26kzeCLaos0J+Vkn2Kc2NI5Hg==", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@azure/msal-browser": "^2.28.0", + "rxjs": "^6.0.0 || ^7.0.0" + } + }, + "node_modules/@azure/msal-angular/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "node_modules/@azure/msal-browser": { + "version": "2.28.0", + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-2.28.0.tgz", + "integrity": "sha512-d83BBMT6id+eAdox+M37PCVWYDiqd6BrXxvjAVI2xJluRoSJCZQvB02Bcg6QCSe3ruLUK6vGwMTe8p1cDExePQ==", + "dependencies": { + "@azure/msal-common": "^7.2.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@azure/msal-common": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-7.2.0.tgz", + "integrity": "sha512-+Oz8LKTOACDHqDmv+MZy/z+DZRH8RZbMjhadmvp0scQ0R75OrzZro+HkxifWhtDG8l1ViYkvV9NHb4pEZyajAQ==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@azure/msal-react": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/@azure/msal-react/-/msal-react-1.4.4.tgz", + "integrity": "sha512-OyykNbLth9PBSc3mxdvd9WG/rvvVGtmStMkS+Ba4hrx708n49/Byx/LnYz0KA5KzJ5dCv3u8BWn1uzppy/y2vw==", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@azure/msal-browser": "^2.28.0", + "react": "^16.8.0 || ^17 || ^18" + } + }, "node_modules/@babel/code-frame": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", @@ -14960,6 +15010,7 @@ "version": "1.4.16", "resolved": "https://registry.npmjs.org/msal/-/msal-1.4.16.tgz", "integrity": "sha512-Q6jIV5RG6mD9O0bzZrR/f8v5QikrVWU0sccwOyqWE1xlBkKYVKRa/L8Gxt1X58M+J/N9V0JskhvO4KIfRHlE8g==", + "peer": true, "dependencies": { "tslib": "^1.9.3" }, @@ -20932,6 +20983,40 @@ "leven": "^3.1.0" } }, + "@azure/msal-angular": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@azure/msal-angular/-/msal-angular-2.4.0.tgz", + "integrity": "sha512-aOYy1LMrMnssq4GNfUCFo5nOJ+gIsG6iS3nEVEBJGNDAG1rWQHQ42Sre9NbZX26kzeCLaos0J+Vkn2Kc2NI5Hg==", + "requires": { + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + } + } + }, + "@azure/msal-browser": { + "version": "2.28.0", + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-2.28.0.tgz", + "integrity": "sha512-d83BBMT6id+eAdox+M37PCVWYDiqd6BrXxvjAVI2xJluRoSJCZQvB02Bcg6QCSe3ruLUK6vGwMTe8p1cDExePQ==", + "requires": { + "@azure/msal-common": "^7.2.0" + } + }, + "@azure/msal-common": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-7.2.0.tgz", + "integrity": "sha512-+Oz8LKTOACDHqDmv+MZy/z+DZRH8RZbMjhadmvp0scQ0R75OrzZro+HkxifWhtDG8l1ViYkvV9NHb4pEZyajAQ==" + }, + "@azure/msal-react": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/@azure/msal-react/-/msal-react-1.4.4.tgz", + "integrity": "sha512-OyykNbLth9PBSc3mxdvd9WG/rvvVGtmStMkS+Ba4hrx708n49/Byx/LnYz0KA5KzJ5dCv3u8BWn1uzppy/y2vw==", + "requires": {} + }, "@babel/code-frame": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", @@ -32096,6 +32181,7 @@ "version": "1.4.16", "resolved": "https://registry.npmjs.org/msal/-/msal-1.4.16.tgz", "integrity": "sha512-Q6jIV5RG6mD9O0bzZrR/f8v5QikrVWU0sccwOyqWE1xlBkKYVKRa/L8Gxt1X58M+J/N9V0JskhvO4KIfRHlE8g==", + "peer": true, "requires": { "tslib": "^1.9.3" } diff --git a/client/package.json b/client/package.json index 25dbbee5..ea66c2aa 100644 --- a/client/package.json +++ b/client/package.json @@ -3,6 +3,9 @@ "version": "1.0.0", "private": true, "dependencies": { + "@azure/msal-angular": "^2.4.0", + "@azure/msal-browser": "^2.28.0", + "@azure/msal-react": "^1.4.4", "@fluentui/react": "^7.110.3", "@types/lodash": "^4.14.150", "@types/node": "^12.12.37", @@ -18,7 +21,6 @@ "mobx-react-lite": "^2.0.6", "mobx-utils": "^5.5.7", "moment": "^2.25.3", - "msal": "^1.3.0", "react": "^17.0.1", "react-aad-msal": "^2.3.5", "react-dom": "^17.0.1", diff --git a/client/src/App.tsx b/client/src/App.tsx index 4f27571c..1d153746 100644 --- a/client/src/App.tsx +++ b/client/src/App.tsx @@ -4,6 +4,8 @@ *--------------------------------------------------------------------------------------------*/ import React from 'react'; +import { useState } from 'react'; +import axios from 'axios'; import { BrowserRouter } from 'react-router-dom'; import { RootStore } from './Stores/Root.store'; import { StoreProvider } from './Stores/Core'; @@ -11,31 +13,142 @@ import { MainLayout } from './Core/Components/MainLayout'; import { GlobalRouter } from './Router/GlobalRouter'; import { registerIcons, loadTheme } from '@uifabric/styling'; import { fabricIconsData } from './Assets/Fonts/FabricIconsData'; -import { AxiosBasicAuthInitializer } from './Core/Auth/AxiosBasicAuthInitializer'; -import AzureAD from 'react-aad-msal'; import { AppAuthConfig } from './Core/Auth/AppAuthConfig'; import { initializeIcons } from '@fluentui/react'; import { appTheme } from './Core/Themes/MainTheme'; import { PlatformPage } from './Features/Platform/PlatformPage'; +import { PublicClientApplication, InteractionType, InteractionRequiredAuthError } from '@azure/msal-browser'; +import { + MsalAuthenticationTemplate, + MsalProvider, + useMsal, + useIsAuthenticated, + useMsalAuthentication +} from '@azure/msal-react'; +import { AxiosBasicAuthInitializer } from './Core/Auth/AxiosBasicAuthInitializer'; const rootStore: RootStore = new RootStore(); +AppAuthConfig; -function App(): JSX.Element { +function App() { registerIcons(fabricIconsData); initializeIcons(); loadTheme(appTheme); + const request = { + scopes: ['openid', 'profile', 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read'] + }; + + //CreateInterceptor(); return ( - - - - } PlatformRegistrationComponent={} /> - - - + + + + + } + PlatformRegistrationComponent={} + /> + + + + ); } +// return ( +// +// +// +// +// } PlatformRegistrationComponent={} /> +// +// +// +// +// ); + +function ExampleComponent() { + const isAuthenticated = useIsAuthenticated(); + const { instance, accounts } = useMsal(); + const request = { + scopes: ['openid', 'profile', 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read'], + account: accounts[0] + }; + const { error } = useMsalAuthentication(InteractionType.Redirect, request); // Will initiate a popup login if user is unauthenticated + + if (isAuthenticated) { + return Only authenticated users can see me.; + } else if (error) { + return An error occurred during login!; + } else { + return Only unauthenticated users can see me.; + } +} + +function UseAccessToken() { + const isAuthenticated = useIsAuthenticated(); + const { instance, accounts } = useMsal(); + const request = { + scopes: ['openid', 'profile', 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read'], + account: accounts[0] + }; + const { error } = useMsalAuthentication(InteractionType.Redirect, request); + console.log('In use access token'); + + const [accessToken] = useState(null); + + if (accounts.length > 0) { + instance + .acquireTokenSilent(request) + .then(response => { + axios.defaults.headers.common = { Authorization: `bearer ${response.accessToken}` }; + //setAccessToken(response.accessToken); + //setAccessToken(response.accessToken); + }) + .catch(error => { + // acquireTokenSilent can fail for a number of reasons, fallback to interaction + if (error instanceof InteractionRequiredAuthError) { + instance.acquireTokenPopup(request).then(response => { + axios.defaults.headers.common = { Authorization: `bearer ${response.accessToken}` }; + //setAccessToken(response.accessToken); + }); + } + }); + } + + return accessToken; +} + +function CreateInterceptor() { + // Add a request interceptor + const { instance, accounts } = useMsal(); + const request = { + scopes: ['openid', 'profile', 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read'], + account: accounts[0] + }; + console.log('This has been intercepted mwahaha'); + + axios.interceptors.request.use(config => { + instance + .acquireTokenSilent(request) + .then(response => { + axios.defaults.headers.common = { Authorization: `bearer ${response.accessToken}` }; + // setAccessToken(response.accessToken); + //setAccessToken(response.accessToken); + }) + .catch(error => { + // acquireTokenSilent can fail for a number of reasons, fallback to interaction + if (error instanceof InteractionRequiredAuthError) { + instance.acquireTokenPopup(request).then(response => { + axios.defaults.headers.common = { Authorization: `bearer ${response.accessToken}` }; + //setAccessToken(response.accessToken); + }); + } + }); + }); +} + export default App; diff --git a/client/src/Core/Auth/AppAuthConfig.ts b/client/src/Core/Auth/AppAuthConfig.ts index f2f34158..89e42590 100644 --- a/client/src/Core/Auth/AppAuthConfig.ts +++ b/client/src/Core/Auth/AppAuthConfig.ts @@ -3,8 +3,10 @@ * Licensed under the MIT License. *--------------------------------------------------------------------------------------------*/ -import { MsalAuthProvider, LoginType, IMsalAuthProviderConfig } from 'react-aad-msal'; -import { Configuration, Logger, LogLevel, AuthenticationParameters } from 'msal'; +// import { MsalAuthProvider, LoginType, IMsalAuthProviderConfig } from 'react-aad-msal'; +// import { AuthenticationParameters } from 'msal'; +import { PublicClientApplication, Configuration, Logger, LogLevel } from '@azure/msal-browser'; + import { b2cPolicies } from './policies'; const authLogCallback = (level: LogLevel, message: string, _containsPii: boolean): void => { @@ -15,7 +17,7 @@ const authLogCallback = (level: LogLevel, message: string, _containsPii: boolean } }; -const configuration: Configuration = { +const config: Configuration = { auth: { //clientId: process.env.REACT_APP_EDNA_AUTH_CLIENT_ID!, //process.env.REACT_APP_EDNA_AAD_CLIENT_ID! clientId: '0cd1d1d6-a7aa-41e2-b569-1ca211147973', // TODO: don't hardcode @@ -29,21 +31,50 @@ const configuration: Configuration = { storeAuthStateInCookie: true }, system: { - logger: new Logger(authLogCallback) + loggerOptions: { + loggerCallback: (level: LogLevel, message: string, containsPii: boolean): void => { + if (containsPii) { + return; + } + switch (level) { + case LogLevel.Error: + console.error(message); + return; + case LogLevel.Info: + console.info(message); + return; + case LogLevel.Verbose: + console.debug(message); + return; + case LogLevel.Warning: + console.warn(message); + return; + } + }, + piiLoggingEnabled: false + }, + allowRedirectInIframe: true } }; -const authParams: AuthenticationParameters = { - //scopes: ['https://' + process.env.REACT_APP_EDNA_B2C_TENANT! + '.onmicrosoft.com/api/b2c.read'] // RB: 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read' - scopes: [ - // TODO: unclear what is needed for custom policies - //'https://ltimoodleb2c.onmicrosoft.com/api/user_impersonation', - 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read' - ] -}; +// Todo, may no longer be neccessary +// const authParams: AuthenticationParameters = { +// //scopes: ['https://' + process.env.REACT_APP_EDNA_B2C_TENANT! + '.onmicrosoft.com/api/b2c.read'] // RB: 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read' +// scopes: [ +// // TODO: unclear what is needed for custom policies +// //'https://ltimoodleb2c.onmicrosoft.com/api/user_impersonation', +// 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read', +// 'openid', +// 'profile' +// ] +// }; -const options: IMsalAuthProviderConfig = { - loginType: LoginType.Redirect -}; +// Todo, may no longer be neccessary +// const options: IMsalAuthProviderConfig = { +// loginType: LoginType.Redirect, + +// }; + +//export const AppAuthConfig = new MsalAuthProvider(configuration, authParams, options); -export const AppAuthConfig = new MsalAuthProvider(configuration, authParams, options); +export const AppAuthConfig = new PublicClientApplication(config); diff --git a/client/src/Core/Auth/AxiosBasicAuthInitializer.tsx b/client/src/Core/Auth/AxiosBasicAuthInitializer.tsx index bbddce8b..598e3f2d 100644 --- a/client/src/Core/Auth/AxiosBasicAuthInitializer.tsx +++ b/client/src/Core/Auth/AxiosBasicAuthInitializer.tsx @@ -5,17 +5,93 @@ import React, { PropsWithChildren, useState, useEffect } from 'react'; import axios from 'axios'; -import { AppAuthConfig } from './AppAuthConfig'; +import { useMsal } from '@azure/msal-react'; +import { InteractionRequiredAuthError } from '@azure/msal-browser'; export const AxiosBasicAuthInitializer = ({ children }: PropsWithChildren<{}>): JSX.Element => { + const { instance, accounts } = useMsal(); const [isTokenLoaded, setIsTokenLoaded] = useState(false); + const [accessToken, setAccessToken] = useState(null); + console.log('calling Axios basic initilializer'); + const request = { + scopes: ['https://ltimoodleb2c.onmicrosoft.com/api/b2c.read', 'profile', 'openid'], + account: accounts[0] + }; useEffect(() => { - AppAuthConfig.getAccessToken() - .then(tokenObj => (axios.defaults.headers.common = { Authorization: `bearer ${tokenObj.accessToken}` })) - .then(_ => setIsTokenLoaded(true)); + instance + .acquireTokenSilent(request) + .then(tokenObj => { + console.log('set axios header from silent'); + axios.defaults.headers.common = { Authorization: `bearer ${tokenObj.accessToken}` }; + setAccessToken(tokenObj.accessToken); + setIsTokenLoaded(true); + }) + .catch(error => { + console.log('axios get a popup instead '); + // acquireTokenSilent can fail for a number of reasons, fallback to interaction + if (error instanceof InteractionRequiredAuthError) { + instance.acquireTokenPopup(request).then(response => { + setAccessToken(response.accessToken); + return response.accessToken; + }); + } + }); axios.defaults.validateStatus = () => true; }, []); return <>{isTokenLoaded ? children : null}; }; + +async function useAccessToken() { + const { instance, accounts } = useMsal(); + const [accessToken, setAccessToken] = useState(null); + + if (accounts.length > 0) { + const request = { + scopes: ['b2c.Read', 'profile', 'openid'], + account: accounts[0] + }; + instance + .acquireTokenSilent(request) + .then(response => { + //setAccessToken(response.accessToken); + return response.accessToken; + }) + .catch(error => { + // acquireTokenSilent can fail for a number of reasons, fallback to interaction + if (error instanceof InteractionRequiredAuthError) { + instance.acquireTokenPopup(request).then(response => { + // setAccessToken(response.accessToken); + return response.accessToken; + }); + } + }); + } + + return null; +} +// useEffect(() => { +// instance +// .acquireTokenSilent(request) +// .then(tokenObj => { +// console.log('set axios header from silent'); +// axios.defaults.headers.common = { Authorization: `bearer ${tokenObj}` }; +// //setAccessToken(tokenObj.accessToken); +// }) +// .then(() => +// setIsTokenLoaded(true)) +// .catch(error => { +// // acquireTokenSilent can fail for a number of reasons, fallback to interaction +// if (error instanceof InteractionRequiredAuthError) { +// instance.acquireTokenPopup(request).then((response) => { +// // setAccessToken(response.accessToken); +// return response.accessToken; +// }); +// } +// }) +// .then(() => { +// setIsTokenLoaded(true); +// }); +// axios.defaults.validateStatus = () => true; +// }, []); diff --git a/client/src/Core/Auth/policies.ts b/client/src/Core/Auth/policies.ts index 1964f7ff..4339a3c7 100644 --- a/client/src/Core/Auth/policies.ts +++ b/client/src/Core/Auth/policies.ts @@ -6,12 +6,12 @@ export const b2cPolicies = { names: { - signIn: 'B2C_1A_SIGNUP_SIGNIN' // custom policy + signIn: 'B2C_1A_SIGNIN' // custom policy //signin: `B2C_1_signup_signin_LTI` // user flow }, authorities: { signIn: { - authority: `https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/B2C_1A_SIGNUP_SIGNIN` // custom policy + authority: `https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/B2C_1A_SIGNIN` // custom policy //authority: `https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/B2C_1_signup_signin_LTI` // user flow // user flow: // `https://` + diff --git a/client/src/Core/Components/UserMenu.tsx b/client/src/Core/Components/UserMenu.tsx index 365f3266..c29448a5 100644 --- a/client/src/Core/Components/UserMenu.tsx +++ b/client/src/Core/Components/UserMenu.tsx @@ -21,6 +21,7 @@ import { useConstCallback } from '@uifabric/react-hooks'; import { UserMenuProfile } from './UserMenuProfile'; import AzureAD, { IAzureADFunctionProps } from 'react-aad-msal'; import { AppAuthConfig } from '../Auth/AppAuthConfig'; +import { MsalProvider } from '@azure/msal-react'; type UserMenuStyles = SimpleComponentStyles<'logoutMenuItem' | 'logoutIcon'>; @@ -67,13 +68,13 @@ const UserMenuInner = ({ styles, children }: PropsWithChildren<{}> & IStylesOnly }); return ( - + {({ logout }: IAzureADFunctionProps) => ( {children} )} - + ); }; diff --git a/client/src/Services/Assignment.service.ts b/client/src/Services/Assignment.service.ts index a78085dd..00877142 100644 --- a/client/src/Services/Assignment.service.ts +++ b/client/src/Services/Assignment.service.ts @@ -9,10 +9,13 @@ import { safeData, WithError } from '../Core/Utils/Axios/safeData'; class AssignmentServiceClass { public async getAssignment(assignmentId: string): Promise> { + console.log('get assignment just assignment'); + console.log(assignmentId); const response = await axios.get( `${process.env.REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL}/assignments/${assignmentId}` ); - + console.log('returnd assignment data, just assignment'); + console.log(response); return safeData(response); } diff --git a/client/src/Services/MicrosoftLearn.service.ts b/client/src/Services/MicrosoftLearn.service.ts index 3d8b5685..5ac3a2fb 100644 --- a/client/src/Services/MicrosoftLearn.service.ts +++ b/client/src/Services/MicrosoftLearn.service.ts @@ -10,14 +10,21 @@ import { AssignmentLearnContentDto } from '../Dtos/Learn/AssignmentLearnContent. class MicrosoftLearnServiceClass { public async getCatalog(): Promise> { + console.log('get catalog'); const catalogApiResponse = await axios.get(`${process.env.REACT_APP_EDNA_LEARN_CONTENT}/learn-catalog`); + console.log('catalog response data'); + console.log(catalogApiResponse); return safeData(catalogApiResponse); } public async getAssignmentLearnContent(assignmentId: string): Promise> { + console.log('get this assignment via learn content'); + console.log(assignmentId); const assignmentLearnContentResponse = await axios.get( `${process.env.REACT_APP_EDNA_LEARN_CONTENT}/assignments/${assignmentId}/learn-content` ); + console.log('assignment response data via learn content'); + console.log(assignmentLearnContentResponse); return safeData(assignmentLearnContentResponse); } diff --git a/client/src/Services/Users.service.ts b/client/src/Services/Users.service.ts index 888ba79d..4ef0830e 100644 --- a/client/src/Services/Users.service.ts +++ b/client/src/Services/Users.service.ts @@ -7,7 +7,6 @@ import { UserDto } from '../Dtos/User.dto'; import axios from 'axios'; import { safeData, WithError } from '../Core/Utils/Axios/safeData'; import { AppAuthConfig } from '../Core/Auth/AppAuthConfig'; -import { AuthResponse } from 'msal'; class UsersServiceClass { public async getCurrentUserDetails(assignmentId: string): Promise> { @@ -26,7 +25,8 @@ class UsersServiceClass { } public async getCurrentUserImageBlob(): Promise { - const authResponse: AuthResponse = await AppAuthConfig.acquireTokenSilent({ scopes: ['user.read'] }); + console.log(`in get user image blob`); // TODO fix + const authResponse = await AppAuthConfig.acquireTokenSilent({ scopes: ['user.read'] }); const response = await axios.get('https://graph.microsoft.com/beta/me/photos/96x96/$value', { headers: { common: { diff --git a/client/src/Stores/Assignment.store.ts b/client/src/Stores/Assignment.store.ts index e0f41de2..3a9b9e66 100644 --- a/client/src/Stores/Assignment.store.ts +++ b/client/src/Stores/Assignment.store.ts @@ -18,9 +18,13 @@ export class AssignmentStore extends ChildStore { async initializeAssignment(assignmentId: string): Promise { const assignment = await AssignmentService.getAssignment(assignmentId); if (assignment.error) { + console.log('in assignment error'); + console.log(assignment.error); this.errorContent = ErrorPageContent.CreateFromServiceError(assignment.error); return; } + console.log('assigment is '); + console.log(assignment); const { deadline } = assignment; this.assignment = deadline ? { ...assignment, deadline: new Date(deadline) } : assignment; } diff --git a/deployment/azuredeploy.json b/deployment/azuredeploy.json index dcca3e50..616f7037 100644 --- a/deployment/azuredeploy.json +++ b/deployment/azuredeploy.json @@ -142,7 +142,7 @@ "globalValidation": { "requireAuthentication": true, "unauthenticatedClientAction": "RedirectToLoginPage", - "redirectToProvider": "AzureB2C" + "redirectToProvider": "AzureB2CCustomPolicy" }, "identityProviders": { "azureActiveDirectory": { @@ -162,18 +162,7 @@ } }, "customOpenIdConnectProviders": { - "AzureB2CUserFlow": { - "registration": { - "clientId": "0cd1d1d6-a7aa-41e2-b569-1ca211147973", - "clientCredential": { - "clientSecretSettingName": "AzureB2C_AUTHENTICATION_SECRET" - }, - "openIdConnectConfiguration": { - "wellKnownOpenIdConfiguration": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/v2.0/.well-known/openid-configuration?p=B2C_1_signup_signin_LTI" - } - } - }, - "AzureB2CCustomerPolicy": + "AzureB2CCustomPolicy": { "registration": { "clientId": "0cd1d1d6-a7aa-41e2-b569-1ca211147973", @@ -181,7 +170,7 @@ "clientSecretSettingName": "AzureB2C_AUTHENTICATION_SECRET" }, "openIdConnectConfiguration": { - "wellKnownOpenIdConfiguration": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/B2C_1_signup_signin_LTI/v2.0/.well-known/openid-configuration?p=B2C_1A_SIGNUP_SIGNIN" + "wellKnownOpenIdConfiguration": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/B2C_1_signin_LTI/v2.0/.well-known/openid-configuration?p=B2C_1A_SIGNIN" } } } From 854f996d9189b7b51c16bf13252bbce7a4487ced Mon Sep 17 00:00:00 2001 From: Sundram Goyal Date: Fri, 22 Jul 2022 16:41:09 +0100 Subject: [PATCH 100/285] Documentation Update --- .DS_Store | Bin 0 -> 10244 bytes client/.env.development | 6 +- client/.env.production | 6 +- deployment/.DS_Store | Bin 0 -> 6148 bytes deployment/B2C_Docs/B2C_Deployment.md | 8 ++ deployment/Deploy.ps1 | 4 +- deployment/azuredeploy.json | 7 +- docs/CONSOLIDATED_DEPLOY.md | 133 ++++++++++++++++++++++++++ images/.DS_Store | Bin 0 -> 6148 bytes images/admode.png | Bin 0 -> 138686 bytes images/b2cmode.png | Bin 0 -> 139389 bytes images/b2cstep2.png | Bin 0 -> 66530 bytes images/startofdeploy.png | Bin 0 -> 170541 bytes 13 files changed, 153 insertions(+), 11 deletions(-) create mode 100644 .DS_Store create mode 100644 deployment/.DS_Store create mode 100644 docs/CONSOLIDATED_DEPLOY.md create mode 100644 images/.DS_Store create mode 100644 images/admode.png create mode 100644 images/b2cmode.png create mode 100644 images/b2cstep2.png create mode 100644 images/startofdeploy.png diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..c3f01aeda3aca2e9f7d81aa30f3198cad58afa70 GIT binary patch literal 10244 zcmeHMYitx%6u#fKzzjRU6w7OQbfNMPH&7^$RspvUptR+YwzNxm)O`$eWI9uJrY(gK zON>zg{b3Yi)F45P`h)lYL=8R@qfuidl?W!rM2sXF6C-~xLOgfwY||~p#1KeBW|En+ z_uO;t%sq3y@65f+7(;nSY5`+m#+XDWm#RXSK@Q%}&ufl=r;$m5{28-YH)~@WGnsRZ zwXg6a;77oZfFA)r0)7OBLIkL0^Fs;>>0kW__!00U&=&#D4`DjFjC!(1NS8Y3;w}M5 z=91by=r^qcT%WKfqn_*$(siXV#p(f`E4(EJggfm$J3j5tHH92MCNxq(Wq-(Eoy#+Wjb-))Y7hlp3=xyr_7|-o3Iku5kXnbuBxL zHq+WKrUQ=>*r);1J8-?Zb=Id%!!oy1Kljb0`CBZ>?Av6{ee*HwPVXHCj%D8A`OG_% zM+SqV3RYFEuCA$VQPmDxtJ93QqjzeRaYwUT)G;=_($z`JT%XoD=~Xr*Eu*8&q@KKF z+(>qiu~udn_4;mMolIMXvEH(EN4Lz4F-P0w@IF3JR#&Xqw$e_8J6KGo@rBh`evftS z+}Uo_(l$w1J~w)dnm6{2{Bh$aglEp3zo=wcSuAO_wP~hfZ!qEs&1mWrwwqG)I2CD) zuBir_?z@>Q)>tWhn@*Y?ly41YyiME6)wOZkS=X+aTB>*Aq|oFkQ-cK?$Uxh*p-WFW ztsCQZQZrM!xxJ}VxAlafsUz|bktNr9`ix+KI!sM@%~`XlIb5yrns-ME3e_XLA#u4>DoZ~0VeGOtlyLBmMu=aM89MoUCu7e?oLKZIb+ zol#-5NVM}aYESZ-I+Yc%a#qc@6280H0d|NTX2;nHc9MO;&am&B^-i}k2OJsPkDEr=t5Bn+5n$4;cN2Yc}#daw`saS)H=2|R;m@f@DV z3wQ;u;x)XEw{ZgR;1u4)d-xPz;X9ni&*BLK8RV|XesWx*c3&0`K8Yf(5S@vf#+6Wbx@KR1hswnC?6X=Vajw4+tOv_D{I#E zax5$P%J>Yb2BNK*YJll*z@}x6H#fa|$EtZ_2&JJ|M?&A(p*!7bA%V*sYg#BQ6V$Sx z?)HSHh3=H3{+u8jW{2*Q35+g52u(zpCldr+f)K6?lwyg{E$Bt4mMA3>Aw0u1LYc2D zmE=A)61w|BWgN5vNrq3MVp=G)k&{nZDy5~o8HB1r)slKfYPMVBX>DB>RY@^WRcNgw zxg1P-PFE{Zx?}Zq*6~hNH#>DIz{HfI4oig@9Q9F!8$x+-W|+lF=;KxP%w`8VIn4B1`08gc%m3fv5c6a+GU4EG+{F|Y(pz_ z;)gEm!fxUR&I|`!W;leyco9cjMmUa>#0j6_8=NCH_yHI23x35#{DpsT1y=)VU{W9y zm>ifFm>(z!lm%7>Rt;c`jhUHx`WVT9D9Y5nql2S}YTv5WO3jc*(XFb1%Kxf?N_GvT z=6}^dCA$VH{c511WYs`w4psv*ult4)`&)LN3f@I_iCxBU1fik;b1)B!D2-R53N@(3 z8Z;t?W^8iPc{?TZ1K0rvos`hsl+q93VLXCI@fe=OQ+OIYt&iX+Uc$>bhBxpg-opDh zjSuk=KE@~b61_ahy)?}fyxPosgv4(ov(k4!(aSdXTYd!m2>21W!3g9C|1jVGUvd5a z|8MXvzPld*KLSHJ0?4hbuPmo0%zT{;d|1BM9;WktI{CrvdW3Xc=)z67-rbI;2H%dK v3W28-O0~&Cn(kF)|NHBI+84OV>;HcNKD6SQ literal 0 HcmV?d00001 diff --git a/client/.env.development b/client/.env.development index 1ad0bd71..f4417af6 100644 --- a/client/.env.development +++ b/client/.env.development @@ -7,6 +7,6 @@ REACT_APP_EDNA_LINKS_SERVICE_URL="http://localhost:7073/api" REACT_APP_EDNA_LEARN_CONTENT="http://localhost:7074/api" REACT_APP_EDNA_USERS_SERVICE_URL="http://localhost:7075/api" REACT_APP_EDNA_PLATFORM_SERVICE_URL="http://localhost:7072/api" -REACT_APP_EDNA_B2C_CLIENT_ID='0cd1d1d6-a7aa-41e2-b569-1ca211147973' -REACT_APP_EDNA_B2C_TENANT='ltimoodleb2c' -REACT_APP_EDNA_AUTH_CLIENT_ID='0cd1d1d6-a7aa-41e2-b569-1ca211147973' +REACT_APP_EDNA_B2C_CLIENT_ID='P' +REACT_APP_EDNA_B2C_TENANT='e' +REACT_APP_EDNA_AUTH_CLIENT_ID='P' diff --git a/client/.env.production b/client/.env.production index 2364c326..edaf6a04 100644 --- a/client/.env.production +++ b/client/.env.production @@ -8,6 +8,6 @@ REACT_APP_EDNA_TENANT_ID='21510bb9-6414-46d0-9a07-1faf98f25937' REACT_APP_EDNA_DEFAULT_SCOPE='api://9277727c-c4b7-42f2-b13b-49fb8a9aee0a/user_impersonation' REACT_APP_EDNA_MAIN_URL='https://learnclienthwlx6saco.z33.web.core.windows.net/' REACT_APP_EDNA_AAD_CLIENT_ID='9277727c-c4b7-42f2-b13b-49fb8a9aee0a' -REACT_APP_EDNA_B2C_CLIENT_ID='0cd1d1d6-a7aa-41e2-b569-1ca211147973' -REACT_APP_EDNA_B2C_TENANT='ltimoodleb2c' -REACT_APP_EDNA_AUTH_CLIENT_ID='0cd1d1d6-a7aa-41e2-b569-1ca211147973' +REACT_APP_EDNA_B2C_CLIENT_ID='P' +REACT_APP_EDNA_B2C_TENANT='e' +REACT_APP_EDNA_AUTH_CLIENT_ID='P' diff --git a/deployment/.DS_Store b/deployment/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..9c4075f6e1b97cde561fe155456f179a7e411a69 GIT binary patch literal 6148 zcmeHK%}N6?5T4j-Q;N`oqQ`*Of^97Y@v>~|3%H^OmD;sM7uQYcw)Rj8d({{6O?)0_ zk}O!-gC`L?1Iag;pJeBQ%?|(we>!LYQ~^L@BNU{p5i+lJZMk4VVdm(9h6hN)Svp!X z(O)#tw@dJ$2_5Lcx9<;Q9is0e9K}&OsnaMr8tb#yZ6N6Bz(5~9HnLvF95WT0oho+g9Tn#9?_TQ&~uns zL=TFvsfadJxF?3N>1bCj&U2VqwCNzs$~cc(Ie)wevpU+92?ya>@ literal 0 HcmV?d00001 diff --git a/deployment/B2C_Docs/B2C_Deployment.md b/deployment/B2C_Docs/B2C_Deployment.md index 7248d74d..e79011fa 100644 --- a/deployment/B2C_Docs/B2C_Deployment.md +++ b/deployment/B2C_Docs/B2C_Deployment.md @@ -14,6 +14,14 @@ * You should have ready a **list of the tenant id's for the tenants you wish to give access** ## Starting The Script + +There are 2 ways to deploy B2C: + +### 1. Running the B2C deploy script from LTI deploy (Recommended) + +Follow the steps in [LTI deployment guide](https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/blob/main/docs/DEPLOYMENT_GUIDE.md) and it will automatically direct you to the following steps. + +### 2. Running the B2C deploy script manually (if you want to run only B2C deploy) * Load Learn-LTI/Deployment into Windows File Explorer * **Hold shift** and right click in the file explorer to launch the Expanded Context Menu diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 1457e82a..e0780610 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -66,7 +66,7 @@ process { if($b2cOrAD -eq "b2c"){ Write-Title "B2C Step #1: Running the B2C Setup Script" # TODO - verify these values are correct - $results = powershell.exe -file ".\B2CDeployment.ps1" + $results = powershell.exe -file ".\B2CDeployment.ps1" #Modify depending on the OS $REACT_APP_EDNA_B2C_CLIENT_ID = $results[0] #webclient ID $REACT_APP_EDNA_AUTH_CLIENT_ID = $results[0] #webclient ID $b2c_secret = $results[1] #webclient secret @@ -106,7 +106,7 @@ process { #region "B2C Step 2: Update required parameter in .env.production/ .env.development for front-end build and B2C secret in azuredeploy.json" if($b2cOrAD -eq "b2c"){ - Write-Title "B2C Step #2: updating the b2c parameters and secrets" + Write-Title "B2C Step #2: Updating the B2C parameters and secrets" $b2c_secret = '"'+$b2c_secret+'"' ((Get-Content -path ".\azuredeploy.json" -Raw) -replace '""', $b2c_secret) | Set-Content -path (".\azuredeploy.json") diff --git a/deployment/azuredeploy.json b/deployment/azuredeploy.json index 0707ecc1..ff3b9f03 100644 --- a/deployment/azuredeploy.json +++ b/deployment/azuredeploy.json @@ -20,7 +20,7 @@ } }, "variables": { - "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, '20220720025848'),0,9)]", + "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, '20220722040133'),0,9)]", "functionList": [ "connect", "assignments", @@ -29,7 +29,7 @@ "platforms", "users" ], - "AzureB2C_AUTHENTICATION_SECRET": "", + "AzureB2C_AUTHENTICATION_SECRET": "l", "enabledForDeployment": false, "enabledForDiskEncryption": false, "enabledForTemplateDeployment": false, @@ -548,4 +548,5 @@ } } } - + + diff --git a/docs/CONSOLIDATED_DEPLOY.md b/docs/CONSOLIDATED_DEPLOY.md new file mode 100644 index 00000000..b567926f --- /dev/null +++ b/docs/CONSOLIDATED_DEPLOY.md @@ -0,0 +1,133 @@ +# Microsoft Learn LTI Tool Deployment Instructions + +## Table of Contents +1. Clone the repo: [link](#clone-the-repo) +2. Deploy to Azure Subscription using the script: [link](#deploy-to-azure-subscription-using-the-script) +3. Configure the tool: [link](#configure-the-tool) + +## Prerequisites +To begin, you will need: +- [Azure CLI](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest?WT.mc_id=learnlti-github-cxa) + * We currently recommend using Microsoft CLI version 2.27. The most recent version is of Azure CLI has deprecated commands in use which will be addressed later. +- [DotNet Core SDK .NET Core 3.1](https://dotnet.microsoft.com/download/dotnet/3.1?WT.mc_id=learnlti-github-cxa) +- [Node.js](https://nodejs.org/en/download/) +- [Powershell](https://docs.microsoft.com/powershell/scripting/install/installing-powershell?view=powershell-7?WT.mc_id=learnlti-github-cxa) +- [Git](https://git-scm.com/downloads) +- An Azure subscription + +**Note:** Please ensure you **reboot your machine** after the installation of the Prerequisities + +Follow these steps to deploy the Microsoft Learn LTI tool: + +# Clone the repo +1. Go to the [repo](http://github.com/microsoft/learn-lti) Click code button on the [repo](http://github.com/microsoft/learn-lti) +![Clone Repo](https://github.com/microsoft/Learn-LTI/blob/main/images/clone.png) +3. Simply click the code button and select Open with GitHub Desktop or Download Zip to clone contents of the repo. + +If you are using Git +1. Open a command prompt +2. Make a new directory **Learn-Lti** +3. Move to **Learn-Lti** directory +4. Use Git to clone the repo (You need [Git installed](https://git-scm.com/downloads) +5. Enter in the command in the Git console + * `git clone https://github.com/microsoft/Learn-LTI.git` + * This will clone the repo into the current directory **Learn-Lti** + +You have now cloned the repo + +## After Cloning +* In the cloned repo, inside the deployment directory **Learn-Lti**, execute the file **run.bat**. +* run.bat bypasses signing requirements and runs Deploy.ps1 automatically. +* You should now see the Microsoft Learn LTI Tool script popup. +![startofdeploy.png](/images/startofdeploy.png) + +# Choosing the AD or B2C mode + +The script will ask you to choose 'Active Directory',i.e. AD mode or 'Business to Consumer',i.e. B2C mode for authentication between your LTI and LMS. + +Type in 'ad' for AD mode of authentication which will direct you towards 'Deploy to Azure Subscription using the script'. +![admode.png](/images/admode.png) + +Type in 'b2c' for B2C mode of authentication. +![b2cmode.png](/images/b2cmode.png) +Go to the [B2C setup](https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/blob/consolidated_deploy_branch/deployment/B2C_Docs/B2C_Deployment.md) for B2C deployment. + + +# Deploy to Azure Subscription using the script + +**NOTE:** if B2C mode is chosen, the B2C setup must be completed before reaching this step. + +## Login to Azure + +The script will ask you to login to Azure by navigating to the Azure Login Page on your browser. + +## (FOR B2C Mode Only) Updating required parameter in .env.production/ .env.development for front-end build and B2C secret in azuredeploy.json +**NOTE:** if B2C mode is chosen, then before choosing the subscription, the B2C parameters and secrets should automatically be updated as shown below. +![b2cstep2.png](/images/b2cstep2.png) + +## Choose Subscription + +Type in the name of the Azure subscription that you hold (this is a prerequisite necessary for deployment). + +If you're unsure about whether your account has a subscription, check [here.](https://ms.portal.azure.com/#blade/Microsoft_Azure_Billing/SubscriptionsBlade??WT.mc_id=learnlti-github-cxa) + +## Choose Location + +The following regions are supported: + +* eastasia +* southeastasia +* centralus +* eastus +* eastus2 +* westus +* southcentralus +* northeurope +* westeurope +* japaneast +* brazilsouth +* australiaeast +* canadacentral +* uksouth +* westcentralus +* westus2 +* koreacentral + +**Locate your region from the list above. Then type it into the script and hit "Enter".** + +![Deployment.1](/images/Deployment.1.jpg) + +Your region determines three things: + +* Compliance and Data Residency +* Service Availability +* Pricing + +For information regarding your region, check [here.](https://azure.microsoft.com/global-infrastructure/geographies/?WT.mc_id=learnlti-github-cxa) + +## Azure Autoconfigure + +The **Deploy.ps1** script will automatically provision and configure the required resources for you. + +## ⚠️ Tool Registration URL + +The Script will display the Tool Registration URL after completion. Please **copy the URL and keep it handy** since it will be required while configuring the tool in the LMS. + +![Deployment.4](/images/Deployment.4.PNG) + +Open the tool registration page from your browser and take note of the following parameters. + +* Login URL +* Launch URL +* Domain URL +* Public Key +* Public JWK +* Public JWK Set URL + +![Deployment.5](/images/Deployment.5.png) + +**Congratulations!** Your instance of the tool should now be deployed on Azure! + +If your **deployment failed**, click [here](./TROUBLESHOOTING.md) for help. + +Once the tool has been successfully deployed, the next step is to [configure the tool](./CONFIGURATION_GUIDE.md) on your institution's LMS. diff --git a/images/.DS_Store b/images/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 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 literal 0 HcmV?d00001 diff --git a/images/b2cmode.png b/images/b2cmode.png new file mode 100644 index 0000000000000000000000000000000000000000..0cc4b759d17267c5a72f204c6f908f8ef9144017 GIT binary patch literal 139389 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

    @eV7 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 Date: Fri, 22 Jul 2022 17:00:20 +0100 Subject: [PATCH 101/285] Documentation Updated --- deployment/B2C_Docs/B2C_Deployment.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deployment/B2C_Docs/B2C_Deployment.md b/deployment/B2C_Docs/B2C_Deployment.md index e79011fa..c9080629 100644 --- a/deployment/B2C_Docs/B2C_Deployment.md +++ b/deployment/B2C_Docs/B2C_Deployment.md @@ -19,7 +19,7 @@ There are 2 ways to deploy B2C: ### 1. Running the B2C deploy script from LTI deploy (Recommended) -Follow the steps in [LTI deployment guide](https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/blob/main/docs/DEPLOYMENT_GUIDE.md) and it will automatically direct you to the following steps. +Follow the steps in [LTI deployment guide](https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/blob/consolidated_deploy_branch/docs/CONSOLIDATED_DEPLOY.md) and it will automatically direct you to the following steps. ### 2. Running the B2C deploy script manually (if you want to run only B2C deploy) From f113de49bedd32aec727915644e1f3aa15c4873d Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Fri, 22 Jul 2022 17:09:00 +0100 Subject: [PATCH 102/285] Fixed bug when calling b2cDeployment.ps1 via powershell.exe from Deploy.ps1 --- deployment/.gitignore | 5 ++++- deployment/B2CCleanup.ps1 | 5 ++--- deployment/Deploy.ps1 | 2 +- deployment/azuredeploy.json | 2 +- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/deployment/.gitignore b/deployment/.gitignore index 1c62faa5..0de51a3a 100644 --- a/deployment/.gitignore +++ b/deployment/.gitignore @@ -2,4 +2,7 @@ CustomPolicy/* manifest.json AppInfo.csv -b2cSavedParams.csv \ No newline at end of file +b2cSavedParams.csv +.env.production +.env.development +azuredeploy.json \ No newline at end of file diff --git a/deployment/B2CCleanup.ps1 b/deployment/B2CCleanup.ps1 index 182c491b..941b8e29 100644 --- a/deployment/B2CCleanup.ps1 +++ b/deployment/B2CCleanup.ps1 @@ -54,9 +54,6 @@ $response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/p Write-Host "Deleting B2C_1A_PasswordReset" $response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies/B2C_1A_PasswordReset' -Method 'DELETE' -Headers $headers - -Write-Host "Deleting B2C_1A_FacebookSecret" -$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies/B2C_1A_FacebookSecret' -Method 'DELETE' -Headers $headers #endregion #region "STEP 3: Cleaning up the keysets from the b2c tenant" @@ -70,6 +67,8 @@ Write-Host "Deleting B2C_1A_TokenEncryptionKeyContainer keyset" $response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets/B2C_1A_TokenEncryptionKeyContainer' -Method 'DELETE' -Headers $headers Write-Host "Deleting B2C_1A_AADAppSecret keyset" $response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets/B2C_1A_AADAppSecret' -Method 'DELETE' -Headers $headers +Write-Host "Deleting B2C_1A_FacebookSecret" +$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies/B2C_1A_FacebookSecret' -Method 'DELETE' -Headers $headers #endregion #region "STEP 4: Deleting the generated applications" diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 1457e82a..4ed73d89 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -66,7 +66,7 @@ process { if($b2cOrAD -eq "b2c"){ Write-Title "B2C Step #1: Running the B2C Setup Script" # TODO - verify these values are correct - $results = powershell.exe -file ".\B2CDeployment.ps1" + $results = & ".\B2CDeployment.ps1" # TODO - verify that this can run this multiplatform as it only works on windows; may put mac and windows commands in a try catch $REACT_APP_EDNA_B2C_CLIENT_ID = $results[0] #webclient ID $REACT_APP_EDNA_AUTH_CLIENT_ID = $results[0] #webclient ID $b2c_secret = $results[1] #webclient secret diff --git a/deployment/azuredeploy.json b/deployment/azuredeploy.json index 0707ecc1..2344d975 100644 --- a/deployment/azuredeploy.json +++ b/deployment/azuredeploy.json @@ -20,7 +20,7 @@ } }, "variables": { - "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, '20220720025848'),0,9)]", + "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, '20220722050731'),0,9)]", "functionList": [ "connect", "assignments", From 5c15b0cf509669c270479af96cdb77e11693bef5 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Fri, 22 Jul 2022 17:36:20 +0100 Subject: [PATCH 103/285] adding back users so assignment works --- client/src/Stores/Users.store.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/client/src/Stores/Users.store.ts b/client/src/Stores/Users.store.ts index 715e52c3..f73bf760 100644 --- a/client/src/Stores/Users.store.ts +++ b/client/src/Stores/Users.store.ts @@ -15,6 +15,7 @@ import { UserDto } from '../Dtos/User.dto'; import _ from 'lodash'; import { AppAuthConfig } from '../Core/Auth/AppAuthConfig'; import { Account } from 'msal'; +import { AccountInfo } from '@azure/msal-browser'; import { WithError } from '../Core/Utils/Axios/safeData'; import { ErrorPageContent } from '../Core/Components/ErrorPageContent'; @@ -32,11 +33,12 @@ export class UsersStore extends ChildStore { @observable errorContent: ErrorPageContent | undefined = undefined; initialize(): void { + console.log('initialize user store'); const detailsFromPlatform = toObservable( () => this.root.platformStore.platform || this.root.platformStore.errorContent !== undefined ).pipe( filter(platformObservable => !!platformObservable), - map(() => AppAuthConfig.getAccountInfo()?.account), + map(() => AppAuthConfig.getAllAccounts()?.[0]), filter(account => !!account), filter(account => !!account?.name), map(account => account!), @@ -45,6 +47,7 @@ export class UsersStore extends ChildStore { const getUser = async (assignmentId: string): Promise> => { const user = await UsersService.getCurrentUserDetails(assignmentId); + console.log('user is ' + user.email); if (user.error) { this.errorContent = ErrorPageContent.CreateFromServiceError(user.error); } else if (!user) { @@ -93,17 +96,18 @@ export class UsersStore extends ChildStore { userDto.givenName || userDto.familyName ? `${userDto.givenName ? userDto.givenName + ' ' : ''}${userDto.familyName || ''}` : ''; + console.log(displayName); return { roleDisplayName: this.roleIdToRoleDisplayName.get(userDto.role)!, displayName, ...userDto }; } - private accountToUserModel(account: Account): User { + private accountToUserModel(account: AccountInfo): User { return { roleDisplayName: '', displayName: account?.name || '', - email: account?.userName || '' + email: account?.username || '' }; } } From 4063c216e6c80c03e31d670e3f6ec8f46d9963b4 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Mon, 25 Jul 2022 11:47:10 +0100 Subject: [PATCH 104/285] Modified B2CDeploymnent.ps1 to allow users to input ID's all at once using a file --- client/.env.development | 6 +-- client/.env.production | 19 ++++----- client/src/Core/Auth/AppAuthConfig.ts | 8 ++-- deployment/B2CDeployment.ps1 | 61 ++++++++++++++++++--------- deployment/B2C_Docs/B2C_Deployment.md | 11 ++--- deployment/Cleanup.ps1 | 2 + deployment/Deploy.ps1 | 4 +- deployment/azuredeploy.json | 4 +- 8 files changed, 68 insertions(+), 47 deletions(-) diff --git a/client/.env.development b/client/.env.development index f4417af6..17f6988c 100644 --- a/client/.env.development +++ b/client/.env.development @@ -7,6 +7,6 @@ REACT_APP_EDNA_LINKS_SERVICE_URL="http://localhost:7073/api" REACT_APP_EDNA_LEARN_CONTENT="http://localhost:7074/api" REACT_APP_EDNA_USERS_SERVICE_URL="http://localhost:7075/api" REACT_APP_EDNA_PLATFORM_SERVICE_URL="http://localhost:7072/api" -REACT_APP_EDNA_B2C_CLIENT_ID='P' -REACT_APP_EDNA_B2C_TENANT='e' -REACT_APP_EDNA_AUTH_CLIENT_ID='P' +REACT_APP_EDNA_B2C_CLIENT_ID='' +REACT_APP_EDNA_B2C_TENANT='' +REACT_APP_EDNA_AUTH_CLIENT_ID='' diff --git a/client/.env.production b/client/.env.production index edaf6a04..dc6d91b3 100644 --- a/client/.env.production +++ b/client/.env.production @@ -1,13 +1,10 @@ GENERATE_SOURCEMAP='false' -REACT_APP_EDNA_PLATFORM_SERVICE_URL='https://platforms-hwlx6saco.azurewebsites.net/api' -REACT_APP_EDNA_USERS_SERVICE_URL='https://users-hwlx6saco.azurewebsites.net/api' -REACT_APP_EDNA_LEARN_CONTENT='https://learncontent-hwlx6saco.azurewebsites.net/api' -REACT_APP_EDNA_LINKS_SERVICE_URL='https://links-hwlx6saco.azurewebsites.net/api' -REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL='https://assignments-hwlx6saco.azurewebsites.net/api' +REACT_APP_EDNA_PLATFORM_SERVICE_URL='https://platforms-ofdd7tsmz.azurewebsites.net/api' +REACT_APP_EDNA_USERS_SERVICE_URL='https://users-ofdd7tsmz.azurewebsites.net/api' +REACT_APP_EDNA_LEARN_CONTENT='https://learncontent-ofdd7tsmz.azurewebsites.net/api' +REACT_APP_EDNA_LINKS_SERVICE_URL='https://links-ofdd7tsmz.azurewebsites.net/api' +REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL='https://assignments-ofdd7tsmz.azurewebsites.net/api' REACT_APP_EDNA_TENANT_ID='21510bb9-6414-46d0-9a07-1faf98f25937' -REACT_APP_EDNA_DEFAULT_SCOPE='api://9277727c-c4b7-42f2-b13b-49fb8a9aee0a/user_impersonation' -REACT_APP_EDNA_MAIN_URL='https://learnclienthwlx6saco.z33.web.core.windows.net/' -REACT_APP_EDNA_AAD_CLIENT_ID='9277727c-c4b7-42f2-b13b-49fb8a9aee0a' -REACT_APP_EDNA_B2C_CLIENT_ID='P' -REACT_APP_EDNA_B2C_TENANT='e' -REACT_APP_EDNA_AUTH_CLIENT_ID='P' +REACT_APP_EDNA_DEFAULT_SCOPE='api://8536df83-6587-4a24-87cc-62a917ad17f8/user_impersonation' +REACT_APP_EDNA_MAIN_URL='https://learnclientofdd7tsmz.z33.web.core.windows.net/' +REACT_APP_EDNA_AAD_CLIENT_ID='8536df83-6587-4a24-87cc-62a917ad17f8' diff --git a/client/src/Core/Auth/AppAuthConfig.ts b/client/src/Core/Auth/AppAuthConfig.ts index 0623dd7d..7939cf09 100644 --- a/client/src/Core/Auth/AppAuthConfig.ts +++ b/client/src/Core/Auth/AppAuthConfig.ts @@ -34,10 +34,10 @@ const configuration: Configuration = { const authParams: AuthenticationParameters = { scopes: ['https://' + process.env.REACT_APP_EDNA_B2C_TENANT! + '.onmicrosoft.com/api/b2c.read'] // RB: 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read' - scopes: [ - //'https://ltimoodleb2c.onmicrosoft.com/api/user_impersonation', - 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read' - ] // RB: 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read' + // scopes: [ + // //'https://ltimoodleb2c.onmicrosoft.com/api/user_impersonation', + // 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read' + // ] // RB: 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read' }; const options: IMsalAuthProviderConfig = { diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 9c9db8d3..a7bd241f 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -207,29 +207,50 @@ az ad app permission admin-consent --id $PermissionClientID --only-show-errors # https://docs.microsoft.com/en-us/azure/active-directory-b2c/identity-provider-azure-ad-multi-tenant?pivots=b2c-custom-policy#restrict-access Write-Title "STEP 7: Creating a whitelist for the tenants we wish to give access to" Write-Host "Important - if no tenants are whitelisted; nobody will be able to access the AD" -$continue = "y" -$whitelist = @() -while($continue -eq "y"){ - $wlTenantID = Read-Host "Please enter the tenant ID field of the tenant you wish to add to the whitelist: " - try{ - #region "HTTP request to get the issuer claim we want to add to the whitelist" - $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" - $headers.Add("Cookie", "esctx=AQABAAAAAAD--DLA3VO7QrddgJg7Wevrz5AJFK2BuCxYc25okcgEMIhli-M9GRnC77gX9U2agXqRChe5Tk3qNfEPzYWBnDAUp-o9RWFY5KNcFx-vXSzS0awJmoC7qDfdimSHwN_cVTAk3AVnFnGSxQfcY9xfjJxnZI_bqBXjO6MUJ0rjdw14dd7jnRNLmUGqljuVubDJWG8gAA; fpc=AkuS-X1BCTpNr-MiUS-IqaM; stsservicecookie=estsfd; x-ms-gateway-slice=estsfd") +#TODO - make it a file +$fileOrInputs="" +while($fileOrInputs -ne "1" -and $fileOrInputs -ne "2") +{ + $fileOrInputs = Read-Host "Would you like to either:`n1. import a file with *all* the tenant ID's to be whitelisted`n2. input them 1 by 1 into the console? (1/2)" +} - $response = Invoke-RestMethod "https://login.microsoftonline.com/$wlTenantID/v2.0/.well-known/openid-configuration" -Method 'GET' -Headers $headers - $issuer = $response.issuer - #endregion - $whitelist += $issuer #adding the issuer for this tenant to the whitelist - } - catch{ - Write-Host "" - Write-Error ("HTTP request to get the issuer claim failed, please ensure the tenant ID is correct`n`n"+$Error[0]) - Write-Host "" - } +$whitelist = @() +# Input via a file +if ($fileOrInputs -eq "1") +{ + $filePath = Read-Host "Please enter the path to the file containing the tenant ID's" + $whitelist = Get-Content $filePath +} + +# Input one by one to the console +else +{ + $wlTenantID = "" + while ($wlTenantID -ne "no") + { + $wlTenantID = Read-Host "Please enter the tenant ID you wish to add to the whitelist (or 'no' to stop): " + + if($tenantID -eq "no"){break} + + try{ + #region "HTTP request to get the issuer claim we want to add to the whitelist" + $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" + $headers.Add("Cookie", "esctx=AQABAAAAAAD--DLA3VO7QrddgJg7Wevrz5AJFK2BuCxYc25okcgEMIhli-M9GRnC77gX9U2agXqRChe5Tk3qNfEPzYWBnDAUp-o9RWFY5KNcFx-vXSzS0awJmoC7qDfdimSHwN_cVTAk3AVnFnGSxQfcY9xfjJxnZI_bqBXjO6MUJ0rjdw14dd7jnRNLmUGqljuVubDJWG8gAA; fpc=AkuS-X1BCTpNr-MiUS-IqaM; stsservicecookie=estsfd; x-ms-gateway-slice=estsfd") + + $response = Invoke-RestMethod "https://login.microsoftonline.com/$wlTenantID/v2.0/.well-known/openid-configuration" -Method 'GET' -Headers $headers + $issuer = $response.issuer + #endregion - $continue = Read-Host "Would you like to add another tenant? (y/n)" + $whitelist += $issuer #adding the issuer for this tenant to the whitelist + } + catch{ + Write-Host "" + Write-Error ("HTTP request to get the issuer claim failed, please ensure the tenant ID is correct`n`n"+$Error[0]) + Write-Host "" + } + } } $whitelistString = $whitelist -join "," @@ -361,7 +382,7 @@ else{ $response | ConvertTo-Json $signing_container_id = $response.id - Write-Host "`nSuccessfully created the key signing container: "+$signing_container_id+"`n" + Write-Host "`nSuccessfully created the key signing container: $signing_container_id`n" #endregion #region "Generating the signing key" diff --git a/deployment/B2C_Docs/B2C_Deployment.md b/deployment/B2C_Docs/B2C_Deployment.md index c9080629..b04fd833 100644 --- a/deployment/B2C_Docs/B2C_Deployment.md +++ b/deployment/B2C_Docs/B2C_Deployment.md @@ -103,11 +103,12 @@ Follow the steps in [LTI deployment guide](https://github.com/UCL-MSc-Learn-LTI/ ## Step 7: Creating a whitelist for the tenants we wish to give access to - -* Now input 1 by 1 the tenant id's for each of the tenants you wish to give access to. After inputting each one's ID, select 'y' to continue until you have input them all then select 'n' - * ![inputting ID's](Images/Deployment/07_successfulWhitelist.png) -* if at any point you see an error as shown below, contact the system admin for that tenant to verify they sent you the correct ID - * ![failure to get issuer claim](Images/Deployment/07_failWhitelist.png) +* You have 2 choices for how to create the whitelist of tenant id's you wish to give access to: + * Input '1' to import via a file where the id of each tenant is separated with a newline or a comma. You will then need to input the path to that file, e.g. "C:/documents/myTenantIDs.txt" + * Input '2' to input 1 by 1; in this case you copy/paste the tenant ID's 1 by 1 into the console until you have no more then input "no" to terminate the script. + * ![inputting ID's](Images/Deployment/07_successfulWhitelist.png) + * if at any point you see an error as shown below, you have input an ID that doesn't exist. Verify you typed it correctly and if so, verify with the tenant owner that they sent you the correct value. + * ![failure to get issuer claim](Images/Deployment/07_failWhitelist.png) ## Step 8: (Optional) linking facebook app ### Don't link Facebook App diff --git a/deployment/Cleanup.ps1 b/deployment/Cleanup.ps1 index cff4c1c3..ad482fe9 100644 --- a/deployment/Cleanup.ps1 +++ b/deployment/Cleanup.ps1 @@ -154,4 +154,6 @@ process { Write-Log -Message "Clean-up Complete" Write-Warning 'Please use a different ResourceGroup name on re-deployment!' + Write-Title "Step #5 - Running B2C Cleanup Script" + & ".\B2CCleanup.ps1" } \ No newline at end of file diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index b3c5ee19..9e0cd4ca 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "DM_ad2_MSLearnLTI", - [string]$AppName = "DM_ad2_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "DM_ad3_MSLearnLTI", + [string]$AppName = "DM_ad3_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null diff --git a/deployment/azuredeploy.json b/deployment/azuredeploy.json index 62d5c03e..433be447 100644 --- a/deployment/azuredeploy.json +++ b/deployment/azuredeploy.json @@ -20,7 +20,7 @@ } }, "variables": { - "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, '20220722050731'),0,9)]", + "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, '20220725104007'),0,9)]", "functionList": [ "connect", "assignments", @@ -29,7 +29,7 @@ "platforms", "users" ], - "AzureB2C_AUTHENTICATION_SECRET": "l", + "AzureB2C_AUTHENTICATION_SECRET": "", "enabledForDeployment": false, "enabledForDiskEncryption": false, "enabledForTemplateDeployment": false, From 3311232b1829da1deb9da631334771d2d04f415c Mon Sep 17 00:00:00 2001 From: Lilin Huang Date: Mon, 25 Jul 2022 13:59:57 +0100 Subject: [PATCH 105/285] b2c parameters updating for ad mode --- client/.env.development | 6 ++--- client/.env.production | 3 +++ deployment/Deploy.ps1 | 57 +++++++++++++++++++++++++++++++++++++++-- 3 files changed, 61 insertions(+), 5 deletions(-) diff --git a/client/.env.development b/client/.env.development index 17f6988c..360ff8cd 100644 --- a/client/.env.development +++ b/client/.env.development @@ -7,6 +7,6 @@ REACT_APP_EDNA_LINKS_SERVICE_URL="http://localhost:7073/api" REACT_APP_EDNA_LEARN_CONTENT="http://localhost:7074/api" REACT_APP_EDNA_USERS_SERVICE_URL="http://localhost:7075/api" REACT_APP_EDNA_PLATFORM_SERVICE_URL="http://localhost:7072/api" -REACT_APP_EDNA_B2C_CLIENT_ID='' -REACT_APP_EDNA_B2C_TENANT='' -REACT_APP_EDNA_AUTH_CLIENT_ID='' +REACT_APP_EDNA_B2C_CLIENT_ID=NULL +REACT_APP_EDNA_B2C_TENANT=NULL +REACT_APP_EDNA_AUTH_CLIENT_ID=NULL diff --git a/client/.env.production b/client/.env.production index dc6d91b3..b69b4f10 100644 --- a/client/.env.production +++ b/client/.env.production @@ -8,3 +8,6 @@ REACT_APP_EDNA_TENANT_ID='21510bb9-6414-46d0-9a07-1faf98f25937' REACT_APP_EDNA_DEFAULT_SCOPE='api://8536df83-6587-4a24-87cc-62a917ad17f8/user_impersonation' REACT_APP_EDNA_MAIN_URL='https://learnclientofdd7tsmz.z33.web.core.windows.net/' REACT_APP_EDNA_AAD_CLIENT_ID='8536df83-6587-4a24-87cc-62a917ad17f8' +REACT_APP_EDNA_B2C_CLIENT_ID=NULL +REACT_APP_EDNA_B2C_TENANT=NULL +REACT_APP_EDNA_AUTH_CLIENT_ID=NULL diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 9e0cd4ca..562a2279 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "DM_ad3_MSLearnLTI", - [string]$AppName = "DM_ad3_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "LH_MSLearnLTI", + [string]$AppName = "LH_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null @@ -160,6 +160,59 @@ process { $filecontent = Get-Content $dir $filecontent -replace $old_REACT_APP_EDNA_AUTH_CLIENT_ID,$REACT_APP_EDNA_AUTH_CLIENT_ID | Set-Content $dir } + # else for AD mode + else { + [string]$dir = Get-Location + $dir += "/../client/.env.production" + #$dir += ".env.production" + + $old_REACT_APP_EDNA_B2C_CLIENT_ID='' + $old_REACT_APP_EDNA_B2C_TENANT='' + $old_REACT_APP_EDNA_AUTH_CLIENT_ID='' + [System.IO.File]::ReadLines($dir) | ForEach-Object { + if( $_ -Match "REACT_APP_EDNA_B2C_CLIENT_ID" ){ + $configuration_line = $_ -split "=" + $old_REACT_APP_EDNA_B2C_CLIENT_ID = $_.Trim() + $REACT_APP_EDNA_B2C_CLIENT_ID = ($configuration_line[0]+"="+"NULL").Trim() + } + elseif ( $_ -Match "REACT_APP_EDNA_B2C_TENANT"){ + $configuration_line = $_ -split "=" + $old_REACT_APP_EDNA_B2C_TENANT = $_.Trim() + $REACT_APP_EDNA_B2C_TENANT = ($configuration_line[0]+"="+"NULL").Trim() + } + elseif ( $_ -Match "REACT_APP_EDNA_AUTH_CLIENT_ID"){ + $configuration_line = $_ -split "=" + $old_REACT_APP_EDNA_AUTH_CLIENT_ID = $_.Trim() + $REACT_APP_EDNA_AUTH_CLIENT_ID = ($configuration_line[0]+"="+"NULL").Trim() + } + else{ + } + } + Write-Host "Old value:",$old_REACT_APP_EDNA_B2C_CLIENT_ID + $filecontent = Get-Content $dir + $filecontent -replace $old_REACT_APP_EDNA_B2C_CLIENT_ID,$REACT_APP_EDNA_B2C_CLIENT_ID | Set-Content $dir + + $filecontent = Get-Content $dir + $filecontent -replace $old_REACT_APP_EDNA_B2C_TENANT,$REACT_APP_EDNA_B2C_TENANT | Set-Content $dir + + $filecontent = Get-Content $dir + $filecontent -replace $old_REACT_APP_EDNA_AUTH_CLIENT_ID,$REACT_APP_EDNA_AUTH_CLIENT_ID | Set-Content $dir + + [string]$dir = Get-Location + $dir += "/../client/.env.development" + + Write-Host "New value:",$old_REACT_APP_EDNA_B2C_CLIENT_ID + + $filecontent = Get-Content $dir + $filecontent -replace $old_REACT_APP_EDNA_B2C_CLIENT_ID,$REACT_APP_EDNA_B2C_CLIENT_ID | Set-Content $dir + + $filecontent = Get-Content $dir + $filecontent -replace $old_REACT_APP_EDNA_B2C_TENANT,$REACT_APP_EDNA_B2C_TENANT | Set-Content $dir + + $filecontent = Get-Content $dir + $filecontent -replace $old_REACT_APP_EDNA_AUTH_CLIENT_ID,$REACT_APP_EDNA_AUTH_CLIENT_ID | Set-Content $dir + + } #endregion From 688a4c947a35df08abab070b92d6611f7beb6fe6 Mon Sep 17 00:00:00 2001 From: DuyNguyen19993010 Date: Mon, 25 Jul 2022 15:10:07 +0100 Subject: [PATCH 106/285] Documentations --- client/src/Core/Auth/AxiosBasicAuthInitializer.tsx | 3 +++ client/src/Router/GlobalRouter.tsx | 5 +++++ client/src/Stores/Core/StoreProvider.tsx | 6 ++++++ client/src/Stores/Root.store.ts | 2 ++ 4 files changed, 16 insertions(+) diff --git a/client/src/Core/Auth/AxiosBasicAuthInitializer.tsx b/client/src/Core/Auth/AxiosBasicAuthInitializer.tsx index bbddce8b..eba09059 100644 --- a/client/src/Core/Auth/AxiosBasicAuthInitializer.tsx +++ b/client/src/Core/Auth/AxiosBasicAuthInitializer.tsx @@ -10,6 +10,7 @@ import { AppAuthConfig } from './AppAuthConfig'; export const AxiosBasicAuthInitializer = ({ children }: PropsWithChildren<{}>): JSX.Element => { const [isTokenLoaded, setIsTokenLoaded] = useState(false); + //Called everytime time the LTI app is accessed to authenticate the user before allowing access. useEffect(() => { AppAuthConfig.getAccessToken() .then(tokenObj => (axios.defaults.headers.common = { Authorization: `bearer ${tokenObj.accessToken}` })) @@ -17,5 +18,7 @@ export const AxiosBasicAuthInitializer = ({ children }: PropsWithChildren<{}>): axios.defaults.validateStatus = () => true; }, []); + //Check if user has successfully been authenticated and load children(Children are basically anything that + //is between the open and closing tag of this component), otherwise return null. return <>{isTokenLoaded ? children : null}; }; diff --git a/client/src/Router/GlobalRouter.tsx b/client/src/Router/GlobalRouter.tsx index 244a908d..82c991ad 100644 --- a/client/src/Router/GlobalRouter.tsx +++ b/client/src/Router/GlobalRouter.tsx @@ -7,16 +7,21 @@ import React from 'react'; import { Route, Switch } from 'react-router-dom'; import { routesConstants } from './Consts'; +//Declaring required props export interface GlobalRouterProps { AssignmentRouteComponent: JSX.Element; PlatformRegistrationComponent: JSX.Element; } +// GlobalRouter component has 2 required props: +// +AssignmentRouteComponent +// +PlatformRegistrationComponent export const GlobalRouter = ({ AssignmentRouteComponent, PlatformRegistrationComponent }: GlobalRouterProps): JSX.Element => { return ( + // Routing {PlatformRegistrationComponent} {AssignmentRouteComponent} diff --git a/client/src/Stores/Core/StoreProvider.tsx b/client/src/Stores/Core/StoreProvider.tsx index 1c77ffca..98cae92e 100644 --- a/client/src/Stores/Core/StoreProvider.tsx +++ b/client/src/Stores/Core/StoreProvider.tsx @@ -7,10 +7,16 @@ import React, { createContext, PropsWithChildren } from 'react'; import { RootStore } from '../Root.store'; import { useLocalStore } from 'mobx-react-lite'; +// Create a store context to be used throughout this component's children + export const StoreContext = createContext(null); +// Retrieve the children prop and the rootStore prop. PropsWithChildren indicates the children prop is delcared +// as a ReactNode along with some other props (rootStore with type RootStore) and can be retrieved by deconstructing PropsWithChildren. + export const StoreProvider = ({ children, rootStore }: PropsWithChildren<{ rootStore: RootStore }>): JSX.Element => { const store = useLocalStore(() => ({ ...rootStore })); + // Passing the "store" variable to this component's children return {children}; }; diff --git a/client/src/Stores/Root.store.ts b/client/src/Stores/Root.store.ts index cb27bb05..9cb482b1 100644 --- a/client/src/Stores/Root.store.ts +++ b/client/src/Stores/Root.store.ts @@ -18,10 +18,12 @@ export class RootStore { platformStore = new PlatformStore(); constructor() { + //Get list of all available stores const childStores: ChildStore[] = Object.keys(this) .map(key => Reflect.get(this, key)) .filter(value => value instanceof ChildStore); + //Set the Root store for each store in the list to be this RootStore and initialize the stores. childStores.forEach(store => store.setRootStore(this)); childStores.forEach(store => store.initialize()); } From 3b245ac3a83b01b106c935a4a9f67b640b476aae Mon Sep 17 00:00:00 2001 From: DuyNguyen19993010 Date: Mon, 25 Jul 2022 17:22:34 +0100 Subject: [PATCH 107/285] Cleanup finished --- client/src/App.tsx | 103 +----------------- client/src/Core/Auth/AppAuthConfig.ts | 2 +- .../Core/Auth/AxiosBasicAuthInitializer.tsx | 63 +---------- client/src/Core/Auth/policies.ts | 2 +- client/src/Router/GlobalRouter.tsx | 2 +- client/src/Services/Assignment.service.ts | 5 +- client/src/Services/MicrosoftLearn.service.ts | 11 +- client/src/Services/Users.service.ts | 1 - client/src/Stores/Assignment.store.ts | 4 - 9 files changed, 12 insertions(+), 181 deletions(-) diff --git a/client/src/App.tsx b/client/src/App.tsx index 1d153746..3c603508 100644 --- a/client/src/App.tsx +++ b/client/src/App.tsx @@ -18,13 +18,7 @@ import { initializeIcons } from '@fluentui/react'; import { appTheme } from './Core/Themes/MainTheme'; import { PlatformPage } from './Features/Platform/PlatformPage'; import { PublicClientApplication, InteractionType, InteractionRequiredAuthError } from '@azure/msal-browser'; -import { - MsalAuthenticationTemplate, - MsalProvider, - useMsal, - useIsAuthenticated, - useMsalAuthentication -} from '@azure/msal-react'; +import { MsalAuthenticationTemplate, MsalProvider } from '@azure/msal-react'; import { AxiosBasicAuthInitializer } from './Core/Auth/AxiosBasicAuthInitializer'; const rootStore: RootStore = new RootStore(); @@ -38,8 +32,6 @@ function App() { scopes: ['openid', 'profile', 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read'] }; - //CreateInterceptor(); - return ( @@ -58,97 +50,4 @@ function App() { ); } -// return ( -// -// -// -// -// } PlatformRegistrationComponent={} /> -// -// -// -// -// ); - -function ExampleComponent() { - const isAuthenticated = useIsAuthenticated(); - const { instance, accounts } = useMsal(); - const request = { - scopes: ['openid', 'profile', 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read'], - account: accounts[0] - }; - const { error } = useMsalAuthentication(InteractionType.Redirect, request); // Will initiate a popup login if user is unauthenticated - - if (isAuthenticated) { - return Only authenticated users can see me.; - } else if (error) { - return An error occurred during login!; - } else { - return Only unauthenticated users can see me.; - } -} - -function UseAccessToken() { - const isAuthenticated = useIsAuthenticated(); - const { instance, accounts } = useMsal(); - const request = { - scopes: ['openid', 'profile', 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read'], - account: accounts[0] - }; - const { error } = useMsalAuthentication(InteractionType.Redirect, request); - console.log('In use access token'); - - const [accessToken] = useState(null); - - if (accounts.length > 0) { - instance - .acquireTokenSilent(request) - .then(response => { - axios.defaults.headers.common = { Authorization: `bearer ${response.accessToken}` }; - //setAccessToken(response.accessToken); - //setAccessToken(response.accessToken); - }) - .catch(error => { - // acquireTokenSilent can fail for a number of reasons, fallback to interaction - if (error instanceof InteractionRequiredAuthError) { - instance.acquireTokenPopup(request).then(response => { - axios.defaults.headers.common = { Authorization: `bearer ${response.accessToken}` }; - //setAccessToken(response.accessToken); - }); - } - }); - } - - return accessToken; -} - -function CreateInterceptor() { - // Add a request interceptor - const { instance, accounts } = useMsal(); - const request = { - scopes: ['openid', 'profile', 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read'], - account: accounts[0] - }; - console.log('This has been intercepted mwahaha'); - - axios.interceptors.request.use(config => { - instance - .acquireTokenSilent(request) - .then(response => { - axios.defaults.headers.common = { Authorization: `bearer ${response.accessToken}` }; - // setAccessToken(response.accessToken); - //setAccessToken(response.accessToken); - }) - .catch(error => { - // acquireTokenSilent can fail for a number of reasons, fallback to interaction - if (error instanceof InteractionRequiredAuthError) { - instance.acquireTokenPopup(request).then(response => { - axios.defaults.headers.common = { Authorization: `bearer ${response.accessToken}` }; - //setAccessToken(response.accessToken); - }); - } - }); - }); -} - export default App; diff --git a/client/src/Core/Auth/AppAuthConfig.ts b/client/src/Core/Auth/AppAuthConfig.ts index 89e42590..d7d7e4d1 100644 --- a/client/src/Core/Auth/AppAuthConfig.ts +++ b/client/src/Core/Auth/AppAuthConfig.ts @@ -19,7 +19,7 @@ const authLogCallback = (level: LogLevel, message: string, _containsPii: boolean const config: Configuration = { auth: { - //clientId: process.env.REACT_APP_EDNA_AUTH_CLIENT_ID!, //process.env.REACT_APP_EDNA_AAD_CLIENT_ID! + // clientId: process.env.REACT_APP_EDNA_AUTH_CLIENT_ID!, //process.env.REACT_APP_EDNA_AAD_CLIENT_ID! clientId: '0cd1d1d6-a7aa-41e2-b569-1ca211147973', // TODO: don't hardcode redirectUri: process.env.REACT_APP_EDNA_MAIN_URL!, authority: b2cPolicies.authorities.signIn.authority, diff --git a/client/src/Core/Auth/AxiosBasicAuthInitializer.tsx b/client/src/Core/Auth/AxiosBasicAuthInitializer.tsx index 28adaa67..b0cb266e 100644 --- a/client/src/Core/Auth/AxiosBasicAuthInitializer.tsx +++ b/client/src/Core/Auth/AxiosBasicAuthInitializer.tsx @@ -12,24 +12,22 @@ export const AxiosBasicAuthInitializer = ({ children }: PropsWithChildren<{}>): const { instance, accounts } = useMsal(); const [isTokenLoaded, setIsTokenLoaded] = useState(false); const [accessToken, setAccessToken] = useState(null); - console.log('calling Axios basic initilializer'); const request = { scopes: ['https://ltimoodleb2c.onmicrosoft.com/api/b2c.read', 'profile', 'openid'], account: accounts[0] }; - //Called everytime time the LTI app is accessed to authenticate the user before allowing access. + // Called everytime time the LTI app is accessed to authenticate the user before allowing access. + useEffect(() => { instance .acquireTokenSilent(request) .then(tokenObj => { - console.log('set axios header from silent'); axios.defaults.headers.common = { Authorization: `bearer ${tokenObj.accessToken}` }; setAccessToken(tokenObj.accessToken); setIsTokenLoaded(true); }) .catch(error => { - console.log('axios get a popup instead '); // acquireTokenSilent can fail for a number of reasons, fallback to interaction if (error instanceof InteractionRequiredAuthError) { instance.acquireTokenPopup(request).then(response => { @@ -41,60 +39,7 @@ export const AxiosBasicAuthInitializer = ({ children }: PropsWithChildren<{}>): axios.defaults.validateStatus = () => true; }, []); - //Check if user has successfully been authenticated and load children(Children are basically anything that - //is between the open and closing tag of this component), otherwise return null. + // Check if user has successfully been authenticated and load children(Children are basically anything that + // is between the open and closing tag of this component), otherwise return null. return <>{isTokenLoaded ? children : null}; }; - -async function useAccessToken() { - const { instance, accounts } = useMsal(); - const [accessToken, setAccessToken] = useState(null); - - if (accounts.length > 0) { - const request = { - scopes: ['b2c.Read', 'profile', 'openid'], - account: accounts[0] - }; - instance - .acquireTokenSilent(request) - .then(response => { - //setAccessToken(response.accessToken); - return response.accessToken; - }) - .catch(error => { - // acquireTokenSilent can fail for a number of reasons, fallback to interaction - if (error instanceof InteractionRequiredAuthError) { - instance.acquireTokenPopup(request).then(response => { - // setAccessToken(response.accessToken); - return response.accessToken; - }); - } - }); - } - - return null; -} -// useEffect(() => { -// instance -// .acquireTokenSilent(request) -// .then(tokenObj => { -// console.log('set axios header from silent'); -// axios.defaults.headers.common = { Authorization: `bearer ${tokenObj}` }; -// //setAccessToken(tokenObj.accessToken); -// }) -// .then(() => -// setIsTokenLoaded(true)) -// .catch(error => { -// // acquireTokenSilent can fail for a number of reasons, fallback to interaction -// if (error instanceof InteractionRequiredAuthError) { -// instance.acquireTokenPopup(request).then((response) => { -// // setAccessToken(response.accessToken); -// return response.accessToken; -// }); -// } -// }) -// .then(() => { -// setIsTokenLoaded(true); -// }); -// axios.defaults.validateStatus = () => true; -// }, []); diff --git a/client/src/Core/Auth/policies.ts b/client/src/Core/Auth/policies.ts index 4339a3c7..80c6b3ac 100644 --- a/client/src/Core/Auth/policies.ts +++ b/client/src/Core/Auth/policies.ts @@ -12,7 +12,7 @@ export const b2cPolicies = { authorities: { signIn: { authority: `https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/B2C_1A_SIGNIN` // custom policy - //authority: `https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/B2C_1_signup_signin_LTI` // user flow + // authority: `https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/B2C_1_signup_signin_LTI` // user flow // user flow: // `https://` + // process.env.REACT_APP_EDNA_B2C_TENANT! + diff --git a/client/src/Router/GlobalRouter.tsx b/client/src/Router/GlobalRouter.tsx index 82c991ad..2a77d2c6 100644 --- a/client/src/Router/GlobalRouter.tsx +++ b/client/src/Router/GlobalRouter.tsx @@ -7,7 +7,7 @@ import React from 'react'; import { Route, Switch } from 'react-router-dom'; import { routesConstants } from './Consts'; -//Declaring required props +// Declaring required props export interface GlobalRouterProps { AssignmentRouteComponent: JSX.Element; PlatformRegistrationComponent: JSX.Element; diff --git a/client/src/Services/Assignment.service.ts b/client/src/Services/Assignment.service.ts index 00877142..ef86d0c6 100644 --- a/client/src/Services/Assignment.service.ts +++ b/client/src/Services/Assignment.service.ts @@ -9,13 +9,10 @@ import { safeData, WithError } from '../Core/Utils/Axios/safeData'; class AssignmentServiceClass { public async getAssignment(assignmentId: string): Promise> { - console.log('get assignment just assignment'); - console.log(assignmentId); + // Retrieve an assignment const response = await axios.get( `${process.env.REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL}/assignments/${assignmentId}` ); - console.log('returnd assignment data, just assignment'); - console.log(response); return safeData(response); } diff --git a/client/src/Services/MicrosoftLearn.service.ts b/client/src/Services/MicrosoftLearn.service.ts index 5ac3a2fb..fe1106ca 100644 --- a/client/src/Services/MicrosoftLearn.service.ts +++ b/client/src/Services/MicrosoftLearn.service.ts @@ -10,22 +10,17 @@ import { AssignmentLearnContentDto } from '../Dtos/Learn/AssignmentLearnContent. class MicrosoftLearnServiceClass { public async getCatalog(): Promise> { - console.log('get catalog'); + // Get catalog + const catalogApiResponse = await axios.get(`${process.env.REACT_APP_EDNA_LEARN_CONTENT}/learn-catalog`); - console.log('catalog response data'); - console.log(catalogApiResponse); return safeData(catalogApiResponse); } public async getAssignmentLearnContent(assignmentId: string): Promise> { - console.log('get this assignment via learn content'); - console.log(assignmentId); + // Get assingment via learnContent const assignmentLearnContentResponse = await axios.get( `${process.env.REACT_APP_EDNA_LEARN_CONTENT}/assignments/${assignmentId}/learn-content` ); - console.log('assignment response data via learn content'); - console.log(assignmentLearnContentResponse); - return safeData(assignmentLearnContentResponse); } diff --git a/client/src/Services/Users.service.ts b/client/src/Services/Users.service.ts index 4ef0830e..fa8c8da5 100644 --- a/client/src/Services/Users.service.ts +++ b/client/src/Services/Users.service.ts @@ -25,7 +25,6 @@ class UsersServiceClass { } public async getCurrentUserImageBlob(): Promise { - console.log(`in get user image blob`); // TODO fix const authResponse = await AppAuthConfig.acquireTokenSilent({ scopes: ['user.read'] }); const response = await axios.get('https://graph.microsoft.com/beta/me/photos/96x96/$value', { headers: { diff --git a/client/src/Stores/Assignment.store.ts b/client/src/Stores/Assignment.store.ts index 3a9b9e66..e0f41de2 100644 --- a/client/src/Stores/Assignment.store.ts +++ b/client/src/Stores/Assignment.store.ts @@ -18,13 +18,9 @@ export class AssignmentStore extends ChildStore { async initializeAssignment(assignmentId: string): Promise { const assignment = await AssignmentService.getAssignment(assignmentId); if (assignment.error) { - console.log('in assignment error'); - console.log(assignment.error); this.errorContent = ErrorPageContent.CreateFromServiceError(assignment.error); return; } - console.log('assigment is '); - console.log(assignment); const { deadline } = assignment; this.assignment = deadline ? { ...assignment, deadline: new Date(deadline) } : assignment; } From d610e5cb83759553ca6e8c53d7a02d33dda17578 Mon Sep 17 00:00:00 2001 From: DuyNguyen19993010 Date: Mon, 25 Jul 2022 17:25:44 +0100 Subject: [PATCH 108/285] Cleanup 2.0 finished --- client/src/Services/Platform.service.ts | 3 --- client/src/Stores/Users.store.ts | 2 -- 2 files changed, 5 deletions(-) diff --git a/client/src/Services/Platform.service.ts b/client/src/Services/Platform.service.ts index 8bf1c92a..5b26b98d 100644 --- a/client/src/Services/Platform.service.ts +++ b/client/src/Services/Platform.service.ts @@ -10,12 +10,9 @@ import { ServiceError } from '../Core/Utils/Axios/ServiceError'; class PlatformServiceClass { public async getAllPlatforms(): Promise> { - console.log(`calling all platforms`); const allPlatformsResponse = await axios.get( `${process.env.REACT_APP_EDNA_PLATFORM_SERVICE_URL}/platforms` ); - console.log(allPlatformsResponse); - console.log(`finished calling get all platforms`); return safeData(allPlatformsResponse); } diff --git a/client/src/Stores/Users.store.ts b/client/src/Stores/Users.store.ts index f73bf760..148c66ee 100644 --- a/client/src/Stores/Users.store.ts +++ b/client/src/Stores/Users.store.ts @@ -33,7 +33,6 @@ export class UsersStore extends ChildStore { @observable errorContent: ErrorPageContent | undefined = undefined; initialize(): void { - console.log('initialize user store'); const detailsFromPlatform = toObservable( () => this.root.platformStore.platform || this.root.platformStore.errorContent !== undefined ).pipe( @@ -47,7 +46,6 @@ export class UsersStore extends ChildStore { const getUser = async (assignmentId: string): Promise> => { const user = await UsersService.getCurrentUserDetails(assignmentId); - console.log('user is ' + user.email); if (user.error) { this.errorContent = ErrorPageContent.CreateFromServiceError(user.error); } else if (!user) { From 5fe763947fa7c9290e7df2aa27218470cbe612cb Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Mon, 25 Jul 2022 17:47:34 +0100 Subject: [PATCH 109/285] Fixed issues in B2CDeployment script and Deployment script so it now successfully terminates --- client/.env.production | 16 ++++++++-------- deployment/B2CCleanup.ps1 | 4 +++- deployment/B2CDeployment.ps1 | 27 +++++++++++++++++++-------- deployment/Cleanup.ps1 | 12 +++++++----- deployment/Deploy.ps1 | 5 +++-- deployment/azuredeploy.json | 2 +- 6 files changed, 41 insertions(+), 25 deletions(-) diff --git a/client/.env.production b/client/.env.production index dc6d91b3..36370077 100644 --- a/client/.env.production +++ b/client/.env.production @@ -1,10 +1,10 @@ GENERATE_SOURCEMAP='false' -REACT_APP_EDNA_PLATFORM_SERVICE_URL='https://platforms-ofdd7tsmz.azurewebsites.net/api' -REACT_APP_EDNA_USERS_SERVICE_URL='https://users-ofdd7tsmz.azurewebsites.net/api' -REACT_APP_EDNA_LEARN_CONTENT='https://learncontent-ofdd7tsmz.azurewebsites.net/api' -REACT_APP_EDNA_LINKS_SERVICE_URL='https://links-ofdd7tsmz.azurewebsites.net/api' -REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL='https://assignments-ofdd7tsmz.azurewebsites.net/api' +REACT_APP_EDNA_PLATFORM_SERVICE_URL='https://platforms-f36nyrjvo.azurewebsites.net/api' +REACT_APP_EDNA_USERS_SERVICE_URL='https://users-f36nyrjvo.azurewebsites.net/api' +REACT_APP_EDNA_LEARN_CONTENT='https://learncontent-f36nyrjvo.azurewebsites.net/api' +REACT_APP_EDNA_LINKS_SERVICE_URL='https://links-f36nyrjvo.azurewebsites.net/api' +REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL='https://assignments-f36nyrjvo.azurewebsites.net/api' REACT_APP_EDNA_TENANT_ID='21510bb9-6414-46d0-9a07-1faf98f25937' -REACT_APP_EDNA_DEFAULT_SCOPE='api://8536df83-6587-4a24-87cc-62a917ad17f8/user_impersonation' -REACT_APP_EDNA_MAIN_URL='https://learnclientofdd7tsmz.z33.web.core.windows.net/' -REACT_APP_EDNA_AAD_CLIENT_ID='8536df83-6587-4a24-87cc-62a917ad17f8' +REACT_APP_EDNA_DEFAULT_SCOPE='api://562065a6-f163-49ce-9b62-cb94283f51cd/user_impersonation' +REACT_APP_EDNA_MAIN_URL='https://learnclientf36nyrjvo.z33.web.core.windows.net/' +REACT_APP_EDNA_AAD_CLIENT_ID='562065a6-f163-49ce-9b62-cb94283f51cd' diff --git a/deployment/B2CCleanup.ps1 b/deployment/B2CCleanup.ps1 index 941b8e29..ff1b35f6 100644 --- a/deployment/B2CCleanup.ps1 +++ b/deployment/B2CCleanup.ps1 @@ -87,4 +87,6 @@ foreach ($info in $AppInfo) { Write-Host "Deleting $id from $tid" az ad app delete --id $id --only-show-errors } -#endregion \ No newline at end of file +#endregion + +$exit = Read-Host "Press enter to exit" \ No newline at end of file diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index a7bd241f..ebbea125 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -60,7 +60,7 @@ $ADAppManifest = "{ }" Out-File -FilePath "manifest.json" -InputObject $ADAppManifest $MultiTenantAppID = (az ad app create --display-name $MultiTenantAppName --sign-in-audience AzureADandPersonalMicrosoftAccount --web-redirect-uris https://$B2cTenantName.b2clogin.com/$B2cTenantName.onmicrosoft.com/oauth2/authresp --optional-claims "@manifest.json" --query appId --output tsv --only-show-errors) - +Start-SLeep 1 "$MultiTenantAppID,$ADTenantName" | Out-File -FilePath $AppInfoCSVPath -Append # Create client secret @@ -96,7 +96,7 @@ az login --tenant "$B2cTenantName.onmicrosoft.com" --allow-no-subscriptions --on Write-Title "STEP 3: Creating the B2C Web application" $B2cAppName = Read-Host "Please give a name for the web application to be created" $WebClientID = (az ad app create --display-name $B2cAppName --sign-in-audience AzureADandPersonalMicrosoftAccount --web-redirect-uris https://jwt.ms --enable-access-token-issuance true --enable-id-token-issuance true --query appId --output tsv --only-show-errors) - +Start-SLeep 1 "$WebClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append # create client secret @@ -123,7 +123,7 @@ az ad app permission add --id $WebClientID --api 00000003-0000-0000-c000-0000000 Write-Title "STEP 4: Creating the Identity Experience Framework application" $IEFAppName = "IdentityExperienceFramework" $IEFClientID = (az ad app create --display-name $IEFAppName --sign-in-audience AzureADMyOrg --web-redirect-uris https://$B2cTenantName.b2clogin.com/$B2cTenantName.onmicrosoft.com --query appId --output tsv --only-show-errors) - +Start-SLeep 1 "$IEFClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append # set permissions for the IEF app @@ -164,7 +164,7 @@ Remove-Item userImpersonationScope.json Write-Title "STEP 5: Creating the Proxy Identity Experience Framework application" $ProxyIEFAppName = "ProxyIdentityExperienceFramework" $ProxyIEFClientID = (az ad app create --display-name $ProxyIEFAppName --sign-in-audience AzureADMyOrg --public-client-redirect-uris myapp://auth --is-fallback-public-client true --query appId --output tsv --only-show-errors) - +Start-SLeep 1 "$ProxyIEFClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append Write-Host "Granting permissions to the Proxy IEF application" @@ -179,7 +179,7 @@ az ad app permission add --id $ProxyIEFClientID --api $IEFClientID --api-permiss Write-Title "STEP 6: Creating Permission Management application" $PermissionAppName = Read-Host "Please give a name for the permission management application to be created" $PermissionClientID = (az ad app create --display-name $PermissionAppName --sign-in-audience AzureADMyOrg --query appId --output tsv --only-show-errors) - +Start-SLeep 1 "$PermissionClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append # create client secret @@ -221,7 +221,19 @@ $whitelist = @() if ($fileOrInputs -eq "1") { $filePath = Read-Host "Please enter the path to the file containing the tenant ID's" - $whitelist = Get-Content $filePath + $tenantIDs = Get-Content $filePath + + foreach ($wlTenantID in $tenantIDs) + { + #region "HTTP request to get the issuer claim we want to add to the whitelist" + $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" + + $response = Invoke-RestMethod "https://login.microsoftonline.com/$wlTenantID/v2.0/.well-known/openid-configuration" -Method 'GET' -Headers $headers + $issuer = $response.issuer + #endregion + + $whitelist += $issuer #adding the issuer for this tenant to the whitelist + } } # Input one by one to the console @@ -237,8 +249,7 @@ else try{ #region "HTTP request to get the issuer claim we want to add to the whitelist" $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" - $headers.Add("Cookie", "esctx=AQABAAAAAAD--DLA3VO7QrddgJg7Wevrz5AJFK2BuCxYc25okcgEMIhli-M9GRnC77gX9U2agXqRChe5Tk3qNfEPzYWBnDAUp-o9RWFY5KNcFx-vXSzS0awJmoC7qDfdimSHwN_cVTAk3AVnFnGSxQfcY9xfjJxnZI_bqBXjO6MUJ0rjdw14dd7jnRNLmUGqljuVubDJWG8gAA; fpc=AkuS-X1BCTpNr-MiUS-IqaM; stsservicecookie=estsfd; x-ms-gateway-slice=estsfd") - + $response = Invoke-RestMethod "https://login.microsoftonline.com/$wlTenantID/v2.0/.well-known/openid-configuration" -Method 'GET' -Headers $headers $issuer = $response.issuer #endregion diff --git a/deployment/Cleanup.ps1 b/deployment/Cleanup.ps1 index ad482fe9..14319ad4 100644 --- a/deployment/Cleanup.ps1 +++ b/deployment/Cleanup.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "DM_ad2_MSLearnLTI", - [string]$AppName = "DM_ad2_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "DM_ad4_MSLearnLTI", + [string]$AppName = "DM_ad4_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null ) @@ -43,6 +43,11 @@ process { Start-Transcript -Path $TranscriptFile; #endregion + + Write-Title "Step #0 - Running B2C Cleanup Script" + & ".\B2CCleanup.ps1" + + #region Login to Azure CLI Write-Title 'STEP #1 - Logging into Azure' @@ -153,7 +158,4 @@ process { Write-Log -Message "Clean-up Complete" Write-Warning 'Please use a different ResourceGroup name on re-deployment!' - - Write-Title "Step #5 - Running B2C Cleanup Script" - & ".\B2CCleanup.ps1" } \ No newline at end of file diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 9e0cd4ca..b967b3a8 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "DM_ad3_MSLearnLTI", - [string]$AppName = "DM_ad3_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "DM_ad4_MSLearnLTI", + [string]$AppName = "DM_ad4_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null @@ -109,6 +109,7 @@ process { Write-Title "B2C Step #2: Updating the B2C parameters and secrets" $b2c_secret = '"'+$b2c_secret+'"' ((Get-Content -path ".\azuredeploy.json" -Raw) -replace '""', $b2c_secret) | Set-Content -path (".\azuredeploy.json") + #TODO - find way to replace the value for line 173 of azuredeployTemplate.json via an input or API call (wellKnownOpenIdConfiguration) so they can input it correctly [string]$dir = Get-Location $dir += "/../client/.env.production" diff --git a/deployment/azuredeploy.json b/deployment/azuredeploy.json index 433be447..48d88e20 100644 --- a/deployment/azuredeploy.json +++ b/deployment/azuredeploy.json @@ -20,7 +20,7 @@ } }, "variables": { - "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, '20220725104007'),0,9)]", + "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, '20220725051843'),0,9)]", "functionList": [ "connect", "assignments", From 5aa3d810d85bef921b54b3916ad2f41c7b76eb5e Mon Sep 17 00:00:00 2001 From: Tianchen Zhang Date: Tue, 26 Jul 2022 10:17:10 +0100 Subject: [PATCH 110/285] feat: token validation --- .../AssignmentLearnContentApi.cs | 32 +++----- .../AssignmentLinksApi.cs | 6 ++ .../Edna.Assignments/AssignmentsApi.cs | 8 ++ .../Edna.Platforms/PlatformsApi.cs | 21 +++-- .../Edna.Users/Edna.Users/UsersApi.cs | 7 ++ .../Edna.Utils.Http/Edna.Utils.Http.csproj | 4 +- .../Edna.Utils.Http/HttpHeadersExtensions.cs | 41 ++++++++++ client/.env.production | 19 ++--- deployment/Deploy.ps1 | 19 +++-- deployment/Limited-Install-Deploy.ps1 | 8 +- deployment/azuredeploy.json | 80 +++++++++++-------- 11 files changed, 156 insertions(+), 89 deletions(-) diff --git a/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs b/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs index 4e9e30cd..b6028882 100644 --- a/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs +++ b/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs @@ -32,6 +32,8 @@ public class AssignmentLearnContentApi private const string AssignmentLearnContentTableName = "AssignmentLearnContent"; private const string LearnContentUrlIdentifierKey = "WT.mc_id"; private const string LearnContentUrlIdentifierValue = "Edna"; + private static readonly string OpenIdConfigurationUrl = Environment.GetEnvironmentVariable("OpenIdConfigurationUrl"); + private static readonly string ValidAudience = Environment.GetEnvironmentVariable("ValidAudience"); private readonly ILogger _logger; private readonly IMapper _mapper; @@ -83,15 +85,14 @@ public async Task SaveAssignmentLearnContent( string contentUid, [User] UsersClient usersClient) { - #region "DM: VALIDATION OF USER EMAIL EXISTING, DOUBT THE CHANGE OF AD TO B2C WILL CHANGE THIS API BUT FLAGGED TO CHECK FURTHER" - // validating user email exists in the request header - bool isSystemCallOrUserWithValidEmail = req.Headers.TryGetUserEmails(out List userEmails); + if (!await req.Headers.ValidateToken(OpenIdConfigurationUrl, ValidAudience, message => _logger.LogError(message))) + return new UnauthorizedResult(); + bool isSystemCallOrUserWithValidEmail = req.Headers.TryGetUserEmails(out List userEmails, ValidAudience, ValidIssuer, JwksURI); if (!isSystemCallOrUserWithValidEmail) { _logger.LogError("Could not get user email."); return new BadRequestErrorMessageResult("Could not get user email."); } - #endregion if (userEmails.Count > 0) { @@ -128,26 +129,23 @@ public async Task RemoveAssignmentLearnContent( string contentUid, [User] UsersClient usersClient) { - #region "DM: VALIDATION OF USER EMAIL EXISTING, DOUBT THE CHANGE OF AD TO B2C WILL CHANGE THIS API BUT FLAGGED TO CHECK FURTHER" - // validating user email exists in the request header - bool isSystemCallOrUserWithValidEmail = req.Headers.TryGetUserEmails(out List userEmails); + if (!await req.Headers.ValidateToken(OpenIdConfigurationUrl, ValidAudience, message => _logger.LogError(message))) + return new UnauthorizedResult(); + bool isSystemCallOrUserWithValidEmail = req.Headers.TryGetUserEmails(out List userEmails, ValidAudience, ValidIssuer, JwksURI); if (!isSystemCallOrUserWithValidEmail) { _logger.LogError("Could not get user email."); return new BadRequestErrorMessageResult("Could not get user email."); } - #endregion if (userEmails.Count > 0) { - #region "DM: [SAME AS LINE 98] getting list of for the assignment from AD and checking they are authorized (teacher status)" _logger.LogInformation($"Getting user information for '{string.Join(';', userEmails)}'."); User[] allUsers = await usersClient.GetAllUsers(assignmentId); User user = allUsers.FirstOrDefault(member => userEmails.Any(userEmail => (member.Email ?? String.Empty).Equals(userEmail))); if (user == null || !user.Role.Equals("teacher")) return new UnauthorizedResult(); - #endregion } if (assignmentLearnContentEntityToDelete == null) @@ -171,26 +169,23 @@ public async Task ClearAssignmentLearnContent( string assignmentId, [User] UsersClient usersClient) { - #region "DM: VALIDATION OF USER EMAIL EXISTING, DOUBT THE CHANGE OF AD TO B2C WILL CHANGE THIS API BUT FLAGGED TO CHECK FURTHER" - // validating user email exists in the request header + if (!await req.Headers.ValidateToken(OpenIdConfigurationUrl, ValidAudience, message => _logger.LogError(message))) + return new UnauthorizedResult(); bool isSystemCallOrUserWithValidEmail = req.Headers.TryGetUserEmails(out List userEmails); if (!isSystemCallOrUserWithValidEmail) { _logger.LogError("Could not get user email."); return new BadRequestErrorMessageResult("Could not get user email."); } - #endregion if (userEmails.Count > 0) { - #region "DM: [SAME AS LINE98] getting list of for the assignment from AD and checking they are authorized (teacher status)" _logger.LogInformation($"Getting user information for '{string.Join(';', userEmails)}'."); User[] allUsers = await usersClient.GetAllUsers(assignmentId); User user = allUsers.FirstOrDefault(member => userEmails.Any(userEmail => (member.Email ?? String.Empty).Equals(userEmail))); if (user == null || !user.Role.Equals("teacher")) return new UnauthorizedResult(); - #endregion } List assignmentLearnContentEntities = await GetAllAssignmentLearnContentEntities(assignmentLearnContentTable, assignmentId); @@ -213,9 +208,6 @@ public async Task ClearAssignmentLearnContent( : new OkResult(); } - - #region "DM: (POSSIBLY) IMPORTANT FUNCTION FOR OUR MODIFIED AUTHORIZATION, UTILISES TOKENS" - // function for getting all the assignmentLearnContent entities in the tenant (?) private async Task> GetAllAssignmentLearnContentEntities(CloudTable assignmentLearnContentTable, string assignmentId) { TableQuery assignmentSelectedLearnContentQuery = new TableQuery() @@ -237,10 +229,7 @@ private async Task> GetAllAssignmentLearnCont return assignmentSelectedLearnContent; } - #endregion - #region "DM: (POSSIBLY) IMPORTANT FUNCTION FOR OUR MODIFIED AUTHORIZATION, UTILISES JSON TOKENS" - // takes in a JSON token for the content private void ChangeUrlQueryToEdnaIdentifier(JToken contentJToken) { string url = contentJToken["url"]?.ToString(); // get the url from the decoded JSON token @@ -255,6 +244,5 @@ private void ChangeUrlQueryToEdnaIdentifier(JToken contentJToken) contentJToken["url"] = newUriBuilder.Uri.ToString(); //update the JSON tokens url with the newly generated url } - #endregion } } \ No newline at end of file diff --git a/backend/Functions/Edna.AssignmentLinks/Edna.AssignmentLinks/AssignmentLinksApi.cs b/backend/Functions/Edna.AssignmentLinks/Edna.AssignmentLinks/AssignmentLinksApi.cs index 2c2856f3..ee22290e 100644 --- a/backend/Functions/Edna.AssignmentLinks/Edna.AssignmentLinks/AssignmentLinksApi.cs +++ b/backend/Functions/Edna.AssignmentLinks/Edna.AssignmentLinks/AssignmentLinksApi.cs @@ -30,6 +30,8 @@ public class AssignmentLinksApi private readonly ILogger _logger; private readonly IMapper _mapper; private const string AssignmentLinksTableName = "Links"; + private static readonly string OpenIdConfigurationUrl = Environment.GetEnvironmentVariable("OpenIdConfigurationUrl"); + private static readonly string ValidAudience = Environment.GetEnvironmentVariable("ValidAudience"); public AssignmentLinksApi(ILogger logger, IMapper mapper) { @@ -89,6 +91,8 @@ public async Task SaveLink( string linkId, [User] UsersClient usersClient) { + if (!await req.Headers.ValidateToken(OpenIdConfigurationUrl, ValidAudience, message => _logger.LogError(message))) + return new UnauthorizedResult(); bool isSystemCallOrUserWithValidEmail = req.Headers.TryGetUserEmails(out List userEmails); if (!isSystemCallOrUserWithValidEmail) { @@ -149,6 +153,8 @@ public async Task DeleteLink( string assignmentId, [User] UsersClient usersClient) { + if (!await req.Headers.ValidateToken(OpenIdConfigurationUrl, ValidAudience, message => _logger.LogError(message))) + return new UnauthorizedResult(); bool isSystemCallOrUserWithValidEmail = req.Headers.TryGetUserEmails(out List userEmails); if (!isSystemCallOrUserWithValidEmail) { diff --git a/backend/Functions/Edna.Assignments/Edna.Assignments/AssignmentsApi.cs b/backend/Functions/Edna.Assignments/Edna.Assignments/AssignmentsApi.cs index 663b78b2..cce4c4c9 100644 --- a/backend/Functions/Edna.Assignments/Edna.Assignments/AssignmentsApi.cs +++ b/backend/Functions/Edna.Assignments/Edna.Assignments/AssignmentsApi.cs @@ -33,6 +33,9 @@ public class AssignmentsApi private const string AssignmentsTableName = "Assignments"; private const string AssignmentsRoutePath = "assignments"; + private static readonly string OpenIdConfigurationUrl = Environment.GetEnvironmentVariable("OpenIdConfigurationUrl"); + private static readonly string ValidAudience = Environment.GetEnvironmentVariable("ValidAudience"); + private readonly ILogger _logger; private readonly IMapper _mapper; @@ -58,6 +61,9 @@ public async Task CreateOrUpdateAssignment( //While debugging, authorization header is empty when this API gets called from either Lti1 API or LtiAdvantage API // So to enable seamless debugging, putting this code in #if !DEBUG block + + if (!await req.Headers.ValidateToken(OpenIdConfigurationUrl, ValidAudience, message => _logger.LogError(message))) + return new UnauthorizedResult(); bool isSystemCallOrUserWithValidEmail = req.Headers.TryGetUserEmails(out List userEmails); if (!isSystemCallOrUserWithValidEmail) @@ -161,6 +167,8 @@ private async Task FetchAssignment(CloudTable table, string as private async Task ChangePublishStatus(HttpRequest req, CloudTable table, IAsyncCollector assignmentEntityCollector, string assignmentId, UsersClient usersClient, PublishStatus newPublishStatus) { + if (!await req.Headers.ValidateToken(OpenIdConfigurationUrl, ValidAudience, message => _logger.LogError(message))) + return new UnauthorizedResult(); bool isSystemCallOrUserWithValidEmail = req.Headers.TryGetUserEmails(out List userEmails); if (!isSystemCallOrUserWithValidEmail) { diff --git a/backend/Functions/Edna.Platforms/Edna.Platforms/PlatformsApi.cs b/backend/Functions/Edna.Platforms/Edna.Platforms/PlatformsApi.cs index ea7e6ca9..6b6f5092 100644 --- a/backend/Functions/Edna.Platforms/Edna.Platforms/PlatformsApi.cs +++ b/backend/Functions/Edna.Platforms/Edna.Platforms/PlatformsApi.cs @@ -33,6 +33,9 @@ public class PlatformsApi private static readonly string ConnectApiBaseUrl = Environment.GetEnvironmentVariable("ConnectApiBaseUrl").TrimEnd('/'); private static readonly string[] AllowedUsers = Environment.GetEnvironmentVariable("AllowedUsers")?.Split(";") ?? new string[0]; + private static readonly string OpenIdConfigurationUrl = Environment.GetEnvironmentVariable("OpenIdConfigurationUrl"); + private static readonly string ValidAudience = Environment.GetEnvironmentVariable("ValidAudience"); + private readonly IMapper _mapper; private readonly ILogger _logger; @@ -48,7 +51,7 @@ public async Task GetAllRegisteredPlatforms( [LtiAdvantage] LtiToolPublicKey publicKey, [Table(PlatformsTableName)] CloudTable table) { - if (!ValidatePermission(req)) + if (!await ValidatePermission(req)) return new UnauthorizedResult(); _logger.LogInformation("Getting all the registered platforms."); @@ -77,12 +80,12 @@ public async Task GetAllRegisteredPlatforms( } [FunctionName(nameof(GetPlatform))] - public IActionResult GetPlatform( + public async Task GetPlatform( [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "platforms/{platformId}")] HttpRequest req, [LtiAdvantage] LtiToolPublicKey publicKey, [Table(PlatformsTableName, "{platformId}", "{platformId}")] PlatformEntity platformEntity) { - if (!ValidatePermission(req)) + if (!await ValidatePermission(req)) return new UnauthorizedResult(); PlatformDto platformDto = _mapper.Map(platformEntity); @@ -93,11 +96,11 @@ public IActionResult GetPlatform( } [FunctionName(nameof(GetNewPlatform))] - public IActionResult GetNewPlatform( + public async Task GetNewPlatform( [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "new-platform")] HttpRequest req, [LtiAdvantage] LtiToolPublicKey publicKey) { - if (!ValidatePermission(req)) + if (!await ValidatePermission(req)) return new UnauthorizedResult(); string platformId = GeneratePlatformID(); @@ -122,7 +125,7 @@ public async Task CreateOrUpdatePlatform( [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "platforms")] HttpRequest req, [Table(PlatformsTableName)] IAsyncCollector entityCollector) { - if (!ValidatePermission(req)) + if (!await ValidatePermission(req)) return new UnauthorizedResult(); string platformDtoJson = await req.ReadAsStringAsync(); @@ -140,7 +143,7 @@ public async Task CreateOrUpdatePlatform( return new CreatedResult(platformGetUrl, updatedPlatformDto); } - private bool ValidatePermission(HttpRequest req) + private async Task ValidatePermission(HttpRequest req) { #if DEBUG // For debug purposes, there is no authentication. @@ -148,7 +151,9 @@ private bool ValidatePermission(HttpRequest req) #endif _logger.LogInformation("In validate"); - + if (!await req.Headers.ValidateToken(OpenIdConfigurationUrl, ValidAudience, message => _logger.LogError(message))) + return false; + if (!req.Headers.TryGetTokenClaims(out Claim[] claims, message => _logger.LogError(message))) return false; diff --git a/backend/Functions/Edna.Users/Edna.Users/UsersApi.cs b/backend/Functions/Edna.Users/Edna.Users/UsersApi.cs index 0c47c2f6..8b588405 100644 --- a/backend/Functions/Edna.Users/Edna.Users/UsersApi.cs +++ b/backend/Functions/Edna.Users/Edna.Users/UsersApi.cs @@ -3,6 +3,7 @@ // Licensed under the MIT license. // -------------------------------------------------------------------------------------------- +using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; @@ -31,6 +32,9 @@ public class UsersApi { private readonly IMapper _mapper; private readonly ILogger _logger; + + private static readonly string OpenIdConfigurationUrl = Environment.GetEnvironmentVariable("OpenIdConfigurationUrl"); + private static readonly string ValidAudience = Environment.GetEnvironmentVariable("ValidAudience"); public UsersApi(IMapper mapper, ILogger logger) { @@ -51,6 +55,9 @@ public async Task GetUserDetails( if (req.Headers == null) return new BadRequestErrorMessageResult("No headers are presented in the request."); + if (!await req.Headers.ValidateToken(OpenIdConfigurationUrl, ValidAudience, message => _logger.LogError(message))) + return new UnauthorizedResult(); + if (!req.Headers.TryGetUserEmails(out List userEmails)) return new BadRequestErrorMessageResult("Could not get user email."); diff --git a/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/Edna.Utils.Http.csproj b/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/Edna.Utils.Http.csproj index faaad9d1..60200366 100644 --- a/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/Edna.Utils.Http.csproj +++ b/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/Edna.Utils.Http.csproj @@ -10,7 +10,9 @@ - + + + diff --git a/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/HttpHeadersExtensions.cs b/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/HttpHeadersExtensions.cs index ebc5ae55..24b92064 100644 --- a/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/HttpHeadersExtensions.cs +++ b/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/HttpHeadersExtensions.cs @@ -7,7 +7,11 @@ using System.IdentityModel.Tokens.Jwt; using System.Linq; using System.Security.Claims; +using System.Threading.Tasks; using Microsoft.AspNetCore.Http; +using Microsoft.IdentityModel.Protocols; +using Microsoft.IdentityModel.Protocols.OpenIdConnect; +using Microsoft.IdentityModel.Tokens; namespace Edna.Utils.Http { @@ -15,6 +19,43 @@ public static class HttpHeadersExtensions { private static readonly JwtSecurityTokenHandler JwtSecurityTokenHandler = new JwtSecurityTokenHandler(); + public static async Task ValidateToken(this IHeaderDictionary headers, string openIdConfigUrl, + string validAudience, Action logAction = null) + { + if (!headers.ContainsKey("Authorization")) + { + logAction?.Invoke("No Authorization header was found in the request."); + return false; + } + + var authorizationContent = headers["Authorization"].ToString(); + var token = authorizationContent?.Split(' ')[1]; + try + { + var configurationManager = new ConfigurationManager( + openIdConfigUrl, new OpenIdConnectConfigurationRetriever()); + var openIdConfig = await configurationManager.GetConfigurationAsync(default); + var validationParameters = new TokenValidationParameters + { + ValidateAudience = true, + ValidateIssuer = true, + ValidateIssuerSigningKey = true, + ValidateLifetime = true, + RequireSignedTokens = true, + IssuerSigningKeys = openIdConfig.SigningKeys, + ValidIssuer = openIdConfig.Issuer, + ValidAudience = validAudience + }; + var principal = JwtSecurityTokenHandler.ValidateToken(token, validationParameters, out _); + return !(principal is null); + } + catch (Exception e) + { + logAction?.Invoke("Error when validating the user token."); + } + return false; + } + public static bool TryGetTokenClaims(this IHeaderDictionary headers, out Claim[] claims, Action logAction = null) { claims = null; diff --git a/client/.env.production b/client/.env.production index 7e652be8..3d0b3402 100644 --- a/client/.env.production +++ b/client/.env.production @@ -1,13 +1,10 @@ GENERATE_SOURCEMAP='false' -REACT_APP_EDNA_PLATFORM_SERVICE_URL='https://platforms-suda4znvd.azurewebsites.net/api' -REACT_APP_EDNA_USERS_SERVICE_URL='https://users-suda4znvd.azurewebsites.net/api' -REACT_APP_EDNA_LEARN_CONTENT='https://learncontent-suda4znvd.azurewebsites.net/api' -REACT_APP_EDNA_LINKS_SERVICE_URL='https://links-suda4znvd.azurewebsites.net/api' -REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL='https://assignments-suda4znvd.azurewebsites.net/api' +REACT_APP_EDNA_PLATFORM_SERVICE_URL='https://platforms-bog5agozw.azurewebsites.net/api' +REACT_APP_EDNA_USERS_SERVICE_URL='https://users-bog5agozw.azurewebsites.net/api' +REACT_APP_EDNA_LEARN_CONTENT='https://learncontent-bog5agozw.azurewebsites.net/api' +REACT_APP_EDNA_LINKS_SERVICE_URL='https://links-bog5agozw.azurewebsites.net/api' +REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL='https://assignments-bog5agozw.azurewebsites.net/api' REACT_APP_EDNA_TENANT_ID='21510bb9-6414-46d0-9a07-1faf98f25937' -REACT_APP_EDNA_DEFAULT_SCOPE='api://3d440bc7-87f5-4600-8814-698b895d14d7/user_impersonation' -REACT_APP_EDNA_MAIN_URL='https://learnclientsuda4znvd.z33.web.core.windows.net/' -REACT_APP_EDNA_AAD_CLIENT_ID='3d440bc7-87f5-4600-8814-698b895d14d7' -REACT_APP_EDNA_B2C_CLIENT_ID='0cd1d1d6-a7aa-41e2-b569-1ca211147973' -REACT_APP_EDNA_B2C_TENANT='ltimoodleb2c' -REACT_APP_EDNA_AUTH_CLIENT_ID='0cd1d1d6-a7aa-41e2-b569-1ca211147973' +REACT_APP_EDNA_DEFAULT_SCOPE='api://cb508fc8-6a5f-49b1-b688-dac065ba59e4/user_impersonation' +REACT_APP_EDNA_MAIN_URL='https://learnclientbog5agozw.z33.web.core.windows.net/' +REACT_APP_EDNA_AAD_CLIENT_ID='cb508fc8-6a5f-49b1-b688-dac065ba59e4' diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index db887ad8..a16b8114 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "TZ_policy_validation", - [string]$AppName = "TZ_policy_val_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "TZ_policy_validation1", + [string]$AppName = "TZ_policy_val1_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null @@ -196,11 +196,10 @@ process { [int]$azver0= (az version | ConvertFrom-Json | Select -ExpandProperty "azure-cli").Split(".")[0] [int]$azver1= (az version | ConvertFrom-Json | Select -ExpandProperty "azure-cli").Split(".")[1] - if( $azver0 -ge 2 && $azver1 -ge 37){ - $userObjectId = az ad signed-in-user show --query id - } - else { - $userObjectId = az ad signed-in-user show --query objectId + if ($azver0 -ge 2 -and $azver1 -ge 37) { + $userObjectId = az ad signed-in-user show --query id + } else { + $userObjectId = az ad signed-in-user show --query objectId } #$userObjectId @@ -249,7 +248,11 @@ process { $AppRedirectUrl = $deploymentOutput.properties.outputs.webClientURL.value Write-Log -Message "Updating App with ID: $($appinfo.appId) to Redirect URL: $AppRedirectUrl and also enabling Implicit Flow" - $appUpdateRedirectUrlOp = az ad app update --id $appinfo.appId --reply-urls $AppRedirectUrl --oauth2-allow-implicit-flow true + if ($azver0 -ge 2 -and $azver1 -ge 37) { + $appUpdateRedirectUrlOp = az ad app update --id $appinfo.appId --web-redirect-uris $AppRedirectUrl --enable-access-token-issuance true + } else { + $appUpdateRedirectUrlOp = az ad app update --id $appinfo.appId --reply-urls $AppRedirectUrl --oauth2-allow-implicit-flow true + } #Intentionally not catching an exception here since the app update commands behavior (output) is different from others Write-Host 'App Update Completed Successfully' diff --git a/deployment/Limited-Install-Deploy.ps1 b/deployment/Limited-Install-Deploy.ps1 index a6eeb91d..937cb3bb 100644 --- a/deployment/Limited-Install-Deploy.ps1 +++ b/deployment/Limited-Install-Deploy.ps1 @@ -13,8 +13,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "TZ_policy_validation", - [string]$AppName = "TZ_policy_val_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "TZ_policy_validation1", + [string]$AppName = "TZ_policy_val1_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null @@ -34,8 +34,8 @@ process { #endregion #application ID and uri - $clientId = "1ea637ca-5c43-4742-b590-f3c084af99d2" - $apiURI = "api://1ea637ca-5c43-4742-b590-f3c084af99d2" + $clientId = "cb508fc8-6a5f-49b1-b688-dac065ba59e4" + $apiURI = "api://cb508fc8-6a5f-49b1-b688-dac065ba59e4" #region Show Learn LTI Banner Write-Host '' diff --git a/deployment/azuredeploy.json b/deployment/azuredeploy.json index dcca3e50..ea996830 100644 --- a/deployment/azuredeploy.json +++ b/deployment/azuredeploy.json @@ -248,7 +248,9 @@ "WEBSITE_CONTENTSHARE": "[toLower(concat('users' , variables('ProjectNameSuffix')))]", "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('users' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", - "WEBSITE_RUN_FROM_PACKAGE": "1" + "WEBSITE_RUN_FROM_PACKAGE": "1", + "ValidAudience": "f7089027-f1fe-47c7-850b-32e8bed4bc0a", + "OpenIdConfigurationUrl": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin/v2.0/.well-known/openid-configuration" } }, { @@ -259,22 +261,24 @@ "dependsOn": [ "[resourceId('Microsoft.Web/sites', concat('assignments' , variables('ProjectNameSuffix')))]" ], - "properties": { - "AuthUrl": "[parameters('appRegistrationApiURI')]", - "DidDeployWork": "true", - "AzureB2C_AUTHENTICATION_SECRET": "jHr8Q~tEPWGJBdBtNn0MNfZRXUZjpGghi~6zBalB", - "PlatformsServiceUrl": "[concat('https://','platforms' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", - "UsersServiceUrl": "[concat('https://','users' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", - "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", - "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('assignments' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('assignments' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", - "FUNCTIONS_EXTENSION_VERSION": "~3", - "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components', concat('assignments' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]", - "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat('assignments' , variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('assignments' , variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]", - "WEBSITE_CONTENTSHARE": "[toLower(concat('assignments' , variables('ProjectNameSuffix')))]", - "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('assignments' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", - "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", - "WEBSITE_RUN_FROM_PACKAGE": "1" - } + "properties": { + "AuthUrl": "[parameters('appRegistrationApiURI')]", + "DidDeployWork": "true", + "AzureB2C_AUTHENTICATION_SECRET": "jHr8Q~tEPWGJBdBtNn0MNfZRXUZjpGghi~6zBalB", + "PlatformsServiceUrl": "[concat('https://','platforms' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", + "UsersServiceUrl": "[concat('https://','users' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", + "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", + "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('assignments' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('assignments' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", + "FUNCTIONS_EXTENSION_VERSION": "~3", + "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components', concat('assignments' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]", + "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat('assignments' , variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('assignments' , variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]", + "WEBSITE_CONTENTSHARE": "[toLower(concat('assignments' , variables('ProjectNameSuffix')))]", + "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('assignments' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", + "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", + "WEBSITE_RUN_FROM_PACKAGE": "1", + "ValidAudience": "f7089027-f1fe-47c7-850b-32e8bed4bc0a", + "OpenIdConfigurationUrl": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin/v2.0/.well-known/openid-configuration" + } }, { "name": "[concat('platforms' , variables('ProjectNameSuffix'),'/appsettings')]", @@ -284,22 +288,24 @@ "dependsOn": [ "[resourceId('Microsoft.Web/sites', concat('platforms' , variables('ProjectNameSuffix')))]" ], - "properties": { - "AllowedUsers": "[parameters('userEmailAddress')]", - "AzureB2C_AUTHENTICATION_SECRET": "jHr8Q~tEPWGJBdBtNn0MNfZRXUZjpGghi~6zBalB", - "AuthUrl": "[parameters('appRegistrationApiURI')]", - "DidDeployWork": "true", - "ConnectApiBaseUrl": "[concat('https://','connect' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", - "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", - "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('platforms' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('platforms' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", - "FUNCTIONS_EXTENSION_VERSION": "~3", - "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components', concat('platforms' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]", - "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat('platforms' , variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('platforms' , variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]", - "WEBSITE_CONTENTSHARE": "[toLower(concat('platforms' , variables('ProjectNameSuffix')))]", - "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('platforms' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", - "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", - "WEBSITE_RUN_FROM_PACKAGE": "1" - } + "properties": { + "AllowedUsers": "[parameters('userEmailAddress')]", + "AzureB2C_AUTHENTICATION_SECRET": "jHr8Q~tEPWGJBdBtNn0MNfZRXUZjpGghi~6zBalB", + "AuthUrl": "[parameters('appRegistrationApiURI')]", + "DidDeployWork": "true", + "ConnectApiBaseUrl": "[concat('https://','connect' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", + "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", + "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('platforms' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('platforms' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", + "FUNCTIONS_EXTENSION_VERSION": "~3", + "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components', concat('platforms' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]", + "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat('platforms' , variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('platforms' , variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]", + "WEBSITE_CONTENTSHARE": "[toLower(concat('platforms' , variables('ProjectNameSuffix')))]", + "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('platforms' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", + "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", + "WEBSITE_RUN_FROM_PACKAGE": "1", + "ValidAudience": "f7089027-f1fe-47c7-850b-32e8bed4bc0a", + "OpenIdConfigurationUrl": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin/v2.0/.well-known/openid-configuration" + } }, { "name": "[concat('links', variables('ProjectNameSuffix'), '/appsettings')]", @@ -321,7 +327,9 @@ "WEBSITE_CONTENTSHARE": "[toLower(concat('links' , variables('ProjectNameSuffix')))]", "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('links' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", - "WEBSITE_RUN_FROM_PACKAGE": "1" + "WEBSITE_RUN_FROM_PACKAGE": "1", + "ValidAudience": "f7089027-f1fe-47c7-850b-32e8bed4bc0a", + "OpenIdConfigurationUrl": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin/v2.0/.well-known/openid-configuration" } }, { @@ -344,7 +352,9 @@ "WEBSITE_CONTENTSHARE": "[toLower(concat('learncontent' , variables('ProjectNameSuffix')))]", "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('learncontent' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", - "WEBSITE_RUN_FROM_PACKAGE": "1" + "WEBSITE_RUN_FROM_PACKAGE": "1", + "ValidAudience": "f7089027-f1fe-47c7-850b-32e8bed4bc0a", + "OpenIdConfigurationUrl": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin/v2.0/.well-known/openid-configuration" } }, { From ec15978e883b15059cc8407d2c54ddf35d00bf81 Mon Sep 17 00:00:00 2001 From: Tianchen Zhang Date: Tue, 26 Jul 2022 11:28:39 +0100 Subject: [PATCH 111/285] fix: update function call to the TryGet methods --- .../Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs b/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs index b6028882..f5356113 100644 --- a/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs +++ b/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs @@ -87,7 +87,7 @@ public async Task SaveAssignmentLearnContent( { if (!await req.Headers.ValidateToken(OpenIdConfigurationUrl, ValidAudience, message => _logger.LogError(message))) return new UnauthorizedResult(); - bool isSystemCallOrUserWithValidEmail = req.Headers.TryGetUserEmails(out List userEmails, ValidAudience, ValidIssuer, JwksURI); + bool isSystemCallOrUserWithValidEmail = req.Headers.TryGetUserEmails(out List userEmails); if (!isSystemCallOrUserWithValidEmail) { _logger.LogError("Could not get user email."); @@ -131,7 +131,7 @@ public async Task RemoveAssignmentLearnContent( { if (!await req.Headers.ValidateToken(OpenIdConfigurationUrl, ValidAudience, message => _logger.LogError(message))) return new UnauthorizedResult(); - bool isSystemCallOrUserWithValidEmail = req.Headers.TryGetUserEmails(out List userEmails, ValidAudience, ValidIssuer, JwksURI); + bool isSystemCallOrUserWithValidEmail = req.Headers.TryGetUserEmails(out List userEmails); if (!isSystemCallOrUserWithValidEmail) { _logger.LogError("Could not get user email."); From 517df13a16950f8ef5c128123d776f3d7e096f36 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Tue, 26 Jul 2022 12:45:10 +0100 Subject: [PATCH 112/285] Fixed issue in B2CCleanup not removing facebook secret; and added to choice to run b2c or not from cleanup.ps1 --- deployment/B2CCleanup.ps1 | 6 ++---- deployment/Cleanup.ps1 | 14 ++++++-------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/deployment/B2CCleanup.ps1 b/deployment/B2CCleanup.ps1 index ff1b35f6..26fca6a6 100644 --- a/deployment/B2CCleanup.ps1 +++ b/deployment/B2CCleanup.ps1 @@ -68,7 +68,7 @@ $response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/k Write-Host "Deleting B2C_1A_AADAppSecret keyset" $response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets/B2C_1A_AADAppSecret' -Method 'DELETE' -Headers $headers Write-Host "Deleting B2C_1A_FacebookSecret" -$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/policies/B2C_1A_FacebookSecret' -Method 'DELETE' -Headers $headers +$response = Invoke-RestMethod 'https://graph.microsoft.com/beta/trustFramework/keySets/B2C_1A_FacebookSecret' -Method 'DELETE' -Headers $headers #endregion #region "STEP 4: Deleting the generated applications" @@ -87,6 +87,4 @@ foreach ($info in $AppInfo) { Write-Host "Deleting $id from $tid" az ad app delete --id $id --only-show-errors } -#endregion - -$exit = Read-Host "Press enter to exit" \ No newline at end of file +#endregion \ No newline at end of file diff --git a/deployment/Cleanup.ps1 b/deployment/Cleanup.ps1 index 785fb94e..45a11b16 100644 --- a/deployment/Cleanup.ps1 +++ b/deployment/Cleanup.ps1 @@ -5,13 +5,8 @@ [CmdletBinding()] param ( -<<<<<<< HEAD [string]$ResourceGroupName = "DM_ad4_MSLearnLTI", [string]$AppName = "DM_ad4_MS-Learn-Lti-Tool-App", -======= - [string]$ResourceGroupName = "RB_policy2_MSLearnLTI", - [string]$AppName = "RB_policy2_MS-Learn-Lti-Tool-App", ->>>>>>> fd274f1832dcfa17487d03f791d151129b189792 [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null ) @@ -48,9 +43,12 @@ process { Start-Transcript -Path $TranscriptFile; #endregion - - Write-Title "Step #0 - Running B2C Cleanup Script" - & ".\B2CCleanup.ps1" + $choice = Read-Host "Do you have a b2c tenant to cleanup in addition to your ad tenant? (y/n)" + if ($choice -eq "y") { + Write-Title "Step #0 - Running B2C Cleanup Script" + & ".\B2CCleanup.ps1" + } + #region Login to Azure CLI From d6415ffcba71fb4223e74ef7ef35c79532703ab6 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Tue, 26 Jul 2022 12:48:20 +0100 Subject: [PATCH 113/285] B2C auth works --- client/.env.development | 6 +++--- client/.env.production | 6 +++--- client/src/App.tsx | 5 +---- client/src/Core/Auth/AppAuthConfig.ts | 11 +++++++++++ .../Core/Auth/AxiosBasicAuthInitializer.tsx | 5 +---- client/src/Core/Auth/policies.ts | 18 ++++++++---------- 6 files changed, 27 insertions(+), 24 deletions(-) diff --git a/client/.env.development b/client/.env.development index 360ff8cd..1ad0bd71 100644 --- a/client/.env.development +++ b/client/.env.development @@ -7,6 +7,6 @@ REACT_APP_EDNA_LINKS_SERVICE_URL="http://localhost:7073/api" REACT_APP_EDNA_LEARN_CONTENT="http://localhost:7074/api" REACT_APP_EDNA_USERS_SERVICE_URL="http://localhost:7075/api" REACT_APP_EDNA_PLATFORM_SERVICE_URL="http://localhost:7072/api" -REACT_APP_EDNA_B2C_CLIENT_ID=NULL -REACT_APP_EDNA_B2C_TENANT=NULL -REACT_APP_EDNA_AUTH_CLIENT_ID=NULL +REACT_APP_EDNA_B2C_CLIENT_ID='0cd1d1d6-a7aa-41e2-b569-1ca211147973' +REACT_APP_EDNA_B2C_TENANT='ltimoodleb2c' +REACT_APP_EDNA_AUTH_CLIENT_ID='0cd1d1d6-a7aa-41e2-b569-1ca211147973' diff --git a/client/.env.production b/client/.env.production index b69b4f10..8ea93fbc 100644 --- a/client/.env.production +++ b/client/.env.production @@ -8,6 +8,6 @@ REACT_APP_EDNA_TENANT_ID='21510bb9-6414-46d0-9a07-1faf98f25937' REACT_APP_EDNA_DEFAULT_SCOPE='api://8536df83-6587-4a24-87cc-62a917ad17f8/user_impersonation' REACT_APP_EDNA_MAIN_URL='https://learnclientofdd7tsmz.z33.web.core.windows.net/' REACT_APP_EDNA_AAD_CLIENT_ID='8536df83-6587-4a24-87cc-62a917ad17f8' -REACT_APP_EDNA_B2C_CLIENT_ID=NULL -REACT_APP_EDNA_B2C_TENANT=NULL -REACT_APP_EDNA_AUTH_CLIENT_ID=NULL +REACT_APP_EDNA_B2C_CLIENT_ID='0cd1d1d6-a7aa-41e2-b569-1ca211147973' +REACT_APP_EDNA_B2C_TENANT='ltimoodleb2c' +REACT_APP_EDNA_AUTH_CLIENT_ID='0cd1d1d6-a7aa-41e2-b569-1ca211147973' diff --git a/client/src/App.tsx b/client/src/App.tsx index 3c603508..dee5a8d2 100644 --- a/client/src/App.tsx +++ b/client/src/App.tsx @@ -13,7 +13,7 @@ import { MainLayout } from './Core/Components/MainLayout'; import { GlobalRouter } from './Router/GlobalRouter'; import { registerIcons, loadTheme } from '@uifabric/styling'; import { fabricIconsData } from './Assets/Fonts/FabricIconsData'; -import { AppAuthConfig } from './Core/Auth/AppAuthConfig'; +import { AppAuthConfig, request } from './Core/Auth/AppAuthConfig'; import { initializeIcons } from '@fluentui/react'; import { appTheme } from './Core/Themes/MainTheme'; import { PlatformPage } from './Features/Platform/PlatformPage'; @@ -28,9 +28,6 @@ function App() { registerIcons(fabricIconsData); initializeIcons(); loadTheme(appTheme); - const request = { - scopes: ['openid', 'profile', 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read'] - }; return ( diff --git a/client/src/Core/Auth/AppAuthConfig.ts b/client/src/Core/Auth/AppAuthConfig.ts index dec54c4a..c5f1a48f 100644 --- a/client/src/Core/Auth/AppAuthConfig.ts +++ b/client/src/Core/Auth/AppAuthConfig.ts @@ -56,6 +56,17 @@ const config: Configuration = { } }; +export let request; +if (process.env.REACT_APP_EDNA_B2C_TENANT! != null) { + request = { + scopes: ['openid', 'profile', 'https://' + process.env.REACT_APP_EDNA_B2C_TENANT! + '.onmicrosoft.com/api/b2c.read'] + }; +} else { + request = { + scopes: [process.env.REACT_APP_EDNA_DEFAULT_SCOPE!] + }; +} + // Todo, may no longer be neccessary // const authParams: AuthenticationParameters = { // //scopes: ['https://' + process.env.REACT_APP_EDNA_B2C_TENANT! + '.onmicrosoft.com/api/b2c.read'] // RB: 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read' diff --git a/client/src/Core/Auth/AxiosBasicAuthInitializer.tsx b/client/src/Core/Auth/AxiosBasicAuthInitializer.tsx index b0cb266e..7932157c 100644 --- a/client/src/Core/Auth/AxiosBasicAuthInitializer.tsx +++ b/client/src/Core/Auth/AxiosBasicAuthInitializer.tsx @@ -7,15 +7,12 @@ import React, { PropsWithChildren, useState, useEffect } from 'react'; import axios from 'axios'; import { useMsal } from '@azure/msal-react'; import { InteractionRequiredAuthError } from '@azure/msal-browser'; +import { request } from './AppAuthConfig'; export const AxiosBasicAuthInitializer = ({ children }: PropsWithChildren<{}>): JSX.Element => { const { instance, accounts } = useMsal(); const [isTokenLoaded, setIsTokenLoaded] = useState(false); const [accessToken, setAccessToken] = useState(null); - const request = { - scopes: ['https://ltimoodleb2c.onmicrosoft.com/api/b2c.read', 'profile', 'openid'], - account: accounts[0] - }; // Called everytime time the LTI app is accessed to authenticate the user before allowing access. diff --git a/client/src/Core/Auth/policies.ts b/client/src/Core/Auth/policies.ts index 80c6b3ac..705d8226 100644 --- a/client/src/Core/Auth/policies.ts +++ b/client/src/Core/Auth/policies.ts @@ -11,16 +11,14 @@ export const b2cPolicies = { }, authorities: { signIn: { - authority: `https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/B2C_1A_SIGNIN` // custom policy - // authority: `https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/B2C_1_signup_signin_LTI` // user flow - // user flow: - // `https://` + - // process.env.REACT_APP_EDNA_B2C_TENANT! + - // `.b2clogin.com/` + - // process.env.REACT_APP_EDNA_B2C_TENANT! + - // '.onmicrosoft.com/b2c_1a_signup_signin' + authority: + `https://` + + process.env.REACT_APP_EDNA_B2C_TENANT! + + `.b2clogin.com/` + + process.env.REACT_APP_EDNA_B2C_TENANT! + + '.onmicrosoft.com/b2c_1a_signin' } }, - authorityDomain: `ltimoodleb2c.b2clogin.com` - //authorityDomain: process.env.REACT_APP_EDNA_B2C_TENANT! + `.b2clogin.com` // RB: don't hardcode + //authorityDomain: `ltimoodleb2c.b2clogin.com` + authorityDomain: process.env.REACT_APP_EDNA_B2C_TENANT! + `.b2clogin.com` // RB: don't hardcode }; From ac66bc328a7a418c230aca0793b48b4d701bfc73 Mon Sep 17 00:00:00 2001 From: Sundram Goyal Date: Tue, 26 Jul 2022 13:42:36 +0100 Subject: [PATCH 114/285] Cleanup doc update --- deployment/B2C_Docs/B2C_Cleanup.md | 8 ++++++++ docs/TROUBLESHOOTING.md | 5 +++++ images/b2cclean.png | Bin 0 -> 86510 bytes 3 files changed, 13 insertions(+) create mode 100644 images/b2cclean.png diff --git a/deployment/B2C_Docs/B2C_Cleanup.md b/deployment/B2C_Docs/B2C_Cleanup.md index fa21c723..3d395f0e 100644 --- a/deployment/B2C_Docs/B2C_Cleanup.md +++ b/deployment/B2C_Docs/B2C_Cleanup.md @@ -6,6 +6,14 @@ * Pink background = user inputted value ## Starting The Script +There are 2 ways to cleanup B2C: + +### 1. Running the B2C cleanup script from LTI cleanup (Recommended) + +Follow the steps in [LTI troubleshooting guide](https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/blob/consolidated_deploy_branch/docs/TROUBLESHOOTING.md) for cleanup and it will automatically direct you to the following steps. + +### 2. Running the B2C cleanup script manually (if you want to remove only B2C resources) + * Load Learn-LTI/Deployment into Windows File Explorer * **Hold shift** and right click in the file explorer to launch the Expanded Context Menu * Click "Open Powershell Window Here" to launch powershell with cd already set to Learn-Lti/Deployment diff --git a/docs/TROUBLESHOOTING.md b/docs/TROUBLESHOOTING.md index 970b992f..e6767f5d 100644 --- a/docs/TROUBLESHOOTING.md +++ b/docs/TROUBLESHOOTING.md @@ -41,6 +41,11 @@ If you have changed the name of the Resource Group or AppName simply replace the Ensure you [purge your keyvault]( https://github.com/microsoft/Learn-LTI/blob/main/docs/TROUBLESHOOTING.md#purging-key-vaults) before running the setup script again +**Note:** By running [cleanup.bat](https://github.com/microsoft/Learn-LTI/blob/main/deployment/cleanup.bat), if you have B2C authentication, the script will ask for this to remove the B2C tenant as well as shown below: +![b2cclean.png](/images/b2cclean.png) + +After this step, you can follow this [guide](https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/blob/consolidated_deploy_branch/deployment/B2C_Docs/B2C_Cleanup.md) to remove B2C tenant from your app. + ## Check the Failed Deployment status and output From the Azure Portal, simply select deployments. See the following screenshot. diff --git a/images/b2cclean.png b/images/b2cclean.png new file mode 100644 index 0000000000000000000000000000000000000000..62a60a163f9ea69c477f74d4bd8199d06c0583b9 GIT binary patch literal 86510 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

    6c;TX&L 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 Date: Tue, 26 Jul 2022 14:04:31 +0100 Subject: [PATCH 115/285] Add the claim "_isB2CToken" to B2C_1A_signin.xml --- deployment/CustomPolicyTemplates/B2C_1A_signin.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/deployment/CustomPolicyTemplates/B2C_1A_signin.xml b/deployment/CustomPolicyTemplates/B2C_1A_signin.xml index 920cb0b3..34b61b4e 100644 --- a/deployment/CustomPolicyTemplates/B2C_1A_signin.xml +++ b/deployment/CustomPolicyTemplates/B2C_1A_signin.xml @@ -16,6 +16,7 @@ + From 87e9d6c0c68caba21220fc6e16919fb182320452 Mon Sep 17 00:00:00 2001 From: Tianchen Zhang Date: Tue, 26 Jul 2022 14:20:53 +0100 Subject: [PATCH 116/285] fix: update client id and dependencies versions --- .../Edna.Bindings.LtiAdvantage.csproj | 2 +- .../LtiAdvantage/LtiAdvantage/LtiAdvantage.csproj | 2 +- deployment/azuredeploy.json | 10 +++++----- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/backend/Bindings/Edna.Bindings.LtiAdvantage/Edna.Bindings.LtiAdvantage.csproj b/backend/Bindings/Edna.Bindings.LtiAdvantage/Edna.Bindings.LtiAdvantage.csproj index 7065c569..1047909e 100644 --- a/backend/Bindings/Edna.Bindings.LtiAdvantage/Edna.Bindings.LtiAdvantage.csproj +++ b/backend/Bindings/Edna.Bindings.LtiAdvantage/Edna.Bindings.LtiAdvantage.csproj @@ -12,7 +12,7 @@ - + diff --git a/backend/ThirdParty/LtiAdvantage/LtiAdvantage/LtiAdvantage.csproj b/backend/ThirdParty/LtiAdvantage/LtiAdvantage/LtiAdvantage.csproj index 644ff9d7..8d5192a0 100644 --- a/backend/ThirdParty/LtiAdvantage/LtiAdvantage/LtiAdvantage.csproj +++ b/backend/ThirdParty/LtiAdvantage/LtiAdvantage/LtiAdvantage.csproj @@ -22,7 +22,7 @@ - + diff --git a/deployment/azuredeploy.json b/deployment/azuredeploy.json index ea996830..79a6bdcb 100644 --- a/deployment/azuredeploy.json +++ b/deployment/azuredeploy.json @@ -249,7 +249,7 @@ "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('users' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", "WEBSITE_RUN_FROM_PACKAGE": "1", - "ValidAudience": "f7089027-f1fe-47c7-850b-32e8bed4bc0a", + "ValidAudience": "0cd1d1d6-a7aa-41e2-b569-1ca211147973", "OpenIdConfigurationUrl": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin/v2.0/.well-known/openid-configuration" } }, @@ -276,7 +276,7 @@ "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('assignments' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", "WEBSITE_RUN_FROM_PACKAGE": "1", - "ValidAudience": "f7089027-f1fe-47c7-850b-32e8bed4bc0a", + "ValidAudience": "0cd1d1d6-a7aa-41e2-b569-1ca211147973", "OpenIdConfigurationUrl": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin/v2.0/.well-known/openid-configuration" } }, @@ -303,7 +303,7 @@ "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('platforms' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", "WEBSITE_RUN_FROM_PACKAGE": "1", - "ValidAudience": "f7089027-f1fe-47c7-850b-32e8bed4bc0a", + "ValidAudience": "0cd1d1d6-a7aa-41e2-b569-1ca211147973", "OpenIdConfigurationUrl": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin/v2.0/.well-known/openid-configuration" } }, @@ -328,7 +328,7 @@ "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('links' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", "WEBSITE_RUN_FROM_PACKAGE": "1", - "ValidAudience": "f7089027-f1fe-47c7-850b-32e8bed4bc0a", + "ValidAudience": "0cd1d1d6-a7aa-41e2-b569-1ca211147973", "OpenIdConfigurationUrl": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin/v2.0/.well-known/openid-configuration" } }, @@ -353,7 +353,7 @@ "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('learncontent' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", "WEBSITE_RUN_FROM_PACKAGE": "1", - "ValidAudience": "f7089027-f1fe-47c7-850b-32e8bed4bc0a", + "ValidAudience": "0cd1d1d6-a7aa-41e2-b569-1ca211147973", "OpenIdConfigurationUrl": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin/v2.0/.well-known/openid-configuration" } }, From d1203f3f9d99dfe1efe986067a043d2b7cb87f0c Mon Sep 17 00:00:00 2001 From: DuyNguyen19993010 Date: Tue, 26 Jul 2022 17:38:31 +0100 Subject: [PATCH 117/285] Gitignore fix --- deployment/.gitignore | 4 +- deployment/azuredeployADtemplate.json | 552 +++++++++++++++++++++++++ deployment/azuredeployB2CTemplate.json | 552 +++++++++++++++++++++++++ 3 files changed, 1105 insertions(+), 3 deletions(-) create mode 100644 deployment/azuredeployADtemplate.json create mode 100644 deployment/azuredeployB2CTemplate.json diff --git a/deployment/.gitignore b/deployment/.gitignore index 0de51a3a..db662785 100644 --- a/deployment/.gitignore +++ b/deployment/.gitignore @@ -1,8 +1,6 @@ -*Temp* +Temp* CustomPolicy/* manifest.json AppInfo.csv b2cSavedParams.csv -.env.production -.env.development azuredeploy.json \ No newline at end of file diff --git a/deployment/azuredeployADtemplate.json b/deployment/azuredeployADtemplate.json new file mode 100644 index 00000000..63ee3e88 --- /dev/null +++ b/deployment/azuredeployADtemplate.json @@ -0,0 +1,552 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "appRegistrationClientId": { + "type": "string", + "defaultValue": "dc0fcdd9-727f-47a3-8f15-4dcb813919fc" + }, + "appRegistrationApiURI": { + "type": "string", + "defaultValue": "api://10ef1e6b-1171-4888-92d5-c661b428796b" + }, + "userEmailAddress": { + "type": "string", + "defaultValue": "user@microsoft.com" + }, + "userObjectId": { + "type": "string", + "defaultValue": "" + } + }, + "variables": { + "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, '20220725051843'),0,9)]", + "functionList": [ + "connect", + "assignments", + "learncontent", + "links", + "platforms", + "users" + ], + "AzureB2C_AUTHENTICATION_SECRET": "", + "enabledForDeployment": false, + "enabledForDiskEncryption": false, + "enabledForTemplateDeployment": false, + "tenantId": "[subscription().tenantId]", + "skuName": "Standard", + "location": "[resourceGroup().location]", + "runtimeStack": "dotnet", + "resourceGroupName": "[resourceGroup().name]", + "StorageAccountSuffix": "[toLower(replace(variables('uniqueIdentifier'),'-',''))]", + "ProjectNameSuffix": "[concat('-', variables('StorageAccountSuffix'))]", + "staticWebsite": "[toLower(concat('learnclient', variables('StorageAccountSuffix')))]", + "keyVaultName": "[toLower(concat('kv', variables('ProjectNameSuffix')))]", + "KeyVaultAuditLogsStorageAccountName": "[toLower(concat('kv' , variables('StorageAccountSuffix'), 'auditlogs'))]", + "readerRoleDefinitionId": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]", + "KVKeyPermissions": [ + "encrypt", + "decrypt", + "wrapKey", + "unwrapKey", + "sign", + "verify", + "get" + ] + }, + "resources": [ + { + "type": "Microsoft.Web/sites", + "apiVersion": "2019-08-01", + "name": "[concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix'))]", + "location": "[variables('location')]", + "dependsOn": [ + "[resourceId('Microsoft.Web/serverfarms', concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix')))]", + "[resourceId('Microsoft.Storage/storageAccounts', concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('StorageAccountSuffix')))]", + "[resourceId('microsoft.insights/components', concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix')))]" + ], + "kind": "functionapp", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "httpsOnly": true, + "siteConfig": { + "appSettings": [ + { + "name": "FUNCTIONS_WORKER_RUNTIME", + "value": "[variables('runtimeStack')]" + }, + { + "name": "AzureWebJobsStorage", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]" + }, + { + "name": "FUNCTIONS_EXTENSION_VERSION", + "value": "~3" + }, + { + "name": "APPINSIGHTS_INSTRUMENTATIONKEY", + "value": "[reference(resourceId('microsoft.insights/components', concat(variables('functionList')[copyIndex('FunctionatIndex')] , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]" + }, + { + "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]" + }, + { + "name": "WEBSITE_CONTENTSHARE", + "value": "[toLower(concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix')))]" + }, + { + "name": "APPLICATIONINSIGHTS_CONNECTION_STRING", + "value": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]" + }, + { + "name": "WEBSITE_ENABLE_SYNC_UPDATE_SITE", + "value": "true" + }, + { + "name": "WEBSITE_RUN_FROM_PACKAGE", + "value": "1" + } + ], + "cors": { + "allowedOrigins": [ + "[substring(reference(resourceId('Microsoft.Storage/storageAccounts/', variables('staticWebsite'))).primaryEndpoints.web,0,sub(length(reference(resourceId('Microsoft.Storage/storageAccounts/', variables('staticWebsite'))).primaryEndpoints.web),1))]" + ] + }, + "ftpsState": "Disabled", + "minTlsVersion": "1.2" + }, + "name": "[concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix'))]", + "clientAffinityEnabled": false, + "serverFarmId": "[resourceId('Microsoft.Web/serverfarms/',concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix')))]" + }, + "copy": { + "name": "FunctionatIndex", + "count": "[length(variables('functionList'))]" + } + }, + { + "name": "[concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix'),'/authsettingsV2')]", + "apiVersion": "2021-03-01", + "type": "Microsoft.Web/sites/config", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Web/sites', concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix')))]" + ], + "properties": { + "platform": { + "enabled": "[if(equals(concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix')),concat('connect', variables('ProjectNameSuffix'))), 'false', 'true')]", + "runtimeVersion": "~1" + }, + "globalValidation": { + "requireAuthentication": true, + "unauthenticatedClientAction": "RedirectToLoginPage", + "redirectToProvider": "AzureB2C" + }, + "identityProviders": { + "azureActiveDirectory": { + "enabled": true, + "registration": { + "openIdIssuer": "[concat('https://sts.windows.net/', variables('tenantId'), '/')]", + "clientId": "[parameters('appRegistrationClientId')]" + }, + "validation": { + "jwtClaimChecks": {}, + "allowedAudiences": [ + "[parameters('appRegistrationApiURI')]" + ], + "defaultAuthorizationPolicy": { + "allowedPrincipals": {} + } + } + }, + "customOpenIdConnectProviders": { + "AzureB2C": { + "registration": { + "clientId": "0cd1d1d6-a7aa-41e2-b569-1ca211147973", + "clientCredential": { + "clientSecretSettingName": "AzureB2C_AUTHENTICATION_SECRET" + }, + "openIdConnectConfiguration": { + "wellKnownOpenIdConfiguration": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/B2C_1_signup_signin_LTI/v2.0/.well-known/openid-configuration" + } + } + } + } + }, + "login": { + "tokenStore": { + "enabled": true + }, + "preserveUrlFragmentsForLogins": false + } + }, + "copy": { + "name": "FunctionatIndex", + "count": "[length(variables('functionList'))]" + } + }, + { + "name": "[concat('connect', variables('ProjectNameSuffix'), '/appsettings')]", + "apiVersion": "2018-11-01", + "type": "Microsoft.Web/sites/config", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Web/sites', concat('connect' , variables('ProjectNameSuffix')))]" + ], + "properties": { + "AuthUrl": "[parameters('appRegistrationApiURI')]", + "DidDeployWork": "true", + "AzureB2C_AUTHENTICATION_SECRET": "[variables('AzureB2C_AUTHENTICATION_SECRET')]", + "AssignmentsServiceUrl": "[concat('https://', 'assignments' , variables('ProjectNameSuffix'), '.azurewebsites.net/api/')]", + "Lti1Secret": "LearnLTI", + "PlatformsServiceUrl": "[concat('https://', 'platforms', variables('ProjectNameSuffix'), '.azurewebsites.net/api/')]", + "RedirectUrl": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('staticWebsite'))).primaryEndpoints.web]", + "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", + "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('connect' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('connect' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", + "FUNCTIONS_EXTENSION_VERSION": "~3", + "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components', concat('connect' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]", + "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat('connect' , variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('connect' , variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]", + "WEBSITE_CONTENTSHARE": "[toLower(concat('connect' , variables('ProjectNameSuffix')))]", + "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('connect' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", + "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", + "WEBSITE_RUN_FROM_PACKAGE": "1" + } + }, + { + "name": "[concat('users', variables('ProjectNameSuffix'), '/appsettings')]", + "apiVersion": "2018-11-01", + "type": "Microsoft.Web/sites/config", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Web/sites', concat('users', variables('ProjectNameSuffix')))]" + ], + "properties": { + "AuthUrl": "[parameters('appRegistrationApiURI')]", + "AzureB2C_AUTHENTICATION_SECRET": "[variables('AzureB2C_AUTHENTICATION_SECRET')]", + "AssignmentsServiceUrl": "[concat('https://', 'assignments', variables('ProjectNameSuffix'), '.azurewebsites.net/api/')]", + "Lti1Secret": "LearnLTI", + "PlatformsServiceUrl": "[concat('https://', 'platforms', variables('ProjectNameSuffix'), '.azurewebsites.net/api/')]", + "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", + "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('users' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('users' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", + "FUNCTIONS_EXTENSION_VERSION": "~3", + "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components', concat('users' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]", + "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat('users' , variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('users' , variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]", + "WEBSITE_CONTENTSHARE": "[toLower(concat('users' , variables('ProjectNameSuffix')))]", + "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('users' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", + "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", + "WEBSITE_RUN_FROM_PACKAGE": "1" + } + }, + { + "name": "[concat('assignments' , variables('ProjectNameSuffix'), '/appsettings')]", + "apiVersion": "2018-11-01", + "type": "Microsoft.Web/sites/config", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Web/sites', concat('assignments' , variables('ProjectNameSuffix')))]" + ], + "properties": { + "AuthUrl": "[parameters('appRegistrationApiURI')]", + "DidDeployWork": "true", + "AzureB2C_AUTHENTICATION_SECRET": "[variables('AzureB2C_AUTHENTICATION_SECRET')]", + "PlatformsServiceUrl": "[concat('https://','platforms' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", + "UsersServiceUrl": "[concat('https://','users' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", + "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", + "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('assignments' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('assignments' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", + "FUNCTIONS_EXTENSION_VERSION": "~3", + "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components', concat('assignments' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]", + "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat('assignments' , variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('assignments' , variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]", + "WEBSITE_CONTENTSHARE": "[toLower(concat('assignments' , variables('ProjectNameSuffix')))]", + "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('assignments' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", + "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", + "WEBSITE_RUN_FROM_PACKAGE": "1" + } + }, + { + "name": "[concat('platforms' , variables('ProjectNameSuffix'),'/appsettings')]", + "apiVersion": "2018-11-01", + "type": "Microsoft.Web/sites/config", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Web/sites', concat('platforms' , variables('ProjectNameSuffix')))]" + ], + "properties": { + "AllowedUsers": "[parameters('userEmailAddress')]", + "AzureB2C_AUTHENTICATION_SECRET": "[variables('AzureB2C_AUTHENTICATION_SECRET')]", + "AuthUrl": "[parameters('appRegistrationApiURI')]", + "DidDeployWork": "true", + "ConnectApiBaseUrl": "[concat('https://','connect' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", + "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", + "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('platforms' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('platforms' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", + "FUNCTIONS_EXTENSION_VERSION": "~3", + "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components', concat('platforms' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]", + "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat('platforms' , variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('platforms' , variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]", + "WEBSITE_CONTENTSHARE": "[toLower(concat('platforms' , variables('ProjectNameSuffix')))]", + "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('platforms' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", + "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", + "WEBSITE_RUN_FROM_PACKAGE": "1" + } + }, + { + "name": "[concat('links', variables('ProjectNameSuffix'), '/appsettings')]", + "apiVersion": "2018-11-01", + "type": "Microsoft.Web/sites/config", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Web/sites', concat('links' , variables('ProjectNameSuffix')))]" + ], + "properties": { + "AuthUrl": "[parameters('appRegistrationApiURI')]", + "AzureB2C_AUTHENTICATION_SECRET": "[variables('AzureB2C_AUTHENTICATION_SECRET')]", + "UsersServiceUrl": "[concat('https://','users' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", + "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", + "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('links' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('links' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", + "FUNCTIONS_EXTENSION_VERSION": "~3", + "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components', concat('links' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]", + "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat('links' , variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('links' , variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]", + "WEBSITE_CONTENTSHARE": "[toLower(concat('links' , variables('ProjectNameSuffix')))]", + "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('links' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", + "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", + "WEBSITE_RUN_FROM_PACKAGE": "1" + } + }, + { + "name": "[concat('learncontent', variables('ProjectNameSuffix'), '/appsettings')]", + "apiVersion": "2018-11-01", + "type": "Microsoft.Web/sites/config", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Web/sites', concat('learncontent' , variables('ProjectNameSuffix')))]" + ], + "properties": { + "AuthUrl": "[parameters('appRegistrationApiURI')]", + "AzureB2C_AUTHENTICATION_SECRET": "[variables('AzureB2C_AUTHENTICATION_SECRET')]", + "UsersServiceUrl": "[concat('https://','users' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", + "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", + "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('learncontent' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('learncontent' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", + "FUNCTIONS_EXTENSION_VERSION": "~3", + "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components', concat('learncontent' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]", + "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat('learncontent' , variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('learncontent' , variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]", + "WEBSITE_CONTENTSHARE": "[toLower(concat('learncontent' , variables('ProjectNameSuffix')))]", + "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('learncontent' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", + "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", + "WEBSITE_RUN_FROM_PACKAGE": "1" + } + }, + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2019-08-01", + "name": "[concat(variables('functionList')[copyIndex('FunctionatIndex')] , variables('ProjectNameSuffix'))]", + "location": "[variables('location')]", + "sku": { + "name": "Y1", + "tier": "Dynamic", + "size": "Y1", + "family": "Y", + "capacity": 0 + }, + "properties": { + "name": "[concat(variables('functionList')[copyIndex('FunctionatIndex')] , variables('ProjectNameSuffix'))]" + }, + "copy": { + "name": "FunctionatIndex", + "count": "[length(variables('functionList'))]" + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-04-01", + "name": "[variables('staticWebsite')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS", + "tier": "Standard" + }, + "kind": "StorageV2" + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "[concat(variables('functionList')[copyIndex('FunctionatIndex')] , variables('StorageAccountSuffix'))]", + "location": "[variables('location')]", + "sku": { + "name": "Standard_LRS" + }, + "copy": { + "name": "FunctionatIndex", + "count": "[length(variables('functionList'))]" + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "[variables('KeyVaultAuditLogsStorageAccountName')]", + "location": "[variables('location')]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "type": "Microsoft.Insights/components", + "apiVersion": "2018-05-01-preview", + "name": "[concat(variables('functionList')[copyIndex('FunctionatIndex')] , variables('ProjectNameSuffix'))]", + "location": "[variables('location')]", + "tags": { + "[concat('hidden-link:', resourceId('Microsoft.Web/sites/',concat(variables('functionList')[copyIndex('FunctionatIndex')] , variables('ProjectNameSuffix')) ))]": "Resource" + }, + "properties": { + "ApplicationId": "[concat(variables('functionList')[copyIndex('FunctionatIndex')] , variables('ProjectNameSuffix'))]" + }, + "copy": { + "name": "FunctionatIndex", + "count": "[length(variables('functionList'))]" + } + }, + { + "type": "Microsoft.KeyVault/vaults", + "name": "[variables('keyVaultName')]", + "apiVersion": "2018-02-14", + "location": "[variables('location')]", + "properties": { + "enabledForDeployment": "[variables('enabledForDeployment')]", + "enabledForDiskEncryption": "[variables('enabledForDiskEncryption')]", + "enabledForTemplateDeployment": "[variables('enabledForTemplateDeployment')]", + "enableSoftDelete": false, + "tenantId": "[variables('tenantId')]", + "accessPolicies": [ + { + "objectId": "[parameters('userObjectId')]", + "tenantId": "[variables('tenantId')]", + "permissions": { + "keys": [ + "All" + ], + "secrets": [ + "All" + ] + } + } + ], + "sku": { + "name": "[variables('skuName')]", + "family": "A" + }, + "networkAcls": { + "defaultAction": "Allow", + "bypass": "AzureServices" + } + } + }, + { + "type": "Microsoft.KeyVault/vaults/providers/diagnosticSettings", + "apiVersion": "2017-05-01-preview", + "name": "[concat(variables('keyVaultName'), '/Microsoft.Insights/Send to all locations')]", + "dependsOn": [ + "[resourceId('Microsoft.KeyVault/vaults', variables('keyVaultName'))]", + "[resourceId('Microsoft.Storage/storageAccounts', variables('KeyVaultAuditLogsStorageAccountName'))]" + ], + "properties": { + "storageAccountId": "[concat( '/subscriptions/', subscription().subscriptionId, '/resourceGroups/', variables('resourceGroupName'), '/providers/Microsoft.Storage/storageAccounts/', variables('KeyVaultAuditLogsStorageAccountName'))]", + "logs": [ + { + "category": "AuditEvent", + "enabled": true, + "RetentionEnabled": true, + "RetentionInDays": 90 + } + ] + } + }, + { + "type": "Microsoft.KeyVault/vaults/accessPolicies", + "name": "[concat(variables('keyVaultName'), '/add')]", + "apiVersion": "2019-09-01", + "properties": { + "accessPolicies": [ + { + "tenantId": "[variables('tenantId')]", + "objectId": "[reference(resourceId('Microsoft.Web/sites',concat('connect' , variables('ProjectNameSuffix'))), '2019-08-01', 'Full').identity.principalId]", + "permissions": { + "keys": "[variables('KVKeyPermissions')]" + } + }, + { + "tenantId": "[variables('tenantId')]", + "objectId": "[reference(resourceId('Microsoft.Web/sites',concat('users' , variables('ProjectNameSuffix'))), '2019-08-01', 'Full').identity.principalId]", + "permissions": { + "keys": "[variables('KVKeyPermissions')]" + } + }, + { + "tenantId": "[variables('tenantId')]", + "objectId": "[reference(resourceId('Microsoft.Web/sites',concat('platforms' , variables('ProjectNameSuffix'))), '2019-08-01', 'Full').identity.principalId]", + "permissions": { + "keys": "[variables('KVKeyPermissions')]" + } + } + ] + } + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2018-09-01-preview", + "name": "[guid(concat(resourceGroup().id, variables('functionList')[copyIndex('FunctionatIndex')] , variables('ProjectNameSuffix')))]", + "dependsOn": [ + "[resourceId('Microsoft.Web/sites',concat(variables('functionList')[copyIndex('FunctionatIndex')] , variables('ProjectNameSuffix')))]" + ], + "properties": { + "roleDefinitionId": "[variables('readerRoleDefinitionId')]", + "principalId": "[reference(resourceId('Microsoft.Web/sites', concat(variables('functionList')[copyIndex('FunctionatIndex')] , variables('ProjectNameSuffix'))), '2019-08-01', 'full').identity.principalId]", + "scope": "[resourceGroup().id]", + "principalType": "ServicePrincipal" + }, + "copy": { + "name": "FunctionatIndex", + "count": "[length(variables('functionList'))]" + } + } + ], + "outputs": { + "WebClientURL": { + "value": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('staticWebsite'))).primaryEndpoints.web]", + "type": "string" + }, + "ConnectFunctionName": { + "value": "[concat('connect', variables('ProjectNameSuffix'))]", + "type": "string" + }, + "PlatformsFunctionName": { + "value": "[concat('platforms', variables('ProjectNameSuffix'))]", + "type": "string" + }, + "UsersFunctionName": { + "value": "[concat('users', variables('ProjectNameSuffix'))]", + "type": "string" + }, + "KeyVaultName": { + "value": "[variables('keyVaultName')]", + "type": "string" + }, + "LearnContentFunctionName": { + "value": "[concat('learncontent', variables('ProjectNameSuffix'))]", + "type": "string" + }, + "AssignmentsFunctionName": { + "value": "[concat('assignments', variables('ProjectNameSuffix'))]", + "type": "string" + }, + "LinksFunctionName": { + "value": "[concat('links', variables('ProjectNameSuffix'))]", + "type": "string" + }, + "StaticWebSiteName": { + "value": "[variables('staticWebsite')]", + "type": "string" + } + } +} + + diff --git a/deployment/azuredeployB2CTemplate.json b/deployment/azuredeployB2CTemplate.json new file mode 100644 index 00000000..63ee3e88 --- /dev/null +++ b/deployment/azuredeployB2CTemplate.json @@ -0,0 +1,552 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "appRegistrationClientId": { + "type": "string", + "defaultValue": "dc0fcdd9-727f-47a3-8f15-4dcb813919fc" + }, + "appRegistrationApiURI": { + "type": "string", + "defaultValue": "api://10ef1e6b-1171-4888-92d5-c661b428796b" + }, + "userEmailAddress": { + "type": "string", + "defaultValue": "user@microsoft.com" + }, + "userObjectId": { + "type": "string", + "defaultValue": "" + } + }, + "variables": { + "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, '20220725051843'),0,9)]", + "functionList": [ + "connect", + "assignments", + "learncontent", + "links", + "platforms", + "users" + ], + "AzureB2C_AUTHENTICATION_SECRET": "", + "enabledForDeployment": false, + "enabledForDiskEncryption": false, + "enabledForTemplateDeployment": false, + "tenantId": "[subscription().tenantId]", + "skuName": "Standard", + "location": "[resourceGroup().location]", + "runtimeStack": "dotnet", + "resourceGroupName": "[resourceGroup().name]", + "StorageAccountSuffix": "[toLower(replace(variables('uniqueIdentifier'),'-',''))]", + "ProjectNameSuffix": "[concat('-', variables('StorageAccountSuffix'))]", + "staticWebsite": "[toLower(concat('learnclient', variables('StorageAccountSuffix')))]", + "keyVaultName": "[toLower(concat('kv', variables('ProjectNameSuffix')))]", + "KeyVaultAuditLogsStorageAccountName": "[toLower(concat('kv' , variables('StorageAccountSuffix'), 'auditlogs'))]", + "readerRoleDefinitionId": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]", + "KVKeyPermissions": [ + "encrypt", + "decrypt", + "wrapKey", + "unwrapKey", + "sign", + "verify", + "get" + ] + }, + "resources": [ + { + "type": "Microsoft.Web/sites", + "apiVersion": "2019-08-01", + "name": "[concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix'))]", + "location": "[variables('location')]", + "dependsOn": [ + "[resourceId('Microsoft.Web/serverfarms', concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix')))]", + "[resourceId('Microsoft.Storage/storageAccounts', concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('StorageAccountSuffix')))]", + "[resourceId('microsoft.insights/components', concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix')))]" + ], + "kind": "functionapp", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "httpsOnly": true, + "siteConfig": { + "appSettings": [ + { + "name": "FUNCTIONS_WORKER_RUNTIME", + "value": "[variables('runtimeStack')]" + }, + { + "name": "AzureWebJobsStorage", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]" + }, + { + "name": "FUNCTIONS_EXTENSION_VERSION", + "value": "~3" + }, + { + "name": "APPINSIGHTS_INSTRUMENTATIONKEY", + "value": "[reference(resourceId('microsoft.insights/components', concat(variables('functionList')[copyIndex('FunctionatIndex')] , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]" + }, + { + "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING", + "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]" + }, + { + "name": "WEBSITE_CONTENTSHARE", + "value": "[toLower(concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix')))]" + }, + { + "name": "APPLICATIONINSIGHTS_CONNECTION_STRING", + "value": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]" + }, + { + "name": "WEBSITE_ENABLE_SYNC_UPDATE_SITE", + "value": "true" + }, + { + "name": "WEBSITE_RUN_FROM_PACKAGE", + "value": "1" + } + ], + "cors": { + "allowedOrigins": [ + "[substring(reference(resourceId('Microsoft.Storage/storageAccounts/', variables('staticWebsite'))).primaryEndpoints.web,0,sub(length(reference(resourceId('Microsoft.Storage/storageAccounts/', variables('staticWebsite'))).primaryEndpoints.web),1))]" + ] + }, + "ftpsState": "Disabled", + "minTlsVersion": "1.2" + }, + "name": "[concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix'))]", + "clientAffinityEnabled": false, + "serverFarmId": "[resourceId('Microsoft.Web/serverfarms/',concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix')))]" + }, + "copy": { + "name": "FunctionatIndex", + "count": "[length(variables('functionList'))]" + } + }, + { + "name": "[concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix'),'/authsettingsV2')]", + "apiVersion": "2021-03-01", + "type": "Microsoft.Web/sites/config", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Web/sites', concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix')))]" + ], + "properties": { + "platform": { + "enabled": "[if(equals(concat(variables('functionList')[copyIndex('FunctionatIndex')], variables('ProjectNameSuffix')),concat('connect', variables('ProjectNameSuffix'))), 'false', 'true')]", + "runtimeVersion": "~1" + }, + "globalValidation": { + "requireAuthentication": true, + "unauthenticatedClientAction": "RedirectToLoginPage", + "redirectToProvider": "AzureB2C" + }, + "identityProviders": { + "azureActiveDirectory": { + "enabled": true, + "registration": { + "openIdIssuer": "[concat('https://sts.windows.net/', variables('tenantId'), '/')]", + "clientId": "[parameters('appRegistrationClientId')]" + }, + "validation": { + "jwtClaimChecks": {}, + "allowedAudiences": [ + "[parameters('appRegistrationApiURI')]" + ], + "defaultAuthorizationPolicy": { + "allowedPrincipals": {} + } + } + }, + "customOpenIdConnectProviders": { + "AzureB2C": { + "registration": { + "clientId": "0cd1d1d6-a7aa-41e2-b569-1ca211147973", + "clientCredential": { + "clientSecretSettingName": "AzureB2C_AUTHENTICATION_SECRET" + }, + "openIdConnectConfiguration": { + "wellKnownOpenIdConfiguration": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/B2C_1_signup_signin_LTI/v2.0/.well-known/openid-configuration" + } + } + } + } + }, + "login": { + "tokenStore": { + "enabled": true + }, + "preserveUrlFragmentsForLogins": false + } + }, + "copy": { + "name": "FunctionatIndex", + "count": "[length(variables('functionList'))]" + } + }, + { + "name": "[concat('connect', variables('ProjectNameSuffix'), '/appsettings')]", + "apiVersion": "2018-11-01", + "type": "Microsoft.Web/sites/config", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Web/sites', concat('connect' , variables('ProjectNameSuffix')))]" + ], + "properties": { + "AuthUrl": "[parameters('appRegistrationApiURI')]", + "DidDeployWork": "true", + "AzureB2C_AUTHENTICATION_SECRET": "[variables('AzureB2C_AUTHENTICATION_SECRET')]", + "AssignmentsServiceUrl": "[concat('https://', 'assignments' , variables('ProjectNameSuffix'), '.azurewebsites.net/api/')]", + "Lti1Secret": "LearnLTI", + "PlatformsServiceUrl": "[concat('https://', 'platforms', variables('ProjectNameSuffix'), '.azurewebsites.net/api/')]", + "RedirectUrl": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('staticWebsite'))).primaryEndpoints.web]", + "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", + "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('connect' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('connect' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", + "FUNCTIONS_EXTENSION_VERSION": "~3", + "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components', concat('connect' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]", + "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat('connect' , variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('connect' , variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]", + "WEBSITE_CONTENTSHARE": "[toLower(concat('connect' , variables('ProjectNameSuffix')))]", + "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('connect' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", + "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", + "WEBSITE_RUN_FROM_PACKAGE": "1" + } + }, + { + "name": "[concat('users', variables('ProjectNameSuffix'), '/appsettings')]", + "apiVersion": "2018-11-01", + "type": "Microsoft.Web/sites/config", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Web/sites', concat('users', variables('ProjectNameSuffix')))]" + ], + "properties": { + "AuthUrl": "[parameters('appRegistrationApiURI')]", + "AzureB2C_AUTHENTICATION_SECRET": "[variables('AzureB2C_AUTHENTICATION_SECRET')]", + "AssignmentsServiceUrl": "[concat('https://', 'assignments', variables('ProjectNameSuffix'), '.azurewebsites.net/api/')]", + "Lti1Secret": "LearnLTI", + "PlatformsServiceUrl": "[concat('https://', 'platforms', variables('ProjectNameSuffix'), '.azurewebsites.net/api/')]", + "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", + "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('users' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('users' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", + "FUNCTIONS_EXTENSION_VERSION": "~3", + "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components', concat('users' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]", + "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat('users' , variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('users' , variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]", + "WEBSITE_CONTENTSHARE": "[toLower(concat('users' , variables('ProjectNameSuffix')))]", + "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('users' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", + "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", + "WEBSITE_RUN_FROM_PACKAGE": "1" + } + }, + { + "name": "[concat('assignments' , variables('ProjectNameSuffix'), '/appsettings')]", + "apiVersion": "2018-11-01", + "type": "Microsoft.Web/sites/config", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Web/sites', concat('assignments' , variables('ProjectNameSuffix')))]" + ], + "properties": { + "AuthUrl": "[parameters('appRegistrationApiURI')]", + "DidDeployWork": "true", + "AzureB2C_AUTHENTICATION_SECRET": "[variables('AzureB2C_AUTHENTICATION_SECRET')]", + "PlatformsServiceUrl": "[concat('https://','platforms' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", + "UsersServiceUrl": "[concat('https://','users' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", + "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", + "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('assignments' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('assignments' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", + "FUNCTIONS_EXTENSION_VERSION": "~3", + "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components', concat('assignments' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]", + "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat('assignments' , variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('assignments' , variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]", + "WEBSITE_CONTENTSHARE": "[toLower(concat('assignments' , variables('ProjectNameSuffix')))]", + "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('assignments' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", + "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", + "WEBSITE_RUN_FROM_PACKAGE": "1" + } + }, + { + "name": "[concat('platforms' , variables('ProjectNameSuffix'),'/appsettings')]", + "apiVersion": "2018-11-01", + "type": "Microsoft.Web/sites/config", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Web/sites', concat('platforms' , variables('ProjectNameSuffix')))]" + ], + "properties": { + "AllowedUsers": "[parameters('userEmailAddress')]", + "AzureB2C_AUTHENTICATION_SECRET": "[variables('AzureB2C_AUTHENTICATION_SECRET')]", + "AuthUrl": "[parameters('appRegistrationApiURI')]", + "DidDeployWork": "true", + "ConnectApiBaseUrl": "[concat('https://','connect' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", + "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", + "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('platforms' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('platforms' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", + "FUNCTIONS_EXTENSION_VERSION": "~3", + "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components', concat('platforms' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]", + "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat('platforms' , variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('platforms' , variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]", + "WEBSITE_CONTENTSHARE": "[toLower(concat('platforms' , variables('ProjectNameSuffix')))]", + "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('platforms' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", + "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", + "WEBSITE_RUN_FROM_PACKAGE": "1" + } + }, + { + "name": "[concat('links', variables('ProjectNameSuffix'), '/appsettings')]", + "apiVersion": "2018-11-01", + "type": "Microsoft.Web/sites/config", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Web/sites', concat('links' , variables('ProjectNameSuffix')))]" + ], + "properties": { + "AuthUrl": "[parameters('appRegistrationApiURI')]", + "AzureB2C_AUTHENTICATION_SECRET": "[variables('AzureB2C_AUTHENTICATION_SECRET')]", + "UsersServiceUrl": "[concat('https://','users' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", + "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", + "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('links' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('links' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", + "FUNCTIONS_EXTENSION_VERSION": "~3", + "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components', concat('links' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]", + "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat('links' , variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('links' , variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]", + "WEBSITE_CONTENTSHARE": "[toLower(concat('links' , variables('ProjectNameSuffix')))]", + "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('links' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", + "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", + "WEBSITE_RUN_FROM_PACKAGE": "1" + } + }, + { + "name": "[concat('learncontent', variables('ProjectNameSuffix'), '/appsettings')]", + "apiVersion": "2018-11-01", + "type": "Microsoft.Web/sites/config", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Web/sites', concat('learncontent' , variables('ProjectNameSuffix')))]" + ], + "properties": { + "AuthUrl": "[parameters('appRegistrationApiURI')]", + "AzureB2C_AUTHENTICATION_SECRET": "[variables('AzureB2C_AUTHENTICATION_SECRET')]", + "UsersServiceUrl": "[concat('https://','users' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", + "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", + "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('learncontent' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('learncontent' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", + "FUNCTIONS_EXTENSION_VERSION": "~3", + "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components', concat('learncontent' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey]", + "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', concat('learncontent' , variables('StorageAccountSuffix')), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('learncontent' , variables('StorageAccountSuffix'))),'2019-06-01').keys[0].value)]", + "WEBSITE_CONTENTSHARE": "[toLower(concat('learncontent' , variables('ProjectNameSuffix')))]", + "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('learncontent' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", + "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", + "WEBSITE_RUN_FROM_PACKAGE": "1" + } + }, + { + "type": "Microsoft.Web/serverfarms", + "apiVersion": "2019-08-01", + "name": "[concat(variables('functionList')[copyIndex('FunctionatIndex')] , variables('ProjectNameSuffix'))]", + "location": "[variables('location')]", + "sku": { + "name": "Y1", + "tier": "Dynamic", + "size": "Y1", + "family": "Y", + "capacity": 0 + }, + "properties": { + "name": "[concat(variables('functionList')[copyIndex('FunctionatIndex')] , variables('ProjectNameSuffix'))]" + }, + "copy": { + "name": "FunctionatIndex", + "count": "[length(variables('functionList'))]" + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-04-01", + "name": "[variables('staticWebsite')]", + "location": "[resourceGroup().location]", + "sku": { + "name": "Standard_LRS", + "tier": "Standard" + }, + "kind": "StorageV2" + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "[concat(variables('functionList')[copyIndex('FunctionatIndex')] , variables('StorageAccountSuffix'))]", + "location": "[variables('location')]", + "sku": { + "name": "Standard_LRS" + }, + "copy": { + "name": "FunctionatIndex", + "count": "[length(variables('functionList'))]" + } + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "[variables('KeyVaultAuditLogsStorageAccountName')]", + "location": "[variables('location')]", + "sku": { + "name": "Standard_LRS" + } + }, + { + "type": "Microsoft.Insights/components", + "apiVersion": "2018-05-01-preview", + "name": "[concat(variables('functionList')[copyIndex('FunctionatIndex')] , variables('ProjectNameSuffix'))]", + "location": "[variables('location')]", + "tags": { + "[concat('hidden-link:', resourceId('Microsoft.Web/sites/',concat(variables('functionList')[copyIndex('FunctionatIndex')] , variables('ProjectNameSuffix')) ))]": "Resource" + }, + "properties": { + "ApplicationId": "[concat(variables('functionList')[copyIndex('FunctionatIndex')] , variables('ProjectNameSuffix'))]" + }, + "copy": { + "name": "FunctionatIndex", + "count": "[length(variables('functionList'))]" + } + }, + { + "type": "Microsoft.KeyVault/vaults", + "name": "[variables('keyVaultName')]", + "apiVersion": "2018-02-14", + "location": "[variables('location')]", + "properties": { + "enabledForDeployment": "[variables('enabledForDeployment')]", + "enabledForDiskEncryption": "[variables('enabledForDiskEncryption')]", + "enabledForTemplateDeployment": "[variables('enabledForTemplateDeployment')]", + "enableSoftDelete": false, + "tenantId": "[variables('tenantId')]", + "accessPolicies": [ + { + "objectId": "[parameters('userObjectId')]", + "tenantId": "[variables('tenantId')]", + "permissions": { + "keys": [ + "All" + ], + "secrets": [ + "All" + ] + } + } + ], + "sku": { + "name": "[variables('skuName')]", + "family": "A" + }, + "networkAcls": { + "defaultAction": "Allow", + "bypass": "AzureServices" + } + } + }, + { + "type": "Microsoft.KeyVault/vaults/providers/diagnosticSettings", + "apiVersion": "2017-05-01-preview", + "name": "[concat(variables('keyVaultName'), '/Microsoft.Insights/Send to all locations')]", + "dependsOn": [ + "[resourceId('Microsoft.KeyVault/vaults', variables('keyVaultName'))]", + "[resourceId('Microsoft.Storage/storageAccounts', variables('KeyVaultAuditLogsStorageAccountName'))]" + ], + "properties": { + "storageAccountId": "[concat( '/subscriptions/', subscription().subscriptionId, '/resourceGroups/', variables('resourceGroupName'), '/providers/Microsoft.Storage/storageAccounts/', variables('KeyVaultAuditLogsStorageAccountName'))]", + "logs": [ + { + "category": "AuditEvent", + "enabled": true, + "RetentionEnabled": true, + "RetentionInDays": 90 + } + ] + } + }, + { + "type": "Microsoft.KeyVault/vaults/accessPolicies", + "name": "[concat(variables('keyVaultName'), '/add')]", + "apiVersion": "2019-09-01", + "properties": { + "accessPolicies": [ + { + "tenantId": "[variables('tenantId')]", + "objectId": "[reference(resourceId('Microsoft.Web/sites',concat('connect' , variables('ProjectNameSuffix'))), '2019-08-01', 'Full').identity.principalId]", + "permissions": { + "keys": "[variables('KVKeyPermissions')]" + } + }, + { + "tenantId": "[variables('tenantId')]", + "objectId": "[reference(resourceId('Microsoft.Web/sites',concat('users' , variables('ProjectNameSuffix'))), '2019-08-01', 'Full').identity.principalId]", + "permissions": { + "keys": "[variables('KVKeyPermissions')]" + } + }, + { + "tenantId": "[variables('tenantId')]", + "objectId": "[reference(resourceId('Microsoft.Web/sites',concat('platforms' , variables('ProjectNameSuffix'))), '2019-08-01', 'Full').identity.principalId]", + "permissions": { + "keys": "[variables('KVKeyPermissions')]" + } + } + ] + } + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2018-09-01-preview", + "name": "[guid(concat(resourceGroup().id, variables('functionList')[copyIndex('FunctionatIndex')] , variables('ProjectNameSuffix')))]", + "dependsOn": [ + "[resourceId('Microsoft.Web/sites',concat(variables('functionList')[copyIndex('FunctionatIndex')] , variables('ProjectNameSuffix')))]" + ], + "properties": { + "roleDefinitionId": "[variables('readerRoleDefinitionId')]", + "principalId": "[reference(resourceId('Microsoft.Web/sites', concat(variables('functionList')[copyIndex('FunctionatIndex')] , variables('ProjectNameSuffix'))), '2019-08-01', 'full').identity.principalId]", + "scope": "[resourceGroup().id]", + "principalType": "ServicePrincipal" + }, + "copy": { + "name": "FunctionatIndex", + "count": "[length(variables('functionList'))]" + } + } + ], + "outputs": { + "WebClientURL": { + "value": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('staticWebsite'))).primaryEndpoints.web]", + "type": "string" + }, + "ConnectFunctionName": { + "value": "[concat('connect', variables('ProjectNameSuffix'))]", + "type": "string" + }, + "PlatformsFunctionName": { + "value": "[concat('platforms', variables('ProjectNameSuffix'))]", + "type": "string" + }, + "UsersFunctionName": { + "value": "[concat('users', variables('ProjectNameSuffix'))]", + "type": "string" + }, + "KeyVaultName": { + "value": "[variables('keyVaultName')]", + "type": "string" + }, + "LearnContentFunctionName": { + "value": "[concat('learncontent', variables('ProjectNameSuffix'))]", + "type": "string" + }, + "AssignmentsFunctionName": { + "value": "[concat('assignments', variables('ProjectNameSuffix'))]", + "type": "string" + }, + "LinksFunctionName": { + "value": "[concat('links', variables('ProjectNameSuffix'))]", + "type": "string" + }, + "StaticWebSiteName": { + "value": "[variables('staticWebsite')]", + "type": "string" + } + } +} + + From f5834f2e368aa6ff84eaebbdea293b3e7d9a014d Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Tue, 26 Jul 2022 18:02:58 +0100 Subject: [PATCH 118/285] Hardcoded b2c values to remove tedious inputs; improved .env.production and .env.development updates to be consistent with Microsofts standards by updating Install-Client.ps1; started work on fixing race condition between creating apps and their secrets --- client/.env.development | 6 +- client/.env.production | 28 ++--- client/src/Core/Auth/AppAuthConfig.ts | 6 +- deployment/B2CDeployment.ps1 | 31 +++-- deployment/Cleanup.ps1 | 4 +- deployment/Deploy.ps1 | 163 ++++++-------------------- deployment/Install-Client.ps1 | 48 +++++++- deployment/azuredeploy.json | 5 +- docs/CONSOLIDATED_DEPLOY.md | 3 - 9 files changed, 123 insertions(+), 171 deletions(-) diff --git a/client/.env.development b/client/.env.development index 360ff8cd..d6fa5453 100644 --- a/client/.env.development +++ b/client/.env.development @@ -7,6 +7,6 @@ REACT_APP_EDNA_LINKS_SERVICE_URL="http://localhost:7073/api" REACT_APP_EDNA_LEARN_CONTENT="http://localhost:7074/api" REACT_APP_EDNA_USERS_SERVICE_URL="http://localhost:7075/api" REACT_APP_EDNA_PLATFORM_SERVICE_URL="http://localhost:7072/api" -REACT_APP_EDNA_B2C_CLIENT_ID=NULL -REACT_APP_EDNA_B2C_TENANT=NULL -REACT_APP_EDNA_AUTH_CLIENT_ID=NULL +REACT_APP_EDNA_B2C_CLIENT_ID='NA' +REACT_APP_EDNA_B2C_TENANT='NA' +REACT_APP_EDNA_AUTH_CLIENT_ID='NA' diff --git a/client/.env.production b/client/.env.production index b7b02da7..80ae8de2 100644 --- a/client/.env.production +++ b/client/.env.production @@ -1,19 +1,13 @@ GENERATE_SOURCEMAP='false' -REACT_APP_EDNA_PLATFORM_SERVICE_URL='https://platforms-f36nyrjvo.azurewebsites.net/api' -REACT_APP_EDNA_USERS_SERVICE_URL='https://users-f36nyrjvo.azurewebsites.net/api' -REACT_APP_EDNA_LEARN_CONTENT='https://learncontent-f36nyrjvo.azurewebsites.net/api' -REACT_APP_EDNA_LINKS_SERVICE_URL='https://links-f36nyrjvo.azurewebsites.net/api' -REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL='https://assignments-f36nyrjvo.azurewebsites.net/api' +REACT_APP_EDNA_AUTH_CLIENT_ID='https://REACT_APP_EDNA_AUTH_CLIENT_ID xxxxxxxxxxxx.azurewebsites.net/api' +REACT_APP_EDNA_B2C_TENANT='https://REACT_APP_EDNA_B2C_TENANT.azurewebsites.net/api' +REACT_APP_EDNA_B2C_CLIENT_ID='https://REACT_APP_EDNA_B2C_CLIENT_ID.azurewebsites.net/api' +REACT_APP_EDNA_PLATFORM_SERVICE_URL='https://deploymentOutput.properties.outputs.PlatformsFunctionName.value.azurewebsites.net/api' +REACT_APP_EDNA_USERS_SERVICE_URL='https://deploymentOutput.properties.outputs.UsersFunctionName.value.azurewebsites.net/api' +REACT_APP_EDNA_LEARN_CONTENT='https://deploymentOutput.properties.outputs.LearnContentFunctionName.value.azurewebsites.net/api' +REACT_APP_EDNA_LINKS_SERVICE_URL='https://deploymentOutput.properties.outputs.LinksFunctionName.value.azurewebsites.net/api' +REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL='https://deploymentOutput.properties.outputs.AssignmentsFunctionName.value.azurewebsites.net/api' REACT_APP_EDNA_TENANT_ID='21510bb9-6414-46d0-9a07-1faf98f25937' -<<<<<<< HEAD -REACT_APP_EDNA_DEFAULT_SCOPE='api://562065a6-f163-49ce-9b62-cb94283f51cd/user_impersonation' -REACT_APP_EDNA_MAIN_URL='https://learnclientf36nyrjvo.z33.web.core.windows.net/' -REACT_APP_EDNA_AAD_CLIENT_ID='562065a6-f163-49ce-9b62-cb94283f51cd' -======= -REACT_APP_EDNA_DEFAULT_SCOPE='api://8536df83-6587-4a24-87cc-62a917ad17f8/user_impersonation' -REACT_APP_EDNA_MAIN_URL='https://learnclientofdd7tsmz.z33.web.core.windows.net/' -REACT_APP_EDNA_AAD_CLIENT_ID='8536df83-6587-4a24-87cc-62a917ad17f8' -REACT_APP_EDNA_B2C_CLIENT_ID=NULL -REACT_APP_EDNA_B2C_TENANT=NULL -REACT_APP_EDNA_AUTH_CLIENT_ID=NULL ->>>>>>> 3311232b1829da1deb9da631334771d2d04f415c +REACT_APP_EDNA_DEFAULT_SCOPE='api://appinfo.appId/user_impersonation' +REACT_APP_EDNA_MAIN_URL='deploymentOutput.properties.outputs.webClientURL.value' +REACT_APP_EDNA_AAD_CLIENT_ID='appinfo.appId' diff --git a/client/src/Core/Auth/AppAuthConfig.ts b/client/src/Core/Auth/AppAuthConfig.ts index 7939cf09..ce703f14 100644 --- a/client/src/Core/Auth/AppAuthConfig.ts +++ b/client/src/Core/Auth/AppAuthConfig.ts @@ -33,8 +33,10 @@ const configuration: Configuration = { }; const authParams: AuthenticationParameters = { - scopes: ['https://' + process.env.REACT_APP_EDNA_B2C_TENANT! + '.onmicrosoft.com/api/b2c.read'] // RB: 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read' - // scopes: [ + //TODO - remove the hard coded ltimoodleb2c!!! + //old hard coded scopes + scopes: ['https://' + process.env.REACT_APP_EDNA_B2C_TENANT! + '.onmicrosoft.com/api/b2c.read'] // RB: 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read' // b2c scope + // scopes: [ //AD scopes // //'https://ltimoodleb2c.onmicrosoft.com/api/user_impersonation', // 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read' // ] // RB: 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read' diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index ebbea125..387d4fd0 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -32,6 +32,15 @@ if (Test-Path $AppInfoCSVPath -PathType Leaf) { } #endregeion +#region "values determining the names of the resources" +$MultiTenantAppName = "b2c_AD_app" +$MultiTenantClientSecretName = "b2c_AD_app_secret" +$B2cAppName = "b2c_AD_webapp" +$WebClientSecretName = "b2c_AD_webapp_secret" +$PermissionAppName = "b2c_AD_PMA" +$PermissionClientSecretName = "b2c_AD_PMA_secret" +#endregion + #region "STEP 1: Create Active Directory application" $B2cTenantName = Read-Host "Please enter your B2C tenant name" $ADTenantName = Read-Host "Please enter your AD tenant name" @@ -39,7 +48,7 @@ $ADTenantName = Read-Host "Please enter your AD tenant name" Write-Title "STEP 1: Create AD application" Write-Host "Please login to $ADTenantName via the pop-up window that has launched in your browser" az login --tenant "$ADTenantName.onmicrosoft.com" --allow-no-subscriptions --only-show-errors > $null -$MultiTenantAppName = Read-Host "Please give a name for the AD application to be created" +# $MultiTenantAppName = Read-Host "Please give a name for the AD application to be created" $ADAppManifest = "{ `"idToken`": [ { @@ -60,12 +69,12 @@ $ADAppManifest = "{ }" Out-File -FilePath "manifest.json" -InputObject $ADAppManifest $MultiTenantAppID = (az ad app create --display-name $MultiTenantAppName --sign-in-audience AzureADandPersonalMicrosoftAccount --web-redirect-uris https://$B2cTenantName.b2clogin.com/$B2cTenantName.onmicrosoft.com/oauth2/authresp --optional-claims "@manifest.json" --query appId --output tsv --only-show-errors) -Start-SLeep 1 +Start-SLeep 2 "$MultiTenantAppID,$ADTenantName" | Out-File -FilePath $AppInfoCSVPath -Append # Create client secret Write-Host "Creating the client secret for $MultiTenantAppName" -$MultiTenantClientSecretName = Read-Host "Please give a name for the client secret to be created" +# $MultiTenantClientSecretName = Read-Host "Please give a name for the client secret to be created" $MultiTenantClientSecretDuration = 1 $MultiTenantClientSecret = (az ad app credential reset --id $MultiTenantAppID --append --display-name $MultiTenantClientSecretName --years $MultiTenantClientSecretDuration --query password --output tsv --only-show-errors) Write-Color "green" "Client ID for $MultiTenantAppName`: $MultiTenantAppID" @@ -94,14 +103,14 @@ az login --tenant "$B2cTenantName.onmicrosoft.com" --allow-no-subscriptions --on #region "STEP 3: Create the web app" Write-Title "STEP 3: Creating the B2C Web application" -$B2cAppName = Read-Host "Please give a name for the web application to be created" +# $B2cAppName = Read-Host "Please give a name for the web application to be created" $WebClientID = (az ad app create --display-name $B2cAppName --sign-in-audience AzureADandPersonalMicrosoftAccount --web-redirect-uris https://jwt.ms --enable-access-token-issuance true --enable-id-token-issuance true --query appId --output tsv --only-show-errors) -Start-SLeep 1 +Start-SLeep 2 "$WebClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append # create client secret Write-Host "Creating the client secret for $B2cAppName" -$WebClientSecretName = Read-Host "Please give a name for the client secret to be created" +# $WebClientSecretName = Read-Host "Please give a name for the client secret to be created" $WebClientSecretDuration = 1 $WebClientSecret = (az ad app credential reset --id $WebClientID --append --display-name $WebClientSecretName --years $WebClientSecretDuration --query password --output tsv --only-show-errors) Write-Color "green" "Client ID for $B2cAppName`: $WebClientID" @@ -123,7 +132,7 @@ az ad app permission add --id $WebClientID --api 00000003-0000-0000-c000-0000000 Write-Title "STEP 4: Creating the Identity Experience Framework application" $IEFAppName = "IdentityExperienceFramework" $IEFClientID = (az ad app create --display-name $IEFAppName --sign-in-audience AzureADMyOrg --web-redirect-uris https://$B2cTenantName.b2clogin.com/$B2cTenantName.onmicrosoft.com --query appId --output tsv --only-show-errors) -Start-SLeep 1 +Start-SLeep 2 "$IEFClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append # set permissions for the IEF app @@ -164,7 +173,7 @@ Remove-Item userImpersonationScope.json Write-Title "STEP 5: Creating the Proxy Identity Experience Framework application" $ProxyIEFAppName = "ProxyIdentityExperienceFramework" $ProxyIEFClientID = (az ad app create --display-name $ProxyIEFAppName --sign-in-audience AzureADMyOrg --public-client-redirect-uris myapp://auth --is-fallback-public-client true --query appId --output tsv --only-show-errors) -Start-SLeep 1 +Start-SLeep 2 "$ProxyIEFClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append Write-Host "Granting permissions to the Proxy IEF application" @@ -177,14 +186,14 @@ az ad app permission add --id $ProxyIEFClientID --api $IEFClientID --api-permiss #region "STEP 6: Create Permission Management app" Write-Title "STEP 6: Creating Permission Management application" -$PermissionAppName = Read-Host "Please give a name for the permission management application to be created" +# $PermissionAppName = Read-Host "Please give a name for the permission management application to be created" $PermissionClientID = (az ad app create --display-name $PermissionAppName --sign-in-audience AzureADMyOrg --query appId --output tsv --only-show-errors) -Start-SLeep 1 +Start-SLeep 2 "$PermissionClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append # create client secret Write-Host "Creating the client secret for $PermissionAppName" -$PermissionClientSecretName = Read-Host "Please give a name for the client secret to be created" +# $PermissionClientSecretName = Read-Host "Please give a name for the client secret to be created" $PermissionClientSecretDuration = 1 $PermissionClientSecret = (az ad app credential reset --id $PermissionClientID --append --display-name $PermissionClientSecretName --years $PermissionClientSecretDuration --query password --output tsv --only-show-errors) Write-Color "green" "Client ID for $PermissionAppName`: $PermissionClientID" diff --git a/deployment/Cleanup.ps1 b/deployment/Cleanup.ps1 index 45a11b16..e70392de 100644 --- a/deployment/Cleanup.ps1 +++ b/deployment/Cleanup.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "DM_ad4_MSLearnLTI", - [string]$AppName = "DM_ad4_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "DM_ad9_MSLearnLTI", + [string]$AppName = "DM_ad9_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null ) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index c38e7a2c..e6ec09f9 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "DM_ad4_MSLearnLTI", - [string]$AppName = "DM_ad4_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "DM_ad9_MSLearnLTI", + [string]$AppName = "DM_ad9_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null @@ -59,18 +59,19 @@ process { #region "B2C STEP 1: Calling B2CDeployment to set up the b2c script and retrieving the returned values to be used later on" - $REACT_APP_EDNA_B2C_CLIENT_ID = "" - $REACT_APP_EDNA_AUTH_CLIENT_ID = "" - $b2c_secret = "" - $REACT_APP_EDNA_B2C_TENANT = "" + $REACT_APP_EDNA_B2C_CLIENT_ID = "'NA'" + $REACT_APP_EDNA_AUTH_CLIENT_ID = "'NA'" + $b2c_secret = "'NA'" + $REACT_APP_EDNA_B2C_TENANT = "'NA'" if($b2cOrAD -eq "b2c"){ Write-Title "B2C Step #1: Running the B2C Setup Script" - # TODO - verify these values are correct + # TODO - verify these values are correct e.g. are we returning the correct values or should we return something else? $results = & ".\B2CDeployment.ps1" # TODO - verify that this can run this multiplatform as it only works on windows; may put mac and windows commands in a try catch - $REACT_APP_EDNA_B2C_CLIENT_ID = $results[0] #webclient ID - $REACT_APP_EDNA_AUTH_CLIENT_ID = $results[0] #webclient ID - $b2c_secret = $results[1] #webclient secret - $REACT_APP_EDNA_B2C_TENANT = $results[2] #b2c tenant name + # TODO - indexing from -1 etc. because it seems to return meaningless values before the final 3 which we actually want; need to work out why and perhaps fix if it is deemed an issue + $REACT_APP_EDNA_B2C_CLIENT_ID = $results[-3] #webclient ID + $REACT_APP_EDNA_AUTH_CLIENT_ID = $results[-3] #webclient ID + $b2c_secret = $results[-2] #webclient secret + $REACT_APP_EDNA_B2C_TENANT = $results[-1] #b2c tenant name } #endregion @@ -104,119 +105,6 @@ process { Write-Log -Message "Successfully logged in to Azure." #endregion - #region "B2C Step 2: Update required parameter in .env.production/ .env.development for front-end build and B2C secret in azuredeploy.json" - if($b2cOrAD -eq "b2c"){ - Write-Title "B2C Step #2: Updating the B2C parameters and secrets" - $b2c_secret = '"'+$b2c_secret+'"' - ((Get-Content -path ".\azuredeploy.json" -Raw) -replace '""', $b2c_secret) | Set-Content -path (".\azuredeploy.json") - #TODO - find way to replace the value for line 173 of azuredeployTemplate.json via an input or API call (wellKnownOpenIdConfiguration) so they can input it correctly - - [string]$dir = Get-Location - $dir += "/../client/.env.production" - #$dir += ".env.production" - - $old_REACT_APP_EDNA_B2C_CLIENT_ID='' - $old_REACT_APP_EDNA_B2C_TENANT='' - $old_REACT_APP_EDNA_AUTH_CLIENT_ID='' - [System.IO.File]::ReadLines($dir) | ForEach-Object { - if( $_ -Match "REACT_APP_EDNA_B2C_CLIENT_ID" ){ - $configuration_line = $_ -split "=" - $old_REACT_APP_EDNA_B2C_CLIENT_ID = $_.Trim() - $REACT_APP_EDNA_B2C_CLIENT_ID = ($configuration_line[0]+"="+"'"+$REACT_APP_EDNA_B2C_CLIENT_ID+"'").Trim() - } - elseif ( $_ -Match "REACT_APP_EDNA_B2C_TENANT"){ - $configuration_line = $_ -split "=" - $old_REACT_APP_EDNA_B2C_TENANT = $_.Trim() - $REACT_APP_EDNA_B2C_TENANT = ($configuration_line[0]+"="+"'"+$REACT_APP_EDNA_B2C_TENANT+"'").Trim() - } - elseif ( $_ -Match "REACT_APP_EDNA_AUTH_CLIENT_ID"){ - $configuration_line = $_ -split "=" - $old_REACT_APP_EDNA_AUTH_CLIENT_ID = $_.Trim() - $REACT_APP_EDNA_AUTH_CLIENT_ID = ($configuration_line[0]+"="+"'"+$REACT_APP_EDNA_AUTH_CLIENT_ID+"'").Trim() - } - else{ - } - } - Write-Host "Old value:",$old_REACT_APP_EDNA_B2C_CLIENT_ID - $filecontent = Get-Content $dir - $filecontent -replace $old_REACT_APP_EDNA_B2C_CLIENT_ID,$REACT_APP_EDNA_B2C_CLIENT_ID | Set-Content $dir - - $filecontent = Get-Content $dir - $filecontent -replace $old_REACT_APP_EDNA_B2C_TENANT,$REACT_APP_EDNA_B2C_TENANT | Set-Content $dir - - $filecontent = Get-Content $dir - $filecontent -replace $old_REACT_APP_EDNA_AUTH_CLIENT_ID,$REACT_APP_EDNA_AUTH_CLIENT_ID | Set-Content $dir - - [string]$dir = Get-Location - $dir += "/../client/.env.development" - - Write-Host "New value:",$old_REACT_APP_EDNA_B2C_CLIENT_ID - - $filecontent = Get-Content $dir - $filecontent -replace $old_REACT_APP_EDNA_B2C_CLIENT_ID,$REACT_APP_EDNA_B2C_CLIENT_ID | Set-Content $dir - - $filecontent = Get-Content $dir - $filecontent -replace $old_REACT_APP_EDNA_B2C_TENANT,$REACT_APP_EDNA_B2C_TENANT | Set-Content $dir - - $filecontent = Get-Content $dir - $filecontent -replace $old_REACT_APP_EDNA_AUTH_CLIENT_ID,$REACT_APP_EDNA_AUTH_CLIENT_ID | Set-Content $dir - } - # else for AD mode - else { - [string]$dir = Get-Location - $dir += "/../client/.env.production" - #$dir += ".env.production" - - $old_REACT_APP_EDNA_B2C_CLIENT_ID='' - $old_REACT_APP_EDNA_B2C_TENANT='' - $old_REACT_APP_EDNA_AUTH_CLIENT_ID='' - [System.IO.File]::ReadLines($dir) | ForEach-Object { - if( $_ -Match "REACT_APP_EDNA_B2C_CLIENT_ID" ){ - $configuration_line = $_ -split "=" - $old_REACT_APP_EDNA_B2C_CLIENT_ID = $_.Trim() - $REACT_APP_EDNA_B2C_CLIENT_ID = ($configuration_line[0]+"="+"NULL").Trim() - } - elseif ( $_ -Match "REACT_APP_EDNA_B2C_TENANT"){ - $configuration_line = $_ -split "=" - $old_REACT_APP_EDNA_B2C_TENANT = $_.Trim() - $REACT_APP_EDNA_B2C_TENANT = ($configuration_line[0]+"="+"NULL").Trim() - } - elseif ( $_ -Match "REACT_APP_EDNA_AUTH_CLIENT_ID"){ - $configuration_line = $_ -split "=" - $old_REACT_APP_EDNA_AUTH_CLIENT_ID = $_.Trim() - $REACT_APP_EDNA_AUTH_CLIENT_ID = ($configuration_line[0]+"="+"NULL").Trim() - } - else{ - } - } - Write-Host "Old value:",$old_REACT_APP_EDNA_B2C_CLIENT_ID - $filecontent = Get-Content $dir - $filecontent -replace $old_REACT_APP_EDNA_B2C_CLIENT_ID,$REACT_APP_EDNA_B2C_CLIENT_ID | Set-Content $dir - - $filecontent = Get-Content $dir - $filecontent -replace $old_REACT_APP_EDNA_B2C_TENANT,$REACT_APP_EDNA_B2C_TENANT | Set-Content $dir - - $filecontent = Get-Content $dir - $filecontent -replace $old_REACT_APP_EDNA_AUTH_CLIENT_ID,$REACT_APP_EDNA_AUTH_CLIENT_ID | Set-Content $dir - - [string]$dir = Get-Location - $dir += "/../client/.env.development" - - Write-Host "New value:",$old_REACT_APP_EDNA_B2C_CLIENT_ID - - $filecontent = Get-Content $dir - $filecontent -replace $old_REACT_APP_EDNA_B2C_CLIENT_ID,$REACT_APP_EDNA_B2C_CLIENT_ID | Set-Content $dir - - $filecontent = Get-Content $dir - $filecontent -replace $old_REACT_APP_EDNA_B2C_TENANT,$REACT_APP_EDNA_B2C_TENANT | Set-Content $dir - - $filecontent = Get-Content $dir - $filecontent -replace $old_REACT_APP_EDNA_AUTH_CLIENT_ID,$REACT_APP_EDNA_AUTH_CLIENT_ID | Set-Content $dir - - } - - #endregion - #region Choose Active Subcription Write-Title 'STEP #2 - Choose Subscription' @@ -415,8 +303,8 @@ process { #region Build and Publish Client Artifacts . .\Install-Client.ps1 - Write-Title "STEP #11 - Updating client's .env.production file" - + Write-Title "STEP #11.A - Updating client's .env.production file" + $ClientUpdateConfigParams = @{ ConfigPath="../client/.env.production"; AppId=$appinfo.appId; @@ -426,9 +314,30 @@ process { PlatformsFunctionAppName=$deploymentOutput.properties.outputs.PlatformsFunctionName.value; UsersFunctionAppName=$deploymentOutput.properties.outputs.UsersFunctionName.value; StaticWebsiteUrl=$deploymentOutput.properties.outputs.webClientURL.value; + b2cClientID=$REACT_APP_EDNA_B2C_CLIENT_ID; #defaulted to 'NA' if AD + b2cTenantName=$REACT_APP_EDNA_B2C_TENANT; #defaulted to 'NA' if AD + authClientID=$REACT_APP_EDNA_AUTH_CLIENT_ID #defaulted to 'NA' if AD } Update-ClientConfig @ClientUpdateConfigParams - + + Write-Title "STEP #11.B - .env.development file" + + $ServerUpdateConfigParams = @{ + b2cClientID=$REACT_APP_EDNA_B2C_CLIENT_ID; #defaulted to 'NA' if AD + b2cTenantName=$REACT_APP_EDNA_B2C_TENANT; #defaulted to 'NA' if AD + authClientID=$REACT_APP_EDNA_AUTH_CLIENT_ID #defaulted to 'NA' if AD + } + Update-ServerConfig @ServerUpdateConfigParams + + if($b2cOrAD -eq "b2c"){ + Write-Title "Step #11.C - Updating the B2C secret in the azuredeploy.json" + $b2c_secret = '"'+$b2c_secret+'"' + ((Get-Content -path ".\azuredeploy.json" -Raw) -replace '""', $b2c_secret) | Set-Content -path (".\azuredeploy.json") + #TODO - find way to replace the value for line 173 of azuredeployTemplate.json via an input or API call (wellKnownOpenIdConfiguration) so they can input it correctly + #TODO - make separate azureTemplate for b2c vs ad; with ad not having the b2c specific lines + + } + Write-Title 'STEP #12 - Installing the client' $ClientInstallParams = @{ SourceRoot="../client"; diff --git a/deployment/Install-Client.ps1 b/deployment/Install-Client.ps1 index 4701dc9a..095a6e1d 100644 --- a/deployment/Install-Client.ps1 +++ b/deployment/Install-Client.ps1 @@ -12,7 +12,10 @@ enum DotEnv { REACT_APP_EDNA_LINKS_SERVICE_URL; REACT_APP_EDNA_LEARN_CONTENT; REACT_APP_EDNA_USERS_SERVICE_URL; - REACT_APP_EDNA_PLATFORM_SERVICE_URL + REACT_APP_EDNA_PLATFORM_SERVICE_URL; + REACT_APP_EDNA_B2C_CLIENT_ID; + REACT_APP_EDNA_B2C_TENANT; + REACT_APP_EDNA_AUTH_CLIENT_ID } function Write-ClientDebugLog { @@ -88,7 +91,13 @@ function Update-ClientConfig { [Parameter(Mandatory)] [string]$UsersFunctionAppName, [Parameter(Mandatory)] - [string]$StaticWebsiteUrl + [string]$StaticWebsiteUrl, + [Parameter(Mandatory)] + [string]$b2cClientID, + [Parameter(Mandatory)] + [string]$b2cTenantName, + [Parameter(Mandatory)] + [string]$authClientID ) @@ -103,7 +112,40 @@ function Update-ClientConfig { [DotEnv]::REACT_APP_EDNA_LINKS_SERVICE_URL="$(Get-ServiceUrl $LinksFunctionAppName)"; [DotEnv]::REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL="$(Get-ServiceUrl $AssignmentsFunctionAppName)"; [DotEnv]::REACT_APP_EDNA_PLATFORM_SERVICE_URL="$(Get-ServiceUrl $PlatformsFunctionAppName)"; - [DotEnv]::REACT_APP_EDNA_USERS_SERVICE_URL="$(Get-ServiceUrl $UsersFunctionAppName)" + [DotEnv]::REACT_APP_EDNA_USERS_SERVICE_URL="$(Get-ServiceUrl $UsersFunctionAppName)"; + [DotEnv]::REACT_APP_EDNA_B2C_CLIENT_ID="$(Get-ServiceUrl $b2cClientID)"; + [DotEnv]::REACT_APP_EDNA_B2C_TENANT="$(Get-ServiceUrl $b2cTenantName)"; + [DotEnv]::REACT_APP_EDNA_AUTH_CLIENT_ID="$(Get-ServiceUrl $authClientID)" + } + Write-ClientDebugLog -Message "Updated Configuration:-`n$($Config | Out-String)" + + Write-ClientDebugLog -Message "Updating [ $ConfigPath ] with new config variables" + Export-DotEnv $Config $ConfigPath + + Write-Output "Client Config Updated Successfully" +} + +function Update-ServerConfig { + + [CmdletBinding(SupportsShouldProcess)] + param ( + [Parameter(Mandatory)] + [string]$ConfigPath, + [Parameter(Mandatory)] + [string]$b2cClientID, + [Parameter(Mandatory)] + [string]$b2cTenantName, + [Parameter(Mandatory)] + [string]$authClientID + ) + + + Write-ClientDebugLog -Message "Creating new configuration" + $Config = @{ + GENERATE_SOURCEMAP="false"; + [DotEnv]::REACT_APP_EDNA_B2C_CLIENT_ID="$(Get-ServiceUrl $b2cClientID)"; + [DotEnv]::REACT_APP_EDNA_B2C_TENANT="$(Get-ServiceUrl $b2cTenantName)"; + [DotEnv]::REACT_APP_EDNA_AUTH_CLIENT_ID="$(Get-ServiceUrl $authClientID)" } Write-ClientDebugLog -Message "Updated Configuration:-`n$($Config | Out-String)" diff --git a/deployment/azuredeploy.json b/deployment/azuredeploy.json index 48d88e20..5cb5a34b 100644 --- a/deployment/azuredeploy.json +++ b/deployment/azuredeploy.json @@ -20,7 +20,7 @@ } }, "variables": { - "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, '20220725051843'),0,9)]", + "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, '20220726055019'),0,9)]", "functionList": [ "connect", "assignments", @@ -29,7 +29,7 @@ "platforms", "users" ], - "AzureB2C_AUTHENTICATION_SECRET": "", + "AzureB2C_AUTHENTICATION_SECRET": "", "enabledForDeployment": false, "enabledForDiskEncryption": false, "enabledForTemplateDeployment": false, @@ -549,4 +549,3 @@ } } - diff --git a/docs/CONSOLIDATED_DEPLOY.md b/docs/CONSOLIDATED_DEPLOY.md index b567926f..898c1438 100644 --- a/docs/CONSOLIDATED_DEPLOY.md +++ b/docs/CONSOLIDATED_DEPLOY.md @@ -61,9 +61,6 @@ Go to the [B2C setup](https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/blob/consol The script will ask you to login to Azure by navigating to the Azure Login Page on your browser. -## (FOR B2C Mode Only) Updating required parameter in .env.production/ .env.development for front-end build and B2C secret in azuredeploy.json -**NOTE:** if B2C mode is chosen, then before choosing the subscription, the B2C parameters and secrets should automatically be updated as shown below. -![b2cstep2.png](/images/b2cstep2.png) ## Choose Subscription From 5ea8645151c0565036635c981b5a16e2bed0ffcd Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Wed, 27 Jul 2022 12:10:32 +0100 Subject: [PATCH 119/285] generate a SPA uri during deploy --- deployment/Deploy.ps1 | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index dd33f334..430009b9 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "RB_policy2_MSLearnLTI", - [string]$AppName = "RB_policy2_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "RB_graph1_MSLearnLTI", + [string]$AppName = "RB_graph1_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null @@ -389,7 +389,14 @@ process { $AppRedirectUrl = $deploymentOutput.properties.outputs.webClientURL.value Write-Log -Message "Updating App with ID: $($appinfo.appId) to Redirect URL: $AppRedirectUrl and also enabling Implicit Flow" - $appUpdateRedirectUrlOp = az ad app update --id $appinfo.appId --reply-urls $AppRedirectUrl --oauth2-allow-implicit-flow true + #$appUpdateRedirectUrlOp = az ad app update --id $appinfo.appId --reply-urls $AppRedirectUrl --oauth2-allow-implicit-flow true + + #Azure CLI doesn't offer the ability to create SPA redirect uris, must use patch instead + $graphUrl = "https://graph.microsoft.com/v1.0/applications/$($appinfo.id)" + $body = '{\"spa\":{\"redirectUris\":[\"' + $AppRedirectUrl + '\"]}}' + Write-Log -Message "Pointing to $graphUrl and using body $body" + az rest --method PATCH --uri $graphUrl --headers 'Content-Type=application/json' --body $body + #Intentionally not catching an exception here since the app update commands behavior (output) is different from others Write-Host 'App Update Completed Successfully' From 3400644f040e57f82cac126c28c9a360b9aafe1b Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Wed, 27 Jul 2022 12:12:31 +0100 Subject: [PATCH 120/285] app auth changes -- should be tweaked --- client/src/Core/Auth/AppAuthConfig.ts | 31 ++++++++++++++++----------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/client/src/Core/Auth/AppAuthConfig.ts b/client/src/Core/Auth/AppAuthConfig.ts index c5f1a48f..914a0235 100644 --- a/client/src/Core/Auth/AppAuthConfig.ts +++ b/client/src/Core/Auth/AppAuthConfig.ts @@ -9,6 +9,24 @@ import { PublicClientApplication, Configuration, Logger, LogLevel } from '@azure import { b2cPolicies } from './policies'; +export let request; +let authority; +// Swap out needed B2C vs AD options +if (process.env.REACT_APP_EDNA_B2C_TENANT! != 'NULL') { + console.log(process.env.REACT_APP_EDNA_B2C_TENANT!); + console.log('in B2C mode'); + request = { + scopes: ['openid', 'profile', 'https://' + process.env.REACT_APP_EDNA_B2C_TENANT! + '.onmicrosoft.com/api/b2c.read'] + }; + authority = b2cPolicies.authorities.signIn.authority; +} else { + console.log('in AD mode'); + request = { + scopes: [process.env.REACT_APP_EDNA_DEFAULT_SCOPE!] + }; + authority = `https://login.microsoftonline.com/${process.env.REACT_APP_EDNA_TENANT_ID}`; +} + const authLogCallback = (level: LogLevel, message: string, _containsPii: boolean): void => { // Not setting the log at all, will cause the an exception in the UserAgentApplication. // Originally, the NODE_ENV check was in the setting of the logger. @@ -21,7 +39,7 @@ const config: Configuration = { auth: { clientId: process.env.REACT_APP_EDNA_AUTH_CLIENT_ID!, //process.env.REACT_APP_EDNA_AAD_CLIENT_ID! redirectUri: process.env.REACT_APP_EDNA_MAIN_URL!, - authority: b2cPolicies.authorities.signIn.authority, + authority: authority, navigateToLoginRequestUrl: true, knownAuthorities: [b2cPolicies.authorityDomain] }, @@ -56,17 +74,6 @@ const config: Configuration = { } }; -export let request; -if (process.env.REACT_APP_EDNA_B2C_TENANT! != null) { - request = { - scopes: ['openid', 'profile', 'https://' + process.env.REACT_APP_EDNA_B2C_TENANT! + '.onmicrosoft.com/api/b2c.read'] - }; -} else { - request = { - scopes: [process.env.REACT_APP_EDNA_DEFAULT_SCOPE!] - }; -} - // Todo, may no longer be neccessary // const authParams: AuthenticationParameters = { // //scopes: ['https://' + process.env.REACT_APP_EDNA_B2C_TENANT! + '.onmicrosoft.com/api/b2c.read'] // RB: 'https://ltimoodleb2c.onmicrosoft.com/api/b2c.read' From ffb2a40fb4a589bd6f24f465e9f6d53247a33568 Mon Sep 17 00:00:00 2001 From: DuyNguyen19993010 Date: Wed, 27 Jul 2022 12:28:11 +0100 Subject: [PATCH 121/285] Azure template changes --- deployment/azuredeployADtemplate.json | 22 ---------------------- deployment/azuredeployB2CTemplate.json | 2 +- 2 files changed, 1 insertion(+), 23 deletions(-) diff --git a/deployment/azuredeployADtemplate.json b/deployment/azuredeployADtemplate.json index 63ee3e88..f308344a 100644 --- a/deployment/azuredeployADtemplate.json +++ b/deployment/azuredeployADtemplate.json @@ -29,7 +29,6 @@ "platforms", "users" ], - "AzureB2C_AUTHENTICATION_SECRET": "", "enabledForDeployment": false, "enabledForDiskEncryption": false, "enabledForTemplateDeployment": false, @@ -162,20 +161,6 @@ } } }, - "customOpenIdConnectProviders": { - "AzureB2C": { - "registration": { - "clientId": "0cd1d1d6-a7aa-41e2-b569-1ca211147973", - "clientCredential": { - "clientSecretSettingName": "AzureB2C_AUTHENTICATION_SECRET" - }, - "openIdConnectConfiguration": { - "wellKnownOpenIdConfiguration": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/B2C_1_signup_signin_LTI/v2.0/.well-known/openid-configuration" - } - } - } - } - }, "login": { "tokenStore": { "enabled": true @@ -198,8 +183,6 @@ ], "properties": { "AuthUrl": "[parameters('appRegistrationApiURI')]", - "DidDeployWork": "true", - "AzureB2C_AUTHENTICATION_SECRET": "[variables('AzureB2C_AUTHENTICATION_SECRET')]", "AssignmentsServiceUrl": "[concat('https://', 'assignments' , variables('ProjectNameSuffix'), '.azurewebsites.net/api/')]", "Lti1Secret": "LearnLTI", "PlatformsServiceUrl": "[concat('https://', 'platforms', variables('ProjectNameSuffix'), '.azurewebsites.net/api/')]", @@ -225,7 +208,6 @@ ], "properties": { "AuthUrl": "[parameters('appRegistrationApiURI')]", - "AzureB2C_AUTHENTICATION_SECRET": "[variables('AzureB2C_AUTHENTICATION_SECRET')]", "AssignmentsServiceUrl": "[concat('https://', 'assignments', variables('ProjectNameSuffix'), '.azurewebsites.net/api/')]", "Lti1Secret": "LearnLTI", "PlatformsServiceUrl": "[concat('https://', 'platforms', variables('ProjectNameSuffix'), '.azurewebsites.net/api/')]", @@ -251,7 +233,6 @@ "properties": { "AuthUrl": "[parameters('appRegistrationApiURI')]", "DidDeployWork": "true", - "AzureB2C_AUTHENTICATION_SECRET": "[variables('AzureB2C_AUTHENTICATION_SECRET')]", "PlatformsServiceUrl": "[concat('https://','platforms' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", "UsersServiceUrl": "[concat('https://','users' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", @@ -275,7 +256,6 @@ ], "properties": { "AllowedUsers": "[parameters('userEmailAddress')]", - "AzureB2C_AUTHENTICATION_SECRET": "[variables('AzureB2C_AUTHENTICATION_SECRET')]", "AuthUrl": "[parameters('appRegistrationApiURI')]", "DidDeployWork": "true", "ConnectApiBaseUrl": "[concat('https://','connect' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", @@ -300,7 +280,6 @@ ], "properties": { "AuthUrl": "[parameters('appRegistrationApiURI')]", - "AzureB2C_AUTHENTICATION_SECRET": "[variables('AzureB2C_AUTHENTICATION_SECRET')]", "UsersServiceUrl": "[concat('https://','users' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('links' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('links' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", @@ -323,7 +302,6 @@ ], "properties": { "AuthUrl": "[parameters('appRegistrationApiURI')]", - "AzureB2C_AUTHENTICATION_SECRET": "[variables('AzureB2C_AUTHENTICATION_SECRET')]", "UsersServiceUrl": "[concat('https://','users' , variables('ProjectNameSuffix'),'.azurewebsites.net/api/')]", "FUNCTIONS_WORKER_RUNTIME": "[variables('runtimeStack')]", "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=',concat('learncontent' , variables('StorageAccountSuffix') ), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', concat('learncontent' , variables('StorageAccountSuffix'))), '2019-06-01').keys[0].value)]", diff --git a/deployment/azuredeployB2CTemplate.json b/deployment/azuredeployB2CTemplate.json index 63ee3e88..d18928bb 100644 --- a/deployment/azuredeployB2CTemplate.json +++ b/deployment/azuredeployB2CTemplate.json @@ -29,7 +29,7 @@ "platforms", "users" ], - "AzureB2C_AUTHENTICATION_SECRET": "", + "AzureB2C_AUTHENTICATION_SECRET": "", "enabledForDeployment": false, "enabledForDiskEncryption": false, "enabledForTemplateDeployment": false, From 91dd1a09848b9a6e66df74d925147fb4f9fbab7f Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Wed, 27 Jul 2022 12:46:24 +0100 Subject: [PATCH 122/285] Fixed bug in updating .env.development rewriting old file with missing values --- client/.env.development | 19 ++++++++++--------- client/.env.production | 22 +++++++++++----------- deployment/Cleanup.ps1 | 4 ++-- deployment/Deploy.ps1 | 5 +++-- deployment/Install-Client.ps1 | 19 +++++++++++++++++++ deployment/azuredeploy.json | 5 +++-- 6 files changed, 48 insertions(+), 26 deletions(-) diff --git a/client/.env.development b/client/.env.development index d6fa5453..067b6572 100644 --- a/client/.env.development +++ b/client/.env.development @@ -1,12 +1,13 @@ -REACT_APP_EDNA_AAD_CLIENT_ID="f47872b6-bdeb-4b69-a3c2-25528a9a9f5b" -REACT_APP_EDNA_MAIN_URL="http://localhost:3000" -REACT_APP_EDNA_DEFAULT_SCOPE="api://f47872b6-bdeb-4b69-a3c2-25528a9a9f5b/default" -REACT_APP_EDNA_TENANT_ID="21510bb9-6414-46d0-9a07-1faf98f25937" -REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL="http://localhost:7071/api" -REACT_APP_EDNA_LINKS_SERVICE_URL="http://localhost:7073/api" -REACT_APP_EDNA_LEARN_CONTENT="http://localhost:7074/api" -REACT_APP_EDNA_USERS_SERVICE_URL="http://localhost:7075/api" -REACT_APP_EDNA_PLATFORM_SERVICE_URL="http://localhost:7072/api" +GENERATE_SOURCEMAP='false' REACT_APP_EDNA_B2C_CLIENT_ID='NA' REACT_APP_EDNA_B2C_TENANT='NA' REACT_APP_EDNA_AUTH_CLIENT_ID='NA' +REACT_APP_EDNA_PLATFORM_SERVICE_URL='http://localhost:7075/api' +REACT_APP_EDNA_USERS_SERVICE_URL='http://localhost:7075/api' +REACT_APP_EDNA_LEARN_CONTENT='http://localhost:7074/api' +REACT_APP_EDNA_LINKS_SERVICE_URL='http://localhost:7073/api' +REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL='http://localhost:7071/api' +REACT_APP_EDNA_TENANT_ID='21510bb9-6414-46d0-9a07-1faf98f25937' +REACT_APP_EDNA_DEFAULT_SCOPE='api://f47872b6-bdeb-4b69-a3c2-25528a9a9f5b/default' +REACT_APP_EDNA_MAIN_URL='http://localhost:3000' +REACT_APP_EDNA_AAD_CLIENT_ID='f47872b6-bdeb-4b69-a3c2-25528a9a9f5b' diff --git a/client/.env.production b/client/.env.production index 80ae8de2..08960024 100644 --- a/client/.env.production +++ b/client/.env.production @@ -1,13 +1,13 @@ GENERATE_SOURCEMAP='false' -REACT_APP_EDNA_AUTH_CLIENT_ID='https://REACT_APP_EDNA_AUTH_CLIENT_ID xxxxxxxxxxxx.azurewebsites.net/api' -REACT_APP_EDNA_B2C_TENANT='https://REACT_APP_EDNA_B2C_TENANT.azurewebsites.net/api' -REACT_APP_EDNA_B2C_CLIENT_ID='https://REACT_APP_EDNA_B2C_CLIENT_ID.azurewebsites.net/api' -REACT_APP_EDNA_PLATFORM_SERVICE_URL='https://deploymentOutput.properties.outputs.PlatformsFunctionName.value.azurewebsites.net/api' -REACT_APP_EDNA_USERS_SERVICE_URL='https://deploymentOutput.properties.outputs.UsersFunctionName.value.azurewebsites.net/api' -REACT_APP_EDNA_LEARN_CONTENT='https://deploymentOutput.properties.outputs.LearnContentFunctionName.value.azurewebsites.net/api' -REACT_APP_EDNA_LINKS_SERVICE_URL='https://deploymentOutput.properties.outputs.LinksFunctionName.value.azurewebsites.net/api' -REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL='https://deploymentOutput.properties.outputs.AssignmentsFunctionName.value.azurewebsites.net/api' +REACT_APP_EDNA_AUTH_CLIENT_ID='https://ac80f9f8-7955-4771-95d8-0b4f9ae6d393.azurewebsites.net/api' +REACT_APP_EDNA_B2C_TENANT='https://playltib2c.azurewebsites.net/api' +REACT_APP_EDNA_B2C_CLIENT_ID='https://ac80f9f8-7955-4771-95d8-0b4f9ae6d393.azurewebsites.net/api' +REACT_APP_EDNA_PLATFORM_SERVICE_URL='https://platforms-wxc2hqz7m.azurewebsites.net/api' +REACT_APP_EDNA_USERS_SERVICE_URL='https://users-wxc2hqz7m.azurewebsites.net/api' +REACT_APP_EDNA_LEARN_CONTENT='https://learncontent-wxc2hqz7m.azurewebsites.net/api' +REACT_APP_EDNA_LINKS_SERVICE_URL='https://links-wxc2hqz7m.azurewebsites.net/api' +REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL='https://assignments-wxc2hqz7m.azurewebsites.net/api' REACT_APP_EDNA_TENANT_ID='21510bb9-6414-46d0-9a07-1faf98f25937' -REACT_APP_EDNA_DEFAULT_SCOPE='api://appinfo.appId/user_impersonation' -REACT_APP_EDNA_MAIN_URL='deploymentOutput.properties.outputs.webClientURL.value' -REACT_APP_EDNA_AAD_CLIENT_ID='appinfo.appId' +REACT_APP_EDNA_DEFAULT_SCOPE='api://e821dc21-7925-47af-ac86-c9481563f48a/user_impersonation' +REACT_APP_EDNA_MAIN_URL='https://learnclientwxc2hqz7m.z33.web.core.windows.net/' +REACT_APP_EDNA_AAD_CLIENT_ID='e821dc21-7925-47af-ac86-c9481563f48a' diff --git a/deployment/Cleanup.ps1 b/deployment/Cleanup.ps1 index e70392de..1ff2246a 100644 --- a/deployment/Cleanup.ps1 +++ b/deployment/Cleanup.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "DM_ad9_MSLearnLTI", - [string]$AppName = "DM_ad9_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "DM_ad10_MSLearnLTI", + [string]$AppName = "DM_ad10_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null ) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index e6ec09f9..cad63e47 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "DM_ad9_MSLearnLTI", - [string]$AppName = "DM_ad9_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "DM_ad10_MSLearnLTI", + [string]$AppName = "DM_ad10_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null @@ -323,6 +323,7 @@ process { Write-Title "STEP #11.B - .env.development file" $ServerUpdateConfigParams = @{ + ConfigPath="../client/.env.development"; b2cClientID=$REACT_APP_EDNA_B2C_CLIENT_ID; #defaulted to 'NA' if AD b2cTenantName=$REACT_APP_EDNA_B2C_TENANT; #defaulted to 'NA' if AD authClientID=$REACT_APP_EDNA_AUTH_CLIENT_ID #defaulted to 'NA' if AD diff --git a/deployment/Install-Client.ps1 b/deployment/Install-Client.ps1 index 095a6e1d..f061e200 100644 --- a/deployment/Install-Client.ps1 +++ b/deployment/Install-Client.ps1 @@ -141,8 +141,26 @@ function Update-ServerConfig { Write-ClientDebugLog -Message "Creating new configuration" + + #region "Getting the current config" + $text = Get-Content $ConfigPath + $configValues = $text | ConvertFrom-StringData + #endregion + + #region "Updating the config using old values for all except the new b2c related stuff" $Config = @{ GENERATE_SOURCEMAP="false"; + + [DotEnv]::REACT_APP_EDNA_AAD_CLIENT_ID=($configValues.REACT_APP_EDNA_AAD_CLIENT_ID -replace '"' -replace "'"); + [DotEnv]::REACT_APP_EDNA_MAIN_URL=($configValues.REACT_APP_EDNA_MAIN_URL -replace '"' -replace "'"); + [DotEnv]::REACT_APP_EDNA_DEFAULT_SCOPE=($configValues.REACT_APP_EDNA_DEFAULT_SCOPE -replace '"' -replace "'"); + [DotEnv]::REACT_APP_EDNA_TENANT_ID=($configValues.REACT_APP_EDNA_TENANT_ID -replace '"' -replace "'"); + [DotEnv]::REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL=($configValues.REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL -replace '"' -replace "'"); + [DotEnv]::REACT_APP_EDNA_LINKS_SERVICE_URL=($configValues.REACT_APP_EDNA_LINKS_SERVICE_URL -replace '"' -replace "'"); + [DotEnv]::REACT_APP_EDNA_LEARN_CONTENT=($configValues.REACT_APP_EDNA_LEARN_CONTENT -replace '"' -replace "'"); + [DotEnv]::REACT_APP_EDNA_USERS_SERVICE_URL=($configValues.REACT_APP_EDNA_USERS_SERVICE_URL -replace '"' -replace "'"); + [DotEnv]::REACT_APP_EDNA_PLATFORM_SERVICE_URL=($configValues.REACT_APP_EDNA_USERS_SERVICE_URL -replace '"' -replace "'"); + [DotEnv]::REACT_APP_EDNA_B2C_CLIENT_ID="$(Get-ServiceUrl $b2cClientID)"; [DotEnv]::REACT_APP_EDNA_B2C_TENANT="$(Get-ServiceUrl $b2cTenantName)"; [DotEnv]::REACT_APP_EDNA_AUTH_CLIENT_ID="$(Get-ServiceUrl $authClientID)" @@ -151,6 +169,7 @@ function Update-ServerConfig { Write-ClientDebugLog -Message "Updating [ $ConfigPath ] with new config variables" Export-DotEnv $Config $ConfigPath + #endregion Write-Output "Client Config Updated Successfully" } diff --git a/deployment/azuredeploy.json b/deployment/azuredeploy.json index 5cb5a34b..83df41e0 100644 --- a/deployment/azuredeploy.json +++ b/deployment/azuredeploy.json @@ -20,7 +20,7 @@ } }, "variables": { - "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, '20220726055019'),0,9)]", + "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, '20220727122022'),0,9)]", "functionList": [ "connect", "assignments", @@ -29,7 +29,7 @@ "platforms", "users" ], - "AzureB2C_AUTHENTICATION_SECRET": "", + "AzureB2C_AUTHENTICATION_SECRET": "9bg8Q~y8lU1VLV4IrUcfjfY1lNSb3hCB43pJHc.2", "enabledForDeployment": false, "enabledForDiskEncryption": false, "enabledForTemplateDeployment": false, @@ -549,3 +549,4 @@ } } + From d8f7091a843cf397814bc2f753bf746f75f3efe4 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Wed, 27 Jul 2022 13:24:59 +0100 Subject: [PATCH 123/285] prompt for b2c cleanup at the beginning --- deployment/Cleanup.ps1 | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/deployment/Cleanup.ps1 b/deployment/Cleanup.ps1 index f308d47d..4f357fbe 100644 --- a/deployment/Cleanup.ps1 +++ b/deployment/Cleanup.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "RB_policy2_MSLearnLTI", - [string]$AppName = "RB_policy2_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "RB_graph1_MSLearnLTI", + [string]$AppName = "RB_graph1_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null ) @@ -126,7 +126,20 @@ process { $ActiveSubscription = Set-LtiActiveSubscription -NameOrId $SubscriptionNameOrId -List $SubscriptionList #endregion + #region B2c if needed + Write-Title "Optional B2C cleanup" + $b2ccleanup = "none" + while($b2ccleanup -ne "yes" -and $b2ccleanup -ne "no") { + $b2ccleanup = Read-Host "Would you like to to cleanup a B2C tenant? (yes/no)" + } + if($b2ccleanup -eq "yes") + { + Write-Title "Step #5 - Running B2C Cleanup Script" + & ".\B2CCleanup.ps1" + } + #endregion + #region Delete Resource Group, if Exists Write-Title 'STEP #3 - Delete Resource Group' az group delete --name $ResourceGroupName --yes @@ -154,6 +167,4 @@ process { Write-Log -Message "Clean-up Complete" Write-Warning 'Please use a different ResourceGroup name on re-deployment!' - Write-Title "Step #5 - Running B2C Cleanup Script" - & ".\B2CCleanup.ps1" } \ No newline at end of file From 9e6422b55fdc6471eeae60f9c17df17d4fe57744 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Wed, 27 Jul 2022 13:47:32 +0100 Subject: [PATCH 124/285] Fixed merge conflict in .env.production --- client/.env.production | 6 ------ 1 file changed, 6 deletions(-) diff --git a/client/.env.production b/client/.env.production index b7b02da7..28a98f1d 100644 --- a/client/.env.production +++ b/client/.env.production @@ -5,15 +5,9 @@ REACT_APP_EDNA_LEARN_CONTENT='https://learncontent-f36nyrjvo.azurewebsites.net/a REACT_APP_EDNA_LINKS_SERVICE_URL='https://links-f36nyrjvo.azurewebsites.net/api' REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL='https://assignments-f36nyrjvo.azurewebsites.net/api' REACT_APP_EDNA_TENANT_ID='21510bb9-6414-46d0-9a07-1faf98f25937' -<<<<<<< HEAD -REACT_APP_EDNA_DEFAULT_SCOPE='api://562065a6-f163-49ce-9b62-cb94283f51cd/user_impersonation' -REACT_APP_EDNA_MAIN_URL='https://learnclientf36nyrjvo.z33.web.core.windows.net/' -REACT_APP_EDNA_AAD_CLIENT_ID='562065a6-f163-49ce-9b62-cb94283f51cd' -======= REACT_APP_EDNA_DEFAULT_SCOPE='api://8536df83-6587-4a24-87cc-62a917ad17f8/user_impersonation' REACT_APP_EDNA_MAIN_URL='https://learnclientofdd7tsmz.z33.web.core.windows.net/' REACT_APP_EDNA_AAD_CLIENT_ID='8536df83-6587-4a24-87cc-62a917ad17f8' REACT_APP_EDNA_B2C_CLIENT_ID=NULL REACT_APP_EDNA_B2C_TENANT=NULL REACT_APP_EDNA_AUTH_CLIENT_ID=NULL ->>>>>>> 3311232b1829da1deb9da631334771d2d04f415c From 15ca7fae938cd3bd12e51362e70122ae815f344f Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Wed, 27 Jul 2022 13:51:45 +0100 Subject: [PATCH 125/285] renamed 'Update-ServerConfig' to 'Update-DevelopmentConfig' to improve accuracy of the name --- deployment/Deploy.ps1 | 6 +++--- deployment/Install-Client.ps1 | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index cad63e47..4baf6fe5 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -320,15 +320,15 @@ process { } Update-ClientConfig @ClientUpdateConfigParams - Write-Title "STEP #11.B - .env.development file" + Write-Title "STEP #11.B - Updating .env.development file" - $ServerUpdateConfigParams = @{ + $DevelopmentUpdateConfigParams = @{ ConfigPath="../client/.env.development"; b2cClientID=$REACT_APP_EDNA_B2C_CLIENT_ID; #defaulted to 'NA' if AD b2cTenantName=$REACT_APP_EDNA_B2C_TENANT; #defaulted to 'NA' if AD authClientID=$REACT_APP_EDNA_AUTH_CLIENT_ID #defaulted to 'NA' if AD } - Update-ServerConfig @ServerUpdateConfigParams + Update-DevelopmentConfig @DevelopmentUpdateConfigParams if($b2cOrAD -eq "b2c"){ Write-Title "Step #11.C - Updating the B2C secret in the azuredeploy.json" diff --git a/deployment/Install-Client.ps1 b/deployment/Install-Client.ps1 index f061e200..d07beb00 100644 --- a/deployment/Install-Client.ps1 +++ b/deployment/Install-Client.ps1 @@ -125,7 +125,7 @@ function Update-ClientConfig { Write-Output "Client Config Updated Successfully" } -function Update-ServerConfig { +function Update-DevelopmentConfig { [CmdletBinding(SupportsShouldProcess)] param ( From f90ed9ac4998c647479d04b5ca97f9c7195a3c2d Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Wed, 27 Jul 2022 13:58:39 +0100 Subject: [PATCH 126/285] Modified code to select AD vs B2C tenant depending on value of b2cOrAD variable --- deployment/Deploy.ps1 | 17 ++++++++++++----- deployment/azuredeployADtemplate.json | 2 +- deployment/azuredeployB2CTemplate.json | 2 +- deployment/azuredeployTemplate.json | Bin 66404 -> 66416 bytes deployment/b2cSavedParams (2).csv | Bin 674 -> 0 bytes 5 files changed, 14 insertions(+), 7 deletions(-) delete mode 100644 deployment/b2cSavedParams (2).csv diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 4baf6fe5..fa8d1afc 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -20,11 +20,6 @@ process { } try { - #region "formatting a unique identifier to ensure we create a new keyvault for each run" - $uniqueIdentifier = [Int64]((Get-Date).ToString('yyyyMMddhhmmss')) #get the current second as being the unique identifier - ((Get-Content -path ".\azuredeployTemplate.json" -Raw) -replace '', ("'"+$uniqueIdentifier+"'")) | Set-Content -path (".\azuredeploy.json") - #endregion - #region Show Learn LTI Banner Write-Host '' Write-Host ' _ ______ _____ _ _ _ _______ _____ ' @@ -44,6 +39,18 @@ process { } #endregion + #region "formatting a unique identifier to ensure we create a new keyvault for each run" + $uniqueIdentifier = [Int64]((Get-Date).ToString('yyyyMMddhhmmss')) #get the current second as being the unique identifier + #if its b2c load the b2c azuredeploy template + if($b2cOrAD -eq "b2c"){ + ((Get-Content -path ".\azuredeployB2CTemplate.json" -Raw) -replace '', ("'"+$uniqueIdentifier+"'")) | Set-Content -path (".\azuredeploy.json") + } + #else its AD load the AD azuredeploy template + else{ + ((Get-Content -path ".\azuredeployADTemplate.json" -Raw) -replace '', ("'"+$uniqueIdentifier+"'")) | Set-Content -path (".\azuredeploy.json") + } + #endregion + #region Setup Logging . .\Write-Log.ps1 $ScriptPath = split-path -parent $MyInvocation.MyCommand.Definition diff --git a/deployment/azuredeployADtemplate.json b/deployment/azuredeployADtemplate.json index f308344a..52f8bde9 100644 --- a/deployment/azuredeployADtemplate.json +++ b/deployment/azuredeployADtemplate.json @@ -20,7 +20,7 @@ } }, "variables": { - "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, '20220725051843'),0,9)]", + "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, ),0,9)]", "functionList": [ "connect", "assignments", diff --git a/deployment/azuredeployB2CTemplate.json b/deployment/azuredeployB2CTemplate.json index d18928bb..9521b0c7 100644 --- a/deployment/azuredeployB2CTemplate.json +++ b/deployment/azuredeployB2CTemplate.json @@ -20,7 +20,7 @@ } }, "variables": { - "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, '20220725051843'),0,9)]", + "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, ),0,9)]", "functionList": [ "connect", "assignments", diff --git a/deployment/azuredeployTemplate.json b/deployment/azuredeployTemplate.json index af0ab82be82b8d680588b18927b495ec4bd03c81..8a0b7b6d500fb4cf2f770d7948dc4eaa500ca69f 100644 GIT binary patch delta 18 acmaFT#`2+!Wy3C($qvg|Hg96t^bY`2#|Z8K delta 14 Wcmey+#`2_%Wy3C(&Bs_){R03t`v-gg diff --git a/deployment/b2cSavedParams (2).csv b/deployment/b2cSavedParams (2).csv deleted file mode 100644 index 7baa03ce2a9f97eabb0e7dad298e9395d0b34c00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 674 zcma))OHaZ;6ot>)#D4;2=o6L*@kQzjjqFV6BS9%(sS92B)75VVHcf~zlXheO8yJl&6r$VoDeh zyo}g~8NoT$k^WMfg3VO(Zcw%8C*rwA_*)QJUpq$`H9cxt<$-cEQ>SRv18S7G+T{x8 zEd?9kz_4;E_3`P$Ijqt4k!VZBzV7q|^HVdvL+T`&p#8!0)_P@+@Ho*6h*0Ow!-kWX zvngKBI7!JDPV<(%Rt00rT7X*}=rV?FXYQdM5!t!hjO{I;LP(#s%N{-XM6sJlPR0-$ zFd-T5UyALX$9THf_ngqdjJr|mMvth^hzxosZqh@1l%VgK#WUw4z7xIaihtLox7^(> eJLglJWUV`PjnfKzXMg`H=CFpbBsX_x%lieKGHo*e From 0c9b22bc21f9b9973b8fe20bd284f4429a292140 Mon Sep 17 00:00:00 2001 From: Lilin Huang Date: Wed, 27 Jul 2022 15:26:06 +0100 Subject: [PATCH 127/285] Add checking on prerequisites --- deployment/Deploy.ps1 | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index fa8d1afc..c9c0aa64 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -18,6 +18,45 @@ process { Write-Host $Title Write-Host "=============================================================`n`n" } + + # Checking Azure CLI is installed + $AzCliCheck= (az version | ConvertFrom-Json | Select -ExpandProperty "azure-cli") + if( $AzCliCheck -eq $null){ + Write-Host "Azure CLI is not installed and please go to this link to install. (https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest%3FWT.mc_id%3Dlearnlti-github-cxa)" + exit + } + else { + Write-Host "Azure CLI is installed." + } + # Checking .Net Framework is installed + $NetFrCheck= (dotnet --list-sdks) + if( $NetFrCheck -eq $null){ + Write-Host ".Net Framework is not installed and please go to this link to install. (https://dotnet.microsoft.com/en-us/download/dotnet/3.1?WT.mc_id=learnlti-github-cxa)" + exit + } + else { + Write-Host ".Net Framework is installed." + } + # Checking Node.js is installed + $NodejsCheck= (node -v) + if( $NodejsCheck -eq $null){ + Write-Host "Node.js is not installed and please go to this link to install. (https://nodejs.org/en/download/)" + exit + } + else { + Write-Host "Node.js is installed." + } + # Checking Git is installed + $GitCheck= (git --version) + if( $GitCheck -eq $null){ + Write-Host "Git is not installed and please go to this link to install. (https://git-scm.com/downloads)" + exit + } + else { + Write-Host "Git is installed." + } + + Write-Host "All pre-requisites checks are done." try { #region Show Learn LTI Banner From ec2e3bd7565fa08641d3eccf8b8308dcde3167e3 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Wed, 27 Jul 2022 15:44:01 +0100 Subject: [PATCH 128/285] Deploy SPA uri to B2C --- deployment/B2CDeployment.ps1 | 9 ++++++--- deployment/Deploy.ps1 | 8 +++++++- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index a7bd241f..8fcc2baf 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -95,7 +95,10 @@ az login --tenant "$B2cTenantName.onmicrosoft.com" --allow-no-subscriptions --on #region "STEP 3: Create the web app" Write-Title "STEP 3: Creating the B2C Web application" $B2cAppName = Read-Host "Please give a name for the web application to be created" -$WebClientID = (az ad app create --display-name $B2cAppName --sign-in-audience AzureADandPersonalMicrosoftAccount --web-redirect-uris https://jwt.ms --enable-access-token-issuance true --enable-id-token-issuance true --query appId --output tsv --only-show-errors) +$appinfo = (az ad app create --display-name $AppName --sign-in-audience AzureADandPersonalMicrosoftAccount --web-redirect-uris https://jwt.ms --enable-access-token-issuance true --enable-id-token-issuance true --only-show-errors) | ConvertFrom-Json +$WebClientID = $appinfo.appId +$ObjectId = $appinfo.id +#(az ad app create --display-name $B2cAppName --sign-in-audience AzureADandPersonalMicrosoftAccount --web-redirect-uris https://jwt.ms --enable-access-token-issuance true --enable-id-token-issuance true --query appId --output tsv --only-show-errors) "$WebClientID,$B2cTenantName" | Out-File -FilePath $AppInfoCSVPath -Append @@ -619,7 +622,7 @@ CustomPolicyUpdateOrUpload "B2C_1A_TrustFrameworkExtensions" $customPolicies $ac CustomPolicyUpdateOrUpload "B2C_1A_signup_signin" $customPolicies $access_token CustomPolicyUpdateOrUpload "B2C_1A_ProfileEdit" $customPolicies $access_token CustomPolicyUpdateOrUpload "B2C_1A_PasswordReset" $customPolicies $access_token -#endregion +#endregionWebClientID #returning values required by the Deploy.ps1 script -return $WebClientID, $WebClientSecret, $B2cTenantName \ No newline at end of file +return $WebClientID, $WebClientSecret, $B2cTenantName, $ObjectId \ No newline at end of file diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 430009b9..c0393d54 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -70,7 +70,8 @@ process { $REACT_APP_EDNA_B2C_CLIENT_ID = $results[0] #webclient ID $REACT_APP_EDNA_AUTH_CLIENT_ID = $results[0] #webclient ID $b2c_secret = $results[1] #webclient secret - $REACT_APP_EDNA_B2C_TENANT = $results[2] #b2c tenant name + $REACT_APP_EDNA_B2C_TENANT = $results[2] #b2c tenant name + $B2C_ObjectID = $results[3] # b2c webapp id that needs the SPA uri } #endregion @@ -397,6 +398,11 @@ process { Write-Log -Message "Pointing to $graphUrl and using body $body" az rest --method PATCH --uri $graphUrl --headers 'Content-Type=application/json' --body $body + if ($b2cOrAD eq "b2c"){ #Set the SPA uri link on the B2C as well + $graphUrl = "https://graph.microsoft.com/v1.0/applications/$($B2C_ObjectID)" + az rest --method PATCH --uri $graphUrl --headers 'Content-Type=application/json' --body $body + } + #Intentionally not catching an exception here since the app update commands behavior (output) is different from others Write-Host 'App Update Completed Successfully' From 92f3ed1fcda5c593e67dffa6165b40f89c75a251 Mon Sep 17 00:00:00 2001 From: Sundram Goyal Date: Wed, 27 Jul 2022 16:14:57 +0100 Subject: [PATCH 129/285] Issue 192 resolved --- deployment/Deploy.ps1 | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index c9c0aa64..0fedaae5 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "DM_ad10_MSLearnLTI", - [string]$AppName = "DM_ad10_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "LH_a1_MSLearnLTI", + [string]$AppName = "LH_a1_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null @@ -207,6 +207,26 @@ process { $UserEmailAddress = $ActiveSubscription.user.name #endregion + Write-Host "Checking if resource group already exists..." + $checkResourceGroupExist = (az group exists --resource-group $ResourceGroupName) + if($checkResourceGroupExist -eq $true){ + Write-Host "Resource Group exists. Please cleanup the existing resources to create the new one." + $choice = Read-Host "Do you want to cleanup the resources or do you want to exit?(y for cleanup or any other key for exit):" + $choice = $choice.Trim() + if ($choice -eq 'y') { + Write-Title "Running Cleanup Script" + $clean = & ".\cleanup.ps1" -ResourceGroupName $ResourceGroupName -AppName $AppName + } + else { + Write-Host "Exiting..." + exit + } + } + else { + Write-Host "Continuing deployment process..." + } + + #region Choose Region for Deployment Write-Title "STEP #3 - Choose Location`n(Please refer to the Documentation / ReadMe on Github for the List of Supported Locations)" From f5b1767b9b7aa061552205b756337ba6c1037b3d Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Wed, 27 Jul 2022 16:30:42 +0100 Subject: [PATCH 130/285] Fixed formatting issues when updating .env.development and .env.production --- client/.env.development | 6 ++--- client/.env.production | 22 +++++++++--------- deployment/B2CDeployment.ps1 | 2 +- deployment/Cleanup.ps1 | 4 ++-- deployment/Deploy.ps1 | 16 +++++++++----- deployment/Install-Client.ps1 | 32 +++++++++++++-------------- deployment/azuredeploy.json | 6 +++-- deployment/azuredeployADtemplate.json | 3 ++- 8 files changed, 50 insertions(+), 41 deletions(-) diff --git a/client/.env.development b/client/.env.development index 067b6572..0ee19953 100644 --- a/client/.env.development +++ b/client/.env.development @@ -1,7 +1,7 @@ GENERATE_SOURCEMAP='false' -REACT_APP_EDNA_B2C_CLIENT_ID='NA' -REACT_APP_EDNA_B2C_TENANT='NA' -REACT_APP_EDNA_AUTH_CLIENT_ID='NA' +REACT_APP_EDNA_AUTH_CLIENT_ID='2dcdb504-34c3-4463-ab8f-33a5c6e285c3' +REACT_APP_EDNA_B2C_TENANT='playltib2c' +REACT_APP_EDNA_B2C_CLIENT_ID='2dcdb504-34c3-4463-ab8f-33a5c6e285c3' REACT_APP_EDNA_PLATFORM_SERVICE_URL='http://localhost:7075/api' REACT_APP_EDNA_USERS_SERVICE_URL='http://localhost:7075/api' REACT_APP_EDNA_LEARN_CONTENT='http://localhost:7074/api' diff --git a/client/.env.production b/client/.env.production index 08960024..cc766c1d 100644 --- a/client/.env.production +++ b/client/.env.production @@ -1,13 +1,13 @@ GENERATE_SOURCEMAP='false' -REACT_APP_EDNA_AUTH_CLIENT_ID='https://ac80f9f8-7955-4771-95d8-0b4f9ae6d393.azurewebsites.net/api' -REACT_APP_EDNA_B2C_TENANT='https://playltib2c.azurewebsites.net/api' -REACT_APP_EDNA_B2C_CLIENT_ID='https://ac80f9f8-7955-4771-95d8-0b4f9ae6d393.azurewebsites.net/api' -REACT_APP_EDNA_PLATFORM_SERVICE_URL='https://platforms-wxc2hqz7m.azurewebsites.net/api' -REACT_APP_EDNA_USERS_SERVICE_URL='https://users-wxc2hqz7m.azurewebsites.net/api' -REACT_APP_EDNA_LEARN_CONTENT='https://learncontent-wxc2hqz7m.azurewebsites.net/api' -REACT_APP_EDNA_LINKS_SERVICE_URL='https://links-wxc2hqz7m.azurewebsites.net/api' -REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL='https://assignments-wxc2hqz7m.azurewebsites.net/api' +REACT_APP_EDNA_AUTH_CLIENT_ID='2dcdb504-34c3-4463-ab8f-33a5c6e285c3' +REACT_APP_EDNA_B2C_TENANT='playltib2c' +REACT_APP_EDNA_B2C_CLIENT_ID='2dcdb504-34c3-4463-ab8f-33a5c6e285c3' +REACT_APP_EDNA_PLATFORM_SERVICE_URL='https://platforms-nuu2fohq4.azurewebsites.net/api' +REACT_APP_EDNA_USERS_SERVICE_URL='https://users-nuu2fohq4.azurewebsites.net/api' +REACT_APP_EDNA_LEARN_CONTENT='https://learncontent-nuu2fohq4.azurewebsites.net/api' +REACT_APP_EDNA_LINKS_SERVICE_URL='https://links-nuu2fohq4.azurewebsites.net/api' +REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL='https://assignments-nuu2fohq4.azurewebsites.net/api' REACT_APP_EDNA_TENANT_ID='21510bb9-6414-46d0-9a07-1faf98f25937' -REACT_APP_EDNA_DEFAULT_SCOPE='api://e821dc21-7925-47af-ac86-c9481563f48a/user_impersonation' -REACT_APP_EDNA_MAIN_URL='https://learnclientwxc2hqz7m.z33.web.core.windows.net/' -REACT_APP_EDNA_AAD_CLIENT_ID='e821dc21-7925-47af-ac86-c9481563f48a' +REACT_APP_EDNA_DEFAULT_SCOPE='api://0e8d21c9-a2a5-4fe6-83f3-7ce62c4f0e04/user_impersonation' +REACT_APP_EDNA_MAIN_URL='https://learnclientnuu2fohq4.z33.web.core.windows.net/' +REACT_APP_EDNA_AAD_CLIENT_ID='0e8d21c9-a2a5-4fe6-83f3-7ce62c4f0e04' diff --git a/deployment/B2CDeployment.ps1 b/deployment/B2CDeployment.ps1 index 387d4fd0..05cd684e 100644 --- a/deployment/B2CDeployment.ps1 +++ b/deployment/B2CDeployment.ps1 @@ -378,7 +378,7 @@ while(1){ $PMA_Page = "https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/~/CallAnAPI/appId/$PermissionClientID/isMSAApp~/false" Write-Color "Yellow" "$PMA_Page" Write-Host "Please check the markdown https://github.com/UCL-MSc-Learn-LTI/Learn-LTI/deployment/B2C_Docs/B2C_Deployment.md if you require assistance on how to do this." - Read-Host "Press enter after manually granting the admin consent permission" + Read-Host "Press enter after manually granting the admin consent permission and waiting 10 seconds" } } diff --git a/deployment/Cleanup.ps1 b/deployment/Cleanup.ps1 index 1ff2246a..d29e4239 100644 --- a/deployment/Cleanup.ps1 +++ b/deployment/Cleanup.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "DM_ad10_MSLearnLTI", - [string]$AppName = "DM_ad10_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "DM_ad14_MSLearnLTI", + [string]$AppName = "DM_ad14_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null ) diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index fa8d1afc..8d870db7 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -5,8 +5,8 @@ [CmdletBinding()] param ( - [string]$ResourceGroupName = "DM_ad10_MSLearnLTI", - [string]$AppName = "DM_ad10_MS-Learn-Lti-Tool-App", + [string]$ResourceGroupName = "DM_ad14_MSLearnLTI", + [string]$AppName = "DM_ad14_MS-Learn-Lti-Tool-App", [switch]$UseActiveAzureAccount, [string]$SubscriptionNameOrId = $null, [string]$LocationName = $null @@ -67,7 +67,7 @@ process { #region "B2C STEP 1: Calling B2CDeployment to set up the b2c script and retrieving the returned values to be used later on" $REACT_APP_EDNA_B2C_CLIENT_ID = "'NA'" - $REACT_APP_EDNA_AUTH_CLIENT_ID = "'NA'" + $REACT_APP_EDNA_AUTH_CLIENT_ID = "'Placeholder'" # either replaced below by returned value of b2c script if b2cOrAD = "b2c", or just before step 11.a to AAD_Client_ID's ($appinfo.appId) value if b2cOrAD = "ad" $b2c_secret = "'NA'" $REACT_APP_EDNA_B2C_TENANT = "'NA'" if($b2cOrAD -eq "b2c"){ @@ -309,6 +309,12 @@ process { #endregion #region Build and Publish Client Artifacts + + # if this is in AD mode not b2c, then AUTH_CLIENT_ID is the same as AAD_ClientID + if($b2cOrAD -eq "ad"){ + $REACT_APP_EDNA_AUTH_CLIENT_ID = $appinfo.appId + } + . .\Install-Client.ps1 Write-Title "STEP #11.A - Updating client's .env.production file" @@ -323,7 +329,7 @@ process { StaticWebsiteUrl=$deploymentOutput.properties.outputs.webClientURL.value; b2cClientID=$REACT_APP_EDNA_B2C_CLIENT_ID; #defaulted to 'NA' if AD b2cTenantName=$REACT_APP_EDNA_B2C_TENANT; #defaulted to 'NA' if AD - authClientID=$REACT_APP_EDNA_AUTH_CLIENT_ID #defaulted to 'NA' if AD + authClientID=$REACT_APP_EDNA_AUTH_CLIENT_ID #defaulted to $appinfo.appId if AD } Update-ClientConfig @ClientUpdateConfigParams @@ -333,7 +339,7 @@ process { ConfigPath="../client/.env.development"; b2cClientID=$REACT_APP_EDNA_B2C_CLIENT_ID; #defaulted to 'NA' if AD b2cTenantName=$REACT_APP_EDNA_B2C_TENANT; #defaulted to 'NA' if AD - authClientID=$REACT_APP_EDNA_AUTH_CLIENT_ID #defaulted to 'NA' if AD + authClientID=$REACT_APP_EDNA_AUTH_CLIENT_ID #defaulted to $appinfo.appId if AD } Update-DevelopmentConfig @DevelopmentUpdateConfigParams diff --git a/deployment/Install-Client.ps1 b/deployment/Install-Client.ps1 index d07beb00..fb9bda4e 100644 --- a/deployment/Install-Client.ps1 +++ b/deployment/Install-Client.ps1 @@ -113,9 +113,9 @@ function Update-ClientConfig { [DotEnv]::REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL="$(Get-ServiceUrl $AssignmentsFunctionAppName)"; [DotEnv]::REACT_APP_EDNA_PLATFORM_SERVICE_URL="$(Get-ServiceUrl $PlatformsFunctionAppName)"; [DotEnv]::REACT_APP_EDNA_USERS_SERVICE_URL="$(Get-ServiceUrl $UsersFunctionAppName)"; - [DotEnv]::REACT_APP_EDNA_B2C_CLIENT_ID="$(Get-ServiceUrl $b2cClientID)"; - [DotEnv]::REACT_APP_EDNA_B2C_TENANT="$(Get-ServiceUrl $b2cTenantName)"; - [DotEnv]::REACT_APP_EDNA_AUTH_CLIENT_ID="$(Get-ServiceUrl $authClientID)" + [DotEnv]::REACT_APP_EDNA_B2C_CLIENT_ID="$b2cClientID"; + [DotEnv]::REACT_APP_EDNA_B2C_TENANT="$b2cTenantName"; + [DotEnv]::REACT_APP_EDNA_AUTH_CLIENT_ID="$authClientID" } Write-ClientDebugLog -Message "Updated Configuration:-`n$($Config | Out-String)" @@ -151,19 +151,19 @@ function Update-DevelopmentConfig { $Config = @{ GENERATE_SOURCEMAP="false"; - [DotEnv]::REACT_APP_EDNA_AAD_CLIENT_ID=($configValues.REACT_APP_EDNA_AAD_CLIENT_ID -replace '"' -replace "'"); - [DotEnv]::REACT_APP_EDNA_MAIN_URL=($configValues.REACT_APP_EDNA_MAIN_URL -replace '"' -replace "'"); - [DotEnv]::REACT_APP_EDNA_DEFAULT_SCOPE=($configValues.REACT_APP_EDNA_DEFAULT_SCOPE -replace '"' -replace "'"); - [DotEnv]::REACT_APP_EDNA_TENANT_ID=($configValues.REACT_APP_EDNA_TENANT_ID -replace '"' -replace "'"); - [DotEnv]::REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL=($configValues.REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL -replace '"' -replace "'"); - [DotEnv]::REACT_APP_EDNA_LINKS_SERVICE_URL=($configValues.REACT_APP_EDNA_LINKS_SERVICE_URL -replace '"' -replace "'"); - [DotEnv]::REACT_APP_EDNA_LEARN_CONTENT=($configValues.REACT_APP_EDNA_LEARN_CONTENT -replace '"' -replace "'"); - [DotEnv]::REACT_APP_EDNA_USERS_SERVICE_URL=($configValues.REACT_APP_EDNA_USERS_SERVICE_URL -replace '"' -replace "'"); - [DotEnv]::REACT_APP_EDNA_PLATFORM_SERVICE_URL=($configValues.REACT_APP_EDNA_USERS_SERVICE_URL -replace '"' -replace "'"); - - [DotEnv]::REACT_APP_EDNA_B2C_CLIENT_ID="$(Get-ServiceUrl $b2cClientID)"; - [DotEnv]::REACT_APP_EDNA_B2C_TENANT="$(Get-ServiceUrl $b2cTenantName)"; - [DotEnv]::REACT_APP_EDNA_AUTH_CLIENT_ID="$(Get-ServiceUrl $authClientID)" + [DotEnv]::REACT_APP_EDNA_AAD_CLIENT_ID="$($configValues.REACT_APP_EDNA_AAD_CLIENT_ID -replace '"' -replace "'")"; + [DotEnv]::REACT_APP_EDNA_MAIN_URL="$($configValues.REACT_APP_EDNA_MAIN_URL -replace '"' -replace "'")"; + [DotEnv]::REACT_APP_EDNA_DEFAULT_SCOPE="$($configValues.REACT_APP_EDNA_DEFAULT_SCOPE -replace '"' -replace "'")"; + [DotEnv]::REACT_APP_EDNA_TENANT_ID="$($configValues.REACT_APP_EDNA_TENANT_ID -replace '"' -replace "'")"; + [DotEnv]::REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL="$($configValues.REACT_APP_EDNA_ASSIGNMENT_SERVICE_URL -replace '"' -replace "'")"; + [DotEnv]::REACT_APP_EDNA_LINKS_SERVICE_URL="$($configValues.REACT_APP_EDNA_LINKS_SERVICE_URL -replace '"' -replace "'")"; + [DotEnv]::REACT_APP_EDNA_LEARN_CONTENT="$($configValues.REACT_APP_EDNA_LEARN_CONTENT -replace '"' -replace "'")"; + [DotEnv]::REACT_APP_EDNA_USERS_SERVICE_URL="$($configValues.REACT_APP_EDNA_USERS_SERVICE_URL -replace '"' -replace "'")"; + [DotEnv]::REACT_APP_EDNA_PLATFORM_SERVICE_URL="$($configValues.REACT_APP_EDNA_USERS_SERVICE_URL -replace '"' -replace "'")"; + + [DotEnv]::REACT_APP_EDNA_B2C_CLIENT_ID="$b2cClientID"; + [DotEnv]::REACT_APP_EDNA_B2C_TENANT="$b2cTenantName"; + [DotEnv]::REACT_APP_EDNA_AUTH_CLIENT_ID="$authClientID" } Write-ClientDebugLog -Message "Updated Configuration:-`n$($Config | Out-String)" diff --git a/deployment/azuredeploy.json b/deployment/azuredeploy.json index 83df41e0..9d6ddadb 100644 --- a/deployment/azuredeploy.json +++ b/deployment/azuredeploy.json @@ -20,7 +20,7 @@ } }, "variables": { - "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, '20220727122022'),0,9)]", + "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, '20220727033446'),0,9)]", "functionList": [ "connect", "assignments", @@ -29,7 +29,7 @@ "platforms", "users" ], - "AzureB2C_AUTHENTICATION_SECRET": "9bg8Q~y8lU1VLV4IrUcfjfY1lNSb3hCB43pJHc.2", + "AzureB2C_AUTHENTICATION_SECRET": "-D98Q~IT69IkQvKNsTUjBghBC9a8JI1E.gon7ciE", "enabledForDeployment": false, "enabledForDiskEncryption": false, "enabledForTemplateDeployment": false, @@ -550,3 +550,5 @@ } + + diff --git a/deployment/azuredeployADtemplate.json b/deployment/azuredeployADtemplate.json index 52f8bde9..2ddca09d 100644 --- a/deployment/azuredeployADtemplate.json +++ b/deployment/azuredeployADtemplate.json @@ -160,7 +160,8 @@ "allowedPrincipals": {} } } - }, + } + }, "login": { "tokenStore": { "enabled": true From 0ad26b1c9a157a377481d238a035636f879ba57a Mon Sep 17 00:00:00 2001 From: Tianchen Zhang Date: Wed, 27 Jul 2022 17:45:25 +0100 Subject: [PATCH 131/285] feat: token validation and stable b2c-ad-token handlers --- .../Edna.Assignments/AssignmentsApi.cs | 2 +- .../Edna.Platforms/PlatformsApi.cs | 31 ++++++++------- .../Edna.Utils.Http/HttpClaimsExtension.cs | 38 ++++++------------- .../Edna.Utils.Http/HttpHeadersExtensions.cs | 26 +++++++++---- deployment/azuredeploy.json | 20 +++++----- 5 files changed, 56 insertions(+), 61 deletions(-) diff --git a/backend/Functions/Edna.Assignments/Edna.Assignments/AssignmentsApi.cs b/backend/Functions/Edna.Assignments/Edna.Assignments/AssignmentsApi.cs index cce4c4c9..c7684954 100644 --- a/backend/Functions/Edna.Assignments/Edna.Assignments/AssignmentsApi.cs +++ b/backend/Functions/Edna.Assignments/Edna.Assignments/AssignmentsApi.cs @@ -65,7 +65,7 @@ public async Task CreateOrUpdateAssignment( if (!await req.Headers.ValidateToken(OpenIdConfigurationUrl, ValidAudience, message => _logger.LogError(message))) return new UnauthorizedResult(); - bool isSystemCallOrUserWithValidEmail = req.Headers.TryGetUserEmails(out List userEmails); + bool isSystemCallOrUserWithValidEmail = req.Headers.TryGetUserEmails(out List userEmails, message => _logger.LogInformation(message)); if (!isSystemCallOrUserWithValidEmail) { _logger.LogError("Could not get user email."); diff --git a/backend/Functions/Edna.Platforms/Edna.Platforms/PlatformsApi.cs b/backend/Functions/Edna.Platforms/Edna.Platforms/PlatformsApi.cs index 6b6f5092..544f6597 100644 --- a/backend/Functions/Edna.Platforms/Edna.Platforms/PlatformsApi.cs +++ b/backend/Functions/Edna.Platforms/Edna.Platforms/PlatformsApi.cs @@ -159,27 +159,26 @@ private async Task ValidatePermission(HttpRequest req) // By checking appidacr claim, we can know if the call was made by a user or by the system. // https://docs.microsoft.com/en-us/azure/active-directory/develop/access-tokens + var isB2CToken = claims.FirstOrDefault(claim => claim.Type == "_isB2CToken")?.Value; string appidacr = claims.FirstOrDefault(claim => claim.Type == "appidacr")?.Value; + string azpacr = claims.FirstOrDefault(claim => claim.Type == "azpacr")?.Value; // made by system - if (appidacr == "2") + if (appidacr == "2" || azpacr == "2") return true; - if (appidacr == "1") - return false; - - // TODO - find a more secure way of doing this: e.g. put the below in something saying (if appidacr == "0" OR this is a b2c token) with else being return false - // TODO- need to find a way to identify b2c tokens, same issue in HTTPCLaimsExtension.cs - - // made by user so check they have permission - // return false if user does not exist - if (!TryGetUserEmails(claims, out List userEmails)) + if (appidacr == "0" || azpacr == "0" || isB2CToken == "true") { - _logger.LogError("Could not get any user email / uid for the current user."); - return false; + if (!TryGetUserEmails(claims, out List userEmails)) + { + _logger.LogError("Could not get any user email / uid for the current user."); + return false; + } + _logger.LogInformation(String.Join(",",userEmails)); + _logger.LogInformation(String.Join(",",AllowedUsers)); + // return value of if user email is in the allowed users list + return AllowedUsers.Intersect(userEmails).Any(); } - _logger.LogInformation(String.Join(",",userEmails)); - _logger.LogInformation(String.Join(",",AllowedUsers)); - // return value of if user email is in the allowed users list - return AllowedUsers.Intersect(userEmails).Any(); + + return false; } private bool TryGetUserEmails(IEnumerable claims, out List userEmails) diff --git a/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/HttpClaimsExtension.cs b/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/HttpClaimsExtension.cs index 4ab5da72..b7268921 100644 --- a/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/HttpClaimsExtension.cs +++ b/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/HttpClaimsExtension.cs @@ -23,7 +23,6 @@ public static bool TryGetUserEmails(this IHeaderDictionary headers, out List { userEmails = new List(); - // By checking appidacr claim, we can know if the call was made by a user or by the system. + // By checking appidacr and azpacr claims, we can know if the call was made by a user or by the system. // https://docs.microsoft.com/en-us/azure/active-directory/develop/access-tokens - string appidacr = claims.FirstOrDefault(claim => claim.Type == "appidacr")?.Value; - - // appidacr exists so this is an AAD token - if(appidacr != null){ - switch (appidacr) - { - case "0": - //appidacr 0: authenticate user using ParseUserEmails from claims - return ParseUserEmailsFromClaims(claims, out userEmails); - - case "2": - //appidacr 2: authed because its from server - return true; + var azpacr = claims.FirstOrDefault(claim => claim.Type == "azpacr")?.Value; + var appidacr = claims.FirstOrDefault(claim => claim.Type == "appidacr")?.Value; + var isB2CToken = claims.FirstOrDefault(claim => claim.Type == "_isB2CToken")?.Value; - default: - //appidacr default: this is neither a valid call from user nor a valid server to server call - logAction?.Invoke("this is neither a valid call from user nor a valid server to server call"); - return false; - } - } + if (isB2CToken == "true") + return ParseUserEmailsFromClaims(claims, out userEmails); - // else appidacr is null so this is a B2C Token - else{ - //b2c authenticate user using ParseUserEmails from claims by default + if (azpacr == "2" || appidacr == "2") + return true; + if (azpacr == "0" || appidacr == "0") return ParseUserEmailsFromClaims(claims, out userEmails); - } - // TODO - at a later point add check that this is definitely a b2c token and then have the else to hadnle if it is neither AAD or B2C - // TODO- need to find a way to identify b2c tokens, same issue in PlatformApi.cs + logAction?.Invoke("this is neither a valid call from user nor a valid server to server call"); + return false; } private static bool ParseUserEmailsFromClaims(Claim[] claims, out List userEmails) diff --git a/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/HttpHeadersExtensions.cs b/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/HttpHeadersExtensions.cs index 24b92064..cd5ab85b 100644 --- a/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/HttpHeadersExtensions.cs +++ b/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/HttpHeadersExtensions.cs @@ -4,11 +4,13 @@ // -------------------------------------------------------------------------------------------- using System; +using System.Collections.Generic; using System.IdentityModel.Tokens.Jwt; using System.Linq; using System.Security.Claims; using System.Threading.Tasks; using Microsoft.AspNetCore.Http; +using Microsoft.IdentityModel.Logging; using Microsoft.IdentityModel.Protocols; using Microsoft.IdentityModel.Protocols.OpenIdConnect; using Microsoft.IdentityModel.Tokens; @@ -22,6 +24,7 @@ public static class HttpHeadersExtensions public static async Task ValidateToken(this IHeaderDictionary headers, string openIdConfigUrl, string validAudience, Action logAction = null) { + IdentityModelEventSource.ShowPII = true; if (!headers.ContainsKey("Authorization")) { logAction?.Invoke("No Authorization header was found in the request."); @@ -32,9 +35,18 @@ public static async Task ValidateToken(this IHeaderDictionary headers, str var token = authorizationContent?.Split(' ')[1]; try { - var configurationManager = new ConfigurationManager( - openIdConfigUrl, new OpenIdConnectConfigurationRetriever()); - var openIdConfig = await configurationManager.GetConfigurationAsync(default); + var configUrls = openIdConfigUrl.Split(','); + var b2cConfigurationManager = new ConfigurationManager( + configUrls[0], new OpenIdConnectConfigurationRetriever()); + var b2cConfig = await b2cConfigurationManager.GetConfigurationAsync(default); + var adConfigurationManager = new ConfigurationManager( + configUrls[1], new OpenIdConnectConfigurationRetriever()); + var adConfig = await adConfigurationManager.GetBaseConfigurationAsync(default); + var signingKeys = b2cConfig.SigningKeys; + foreach (var key in adConfig.SigningKeys) + { + signingKeys.Add(key); + } var validationParameters = new TokenValidationParameters { ValidateAudience = true, @@ -42,16 +54,16 @@ public static async Task ValidateToken(this IHeaderDictionary headers, str ValidateIssuerSigningKey = true, ValidateLifetime = true, RequireSignedTokens = true, - IssuerSigningKeys = openIdConfig.SigningKeys, - ValidIssuer = openIdConfig.Issuer, - ValidAudience = validAudience + IssuerSigningKeys = signingKeys, + ValidIssuers = new List{b2cConfig.Issuer, adConfig.Issuer}, + ValidAudiences = validAudience.Split(',') }; var principal = JwtSecurityTokenHandler.ValidateToken(token, validationParameters, out _); return !(principal is null); } catch (Exception e) { - logAction?.Invoke("Error when validating the user token."); + logAction?.Invoke(token + e + "Error when validating the user token."); } return false; } diff --git a/deployment/azuredeploy.json b/deployment/azuredeploy.json index 79a6bdcb..dd4db44e 100644 --- a/deployment/azuredeploy.json +++ b/deployment/azuredeploy.json @@ -249,8 +249,8 @@ "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('users' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", "WEBSITE_RUN_FROM_PACKAGE": "1", - "ValidAudience": "0cd1d1d6-a7aa-41e2-b569-1ca211147973", - "OpenIdConfigurationUrl": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin/v2.0/.well-known/openid-configuration" + "ValidAudience": "0cd1d1d6-a7aa-41e2-b569-1ca211147973,cb508fc8-6a5f-49b1-b688-dac065ba59e4", + "OpenIdConfigurationUrl": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin/v2.0/.well-known/openid-configuration,https://login.microsoft.com/uclmsclearnlti.onmicrosoft.com/v2.0/.well-known/openid-configuration" } }, { @@ -276,8 +276,8 @@ "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('assignments' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", "WEBSITE_RUN_FROM_PACKAGE": "1", - "ValidAudience": "0cd1d1d6-a7aa-41e2-b569-1ca211147973", - "OpenIdConfigurationUrl": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin/v2.0/.well-known/openid-configuration" + "ValidAudience": "0cd1d1d6-a7aa-41e2-b569-1ca211147973,cb508fc8-6a5f-49b1-b688-dac065ba59e4", + "OpenIdConfigurationUrl": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin/v2.0/.well-known/openid-configuration,https://login.microsoft.com/uclmsclearnlti.onmicrosoft.com/v2.0/.well-known/openid-configuration" } }, { @@ -303,8 +303,8 @@ "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('platforms' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", "WEBSITE_RUN_FROM_PACKAGE": "1", - "ValidAudience": "0cd1d1d6-a7aa-41e2-b569-1ca211147973", - "OpenIdConfigurationUrl": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin/v2.0/.well-known/openid-configuration" + "ValidAudience": "0cd1d1d6-a7aa-41e2-b569-1ca211147973,cb508fc8-6a5f-49b1-b688-dac065ba59e4", + "OpenIdConfigurationUrl": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin/v2.0/.well-known/openid-configuration,https://login.microsoft.com/uclmsclearnlti.onmicrosoft.com/v2.0/.well-known/openid-configuration" } }, { @@ -328,8 +328,8 @@ "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('links' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", "WEBSITE_RUN_FROM_PACKAGE": "1", - "ValidAudience": "0cd1d1d6-a7aa-41e2-b569-1ca211147973", - "OpenIdConfigurationUrl": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin/v2.0/.well-known/openid-configuration" + "ValidAudience": "0cd1d1d6-a7aa-41e2-b569-1ca211147973,cb508fc8-6a5f-49b1-b688-dac065ba59e4", + "OpenIdConfigurationUrl": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin/v2.0/.well-known/openid-configuration,https://login.microsoft.com/uclmsclearnlti.onmicrosoft.com/v2.0/.well-known/openid-configuration" } }, { @@ -353,8 +353,8 @@ "APPLICATIONINSIGHTS_CONNECTION_STRING": "[concat('InstrumentationKey=',reference(resourceId('microsoft.insights/components', concat('learncontent' , variables('ProjectNameSuffix'))), '2018-05-01-preview').InstrumentationKey)]", "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", "WEBSITE_RUN_FROM_PACKAGE": "1", - "ValidAudience": "0cd1d1d6-a7aa-41e2-b569-1ca211147973", - "OpenIdConfigurationUrl": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin/v2.0/.well-known/openid-configuration" + "ValidAudience": "0cd1d1d6-a7aa-41e2-b569-1ca211147973,cb508fc8-6a5f-49b1-b688-dac065ba59e4", + "OpenIdConfigurationUrl": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin/v2.0/.well-known/openid-configuration,https://login.microsoft.com/uclmsclearnlti.onmicrosoft.com/v2.0/.well-known/openid-configuration" } }, { From 80f09beec0e2d28f691bedfd4d80458d076fc2b9 Mon Sep 17 00:00:00 2001 From: Daniel Musselwhite Date: Wed, 27 Jul 2022 17:50:35 +0100 Subject: [PATCH 132/285] Added defensive programming to Deploy.ps1 region and subscription selection so you don't have to cleanup and rerun entire b2c setup if you mistype either value --- deployment/Cleanup.ps1 | 42 ++++++++++++++- deployment/Deploy.ps1 | 77 +++++++++++++++++++++++----- deployment/azuredeploy.json | 16 +++--- deployment/azuredeployTemplate.json | Bin 66416 -> 0 bytes 4 files changed, 112 insertions(+), 23 deletions(-) delete mode 100644 deployment/azuredeployTemplate.json diff --git a/deployment/Cleanup.ps1 b/deployment/Cleanup.ps1 index 3992548a..64b86548 100644 --- a/deployment/Cleanup.ps1 +++ b/deployment/Cleanup.ps1 @@ -12,12 +12,36 @@ param ( ) process { + #region "Helper Functions" + #function for making clear and distinct titles function Write-Title([string]$Title) { Write-Host "`n`n=============================================================" Write-Host $Title Write-Host "=============================================================`n`n" } + #function for making coloured outputs + function Write-Color($Color, [string]$Text) { + Write-Host $Text -ForegroundColor $Color + } + + #function for writing errors + function Write-Error([string]$Text) { + Write-Host "`n`n=============================================================`n" -ForegroundColor "black" -BackgroundColor "DarkRed" -NoNewline + Write-Host "Error!`n$Text" -ForegroundColor "black" -BackgroundColor "DarkRed" -NoNewline + Write-Host "`n=============================================================" -ForegroundColor "black" -BackgroundColor "DarkRed" + } + #endregion + + #region "exception handling classes" + class InvalidAzureSubscriptionException: System.Exception{ + $Emessage + InvalidAzureSubscriptionException([string]$msg){ + $this.Emessage=$msg + } + } + #endregion + #region Show Learn LTI Banner Write-Host '' Write-Host ' _ ______ _____ _ _ _ _______ _____ ' @@ -106,7 +130,7 @@ process { $subscription = ($List | Where-Object { ($_.name -ieq $NameOrId) -or ($_.id -ieq $NameOrId) }) if(!$subscription) { - throw "Invalid Subscription Name/ID Entered." + throw [InvalidAzureSubscriptionException] "Invalid Subscription Name/ID Entered." } az account set --subscription $NameOrId #Intentionally not catching an exception here since the set subscription commands behavior (output) is different from others @@ -139,7 +163,21 @@ process { Write-Log -Message "User Entered Subscription Name/ID: $SubscriptionNameOrId" } - $ActiveSubscription = Set-LtiActiveSubscription -NameOrId $SubscriptionNameOrId -List $SubscriptionList + #defensive programming so script doesn't halt and require a cleanup if subscription is mistyped + while(1){ + try{ + $ActiveSubscription = Set-LtiActiveSubscription -NameOrId $SubscriptionNameOrId -List $SubscriptionList + break + } + catch [InvalidAzureSubscriptionException]{ + Write-Error $Error[0] + $SubscriptionNameOrId = Read-Host 'Enter the Name or ID of the Subscription from Above List' + #trimming the input for empty spaces, if any + $SubscriptionNameOrId = $SubscriptionNameOrId.Trim() + Write-Log -Message "User Entered Subscription Name/ID: $SubscriptionNameOrId" + } + } + #endregion #region Delete Resource Group, if Exists diff --git a/deployment/Deploy.ps1 b/deployment/Deploy.ps1 index 29cfc6f5..3b8f9870 100644 --- a/deployment/Deploy.ps1 +++ b/deployment/Deploy.ps1 @@ -13,11 +13,42 @@ param ( ) process { + #region "Helper Functions" + #function for making clear and distinct titles function Write-Title([string]$Title) { Write-Host "`n`n=============================================================" Write-Host $Title Write-Host "=============================================================`n`n" } + + #function for making coloured outputs + function Write-Color($Color, [string]$Text) { + Write-Host $Text -ForegroundColor $Color + } + + #function for writing errors + function Write-Error([string]$Text) { + Write-Host "`n`n=============================================================`n" -ForegroundColor "black" -BackgroundColor "DarkRed" -NoNewline + Write-Host "Error!`n$Text" -ForegroundColor "black" -BackgroundColor "DarkRed" -NoNewline + Write-Host "`n=============================================================" -ForegroundColor "black" -BackgroundColor "DarkRed" + } + #endregion + + #region "exception handling classes" + class InvalidAzureSubscriptionException: System.Exception{ + $Emessage + InvalidAzureSubscriptionException([string]$msg){ + $this.Emessage=$msg + } + } + + class InvalidAzureRegionException: System.Exception{ + $Emessage + InvalidAzureSubscriptionException([string]$msg){ + $this.Emessage=$msg + } + } + #endregion try { #region Show Learn LTI Banner @@ -167,7 +198,20 @@ process { Write-Log -Message "User Entered Subscription Name/ID: $SubscriptionNameOrId" } - $ActiveSubscription = Set-LtiActiveSubscription -NameOrId $SubscriptionNameOrId -List $SubscriptionList + #defensive programming so script doesn't halt and require a cleanup if subscription is mistyped + while(1){ + try{ + $ActiveSubscription = Set-LtiActiveSubscription -NameOrId $SubscriptionNameOrId -List $SubscriptionList + break + } + catch [InvalidAzureSubscriptionException]{ + Write-Error $Error[0] + $SubscriptionNameOrId = Read-Host 'Enter the Name or ID of the Subscription from Above List' + #trimming the input for empty spaces, if any + $SubscriptionNameOrId = $SubscriptionNameOrId.Trim() + Write-Log -Message "User Entered Subscription Name/ID: $SubscriptionNameOrId" + } + } $UserEmailAddress = $ActiveSubscription.user.name #endregion @@ -178,17 +222,26 @@ process { $LocationList = ((az account list-locations) | ConvertFrom-Json) Write-Log -Message "List of Locations:-`n$($locationList | ConvertTo-Json -Compress)" - if(!$LocationName) { - Write-Host "$(az account list-locations --output table --query "[].{Name:name}" | Out-String)`n" - $LocationName = Read-Host 'Enter Location From Above List for Resource Provisioning' - #trimming the input for empty spaces, if any - $LocationName = $LocationName.Trim() - } - Write-Log -Message "User Provided Location Name: $LocationName" - - $ValidLocation = $LocationList | Where-Object { $_.name -ieq $LocationName } - if(!$ValidLocation) { - throw "Invalid Location Name Entered." + #defensive programming so script doesn't halt and require a cleanup if region is mistyped + while(1){ + try{ + if(!$LocationName) { + Write-Host "$(az account list-locations --output table --query "[].{Name:name}" | Out-String)`n" + $LocationName = Read-Host 'Enter Location From Above List for Resource Provisioning' + #trimming the input for empty spaces, if any + $LocationName = $LocationName.Trim() + } + Write-Log -Message "User Provided Location Name: $LocationName" + + $ValidLocation = $LocationList | Where-Object { $_.name -ieq $LocationName } + if(!$ValidLocation) { + throw [InvalidAzureRegionException] "Invalid Location Name Entered." + } + break + } + catch [InvalidAzureRegionException]{ + Write-Error $Error[0] + } } #endregion diff --git a/deployment/azuredeploy.json b/deployment/azuredeploy.json index a84ee9cb..9b58b315 100644 --- a/deployment/azuredeploy.json +++ b/deployment/azuredeploy.json @@ -20,7 +20,7 @@ } }, "variables": { - "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, '20220727033446'),0,9)]", + "uniqueIdentifier": "[substring(uniqueString(subscription().subscriptionId, resourceGroup().id, '20220727054556'),0,9)]", "functionList": [ "connect", "assignments", @@ -29,7 +29,7 @@ "platforms", "users" ], - "AzureB2C_AUTHENTICATION_SECRET": "-D98Q~IT69IkQvKNsTUjBghBC9a8JI1E.gon7ciE", + "AzureB2C_AUTHENTICATION_SECRET": "", "enabledForDeployment": false, "enabledForDiskEncryption": false, "enabledForTemplateDeployment": false, @@ -143,7 +143,7 @@ "globalValidation": { "requireAuthentication": true, "unauthenticatedClientAction": "RedirectToLoginPage", - "redirectToProvider": "AzureB2CCustomPolicy" + "redirectToProvider": "AzureB2C" }, "identityProviders": { "azureActiveDirectory": { @@ -163,18 +163,17 @@ } }, "customOpenIdConnectProviders": { - "AzureB2CCustomPolicy": - { - "registration": { + "AzureB2C": { + "registration": { "clientId": "0cd1d1d6-a7aa-41e2-b569-1ca211147973", "clientCredential": { "clientSecretSettingName": "AzureB2C_AUTHENTICATION_SECRET" }, "openIdConnectConfiguration": { - "wellKnownOpenIdConfiguration": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/B2C_1_signin_LTI/v2.0/.well-known/openid-configuration?p=B2C_1A_SIGNIN" + "wellKnownOpenIdConfiguration": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/B2C_1_signup_signin_LTI/v2.0/.well-known/openid-configuration" } } - } + } } }, "login": { @@ -552,4 +551,3 @@ - diff --git a/deployment/azuredeployTemplate.json b/deployment/azuredeployTemplate.json deleted file mode 100644 index 8a0b7b6d500fb4cf2f770d7948dc4eaa500ca69f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66416 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 Iisk?R1Kh6opa1{> From 4d055f06a7b0dfdb894227693e68dd4a7a8fb235 Mon Sep 17 00:00:00 2001 From: Tianchen Zhang Date: Wed, 27 Jul 2022 18:44:46 +0100 Subject: [PATCH 133/285] fix: change adconfig into openid configuration --- .../Edna.Utils.Http/Edna.Utils.Http/HttpHeadersExtensions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/HttpHeadersExtensions.cs b/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/HttpHeadersExtensions.cs index cd5ab85b..c2f0f1c0 100644 --- a/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/HttpHeadersExtensions.cs +++ b/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/HttpHeadersExtensions.cs @@ -41,7 +41,7 @@ public static async Task ValidateToken(this IHeaderDictionary headers, str var b2cConfig = await b2cConfigurationManager.GetConfigurationAsync(default); var adConfigurationManager = new ConfigurationManager( configUrls[1], new OpenIdConnectConfigurationRetriever()); - var adConfig = await adConfigurationManager.GetBaseConfigurationAsync(default); + var adConfig = await adConfigurationManager.GetConfigurationAsync(default); var signingKeys = b2cConfig.SigningKeys; foreach (var key in adConfig.SigningKeys) { From c91ea12cd948709e321bee90ab1b04d762cfe385 Mon Sep 17 00:00:00 2001 From: Tianchen Zhang Date: Wed, 27 Jul 2022 21:12:53 +0100 Subject: [PATCH 134/285] feat: use dependency injection to retrieve openid configurations --- .../AssignmentLearnContentApi.cs | 23 ++++++++++++------- .../Edna.AssignmentLearnContent/Startup.cs | 9 ++++++++ .../AssignmentLinksApi.cs | 19 +++++++++++---- .../Edna.AssignmentLinks/Startup.cs | 9 ++++++++ .../Edna.Assignments/AssignmentsApi.cs | 18 +++++++++++---- .../Edna.Assignments/Startup.cs | 9 ++++++++ .../Edna.Platforms/PlatformsApi.cs | 16 +++++++++---- .../Edna.Platforms/Edna.Platforms/Startup.cs | 9 ++++++++ .../Edna.Users/Edna.Users/Startup.cs | 9 ++++++++ .../Edna.Users/Edna.Users/UsersApi.cs | 16 +++++++++---- .../Edna.Utils.Http/HttpHeadersExtensions.cs | 15 +++++------- deployment/azuredeploy.json | 15 ++++++++---- 12 files changed, 128 insertions(+), 39 deletions(-) diff --git a/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs b/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs index f5356113..12676bb7 100644 --- a/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs +++ b/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/AssignmentLearnContentApi.cs @@ -24,6 +24,8 @@ using Edna.Bindings.User.Attributes; using Edna.Bindings.User; using Edna.Bindings.User.Models; +using Microsoft.IdentityModel.Protocols; +using Microsoft.IdentityModel.Protocols.OpenIdConnect; namespace Edna.AssignmentLearnContent { @@ -32,18 +34,25 @@ public class AssignmentLearnContentApi private const string AssignmentLearnContentTableName = "AssignmentLearnContent"; private const string LearnContentUrlIdentifierKey = "WT.mc_id"; private const string LearnContentUrlIdentifierValue = "Edna"; - private static readonly string OpenIdConfigurationUrl = Environment.GetEnvironmentVariable("OpenIdConfigurationUrl"); - private static readonly string ValidAudience = Environment.GetEnvironmentVariable("ValidAudience"); + private static readonly string ValidAudience = Environment.GetEnvironmentVariable("ValidAudience"); + private readonly ConfigurationManager _adManager, _b2CManager; private readonly ILogger _logger; private readonly IMapper _mapper; private readonly IHttpClientFactory _httpClientFactory; - public AssignmentLearnContentApi(ILogger logger, IMapper mapper, IHttpClientFactory httpClientFactory) + public AssignmentLearnContentApi(ILogger logger, IMapper mapper, + IHttpClientFactory httpClientFactory, IEnumerable> managers) { _logger = logger; _mapper = mapper; _httpClientFactory = httpClientFactory; + + var configurationManagers = managers.ToList(); + _adManager = configurationManagers.FirstOrDefault(m => + m.MetadataAddress == Environment.GetEnvironmentVariable("ADConfigurationUrl")); + _b2CManager = configurationManagers.FirstOrDefault(m => + m.MetadataAddress == Environment.GetEnvironmentVariable("B2CConfigurationUrl")); } [FunctionName(nameof(GetLearnCatalog))] @@ -85,7 +94,7 @@ public async Task SaveAssignmentLearnContent( string contentUid, [User] UsersClient usersClient) { - if (!await req.Headers.ValidateToken(OpenIdConfigurationUrl, ValidAudience, message => _logger.LogError(message))) + if (!await req.Headers.ValidateToken(_adManager, _b2CManager, ValidAudience, message => _logger.LogError(message))) return new UnauthorizedResult(); bool isSystemCallOrUserWithValidEmail = req.Headers.TryGetUserEmails(out List userEmails); if (!isSystemCallOrUserWithValidEmail) @@ -96,7 +105,6 @@ public async Task SaveAssignmentLearnContent( if (userEmails.Count > 0) { - #region "DM: getting list of for the assignment from AD and checking they are authorized (teacher status)" _logger.LogInformation($"Getting user information for '{string.Join(';', userEmails)}'."); // Creating logger for logging user (email owner) information User[] allUsers = await usersClient.GetAllUsers(assignmentId); // Getting all users for the assignment @@ -104,7 +112,6 @@ public async Task SaveAssignmentLearnContent( // If the user is not found or the user is NOT a teacher, return UnauthorizedResult if (user == null || !user.Role.Equals("teacher")) return new UnauthorizedResult(); - #endregion } _logger.LogInformation($"Saving assignment learn content with uid [{contentUid}] to assignment {assignmentId}"); @@ -129,7 +136,7 @@ public async Task RemoveAssignmentLearnContent( string contentUid, [User] UsersClient usersClient) { - if (!await req.Headers.ValidateToken(OpenIdConfigurationUrl, ValidAudience, message => _logger.LogError(message))) + if (!await req.Headers.ValidateToken(_adManager, _b2CManager, ValidAudience, message => _logger.LogError(message))) return new UnauthorizedResult(); bool isSystemCallOrUserWithValidEmail = req.Headers.TryGetUserEmails(out List userEmails); if (!isSystemCallOrUserWithValidEmail) @@ -169,7 +176,7 @@ public async Task ClearAssignmentLearnContent( string assignmentId, [User] UsersClient usersClient) { - if (!await req.Headers.ValidateToken(OpenIdConfigurationUrl, ValidAudience, message => _logger.LogError(message))) + if (!await req.Headers.ValidateToken(_adManager, _b2CManager, ValidAudience, message => _logger.LogError(message))) return new UnauthorizedResult(); bool isSystemCallOrUserWithValidEmail = req.Headers.TryGetUserEmails(out List userEmails); if (!isSystemCallOrUserWithValidEmail) diff --git a/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/Startup.cs b/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/Startup.cs index a6edb08d..0da5964c 100644 --- a/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/Startup.cs +++ b/backend/Functions/Edna.AssignmentLearnContent/Edna.AssignmentLearnContent/Startup.cs @@ -3,6 +3,7 @@ // Licensed under the MIT license. // -------------------------------------------------------------------------------------------- +using System; using AutoMapper; using Edna.AssignmentLearnContent; using Microsoft.Azure.Functions.Extensions.DependencyInjection; @@ -11,6 +12,8 @@ using Microsoft.Extensions.DependencyInjection; using Edna.Bindings.User; using Edna.Utils.Http; +using Microsoft.IdentityModel.Protocols; +using Microsoft.IdentityModel.Protocols.OpenIdConnect; [assembly: FunctionsStartup(typeof(Startup))] @@ -27,6 +30,12 @@ public void Configure(IWebJobsBuilder builder) builder.Services.AddEdnaExternalHttpClientHandler(); builder.Services.AddAutoMapper(GetType().Assembly); + + builder.Services.AddSingleton((s) => new ConfigurationManager( + Environment.GetEnvironmentVariable("ADConfigurationUrl"), new OpenIdConnectConfigurationRetriever())); + + builder.Services.AddSingleton((s) => new ConfigurationManager( + Environment.GetEnvironmentVariable("B2CConfigurationUrl"), new OpenIdConnectConfigurationRetriever())); } } } \ No newline at end of file diff --git a/backend/Functions/Edna.AssignmentLinks/Edna.AssignmentLinks/AssignmentLinksApi.cs b/backend/Functions/Edna.AssignmentLinks/Edna.AssignmentLinks/AssignmentLinksApi.cs index ee22290e..c0c8021d 100644 --- a/backend/Functions/Edna.AssignmentLinks/Edna.AssignmentLinks/AssignmentLinksApi.cs +++ b/backend/Functions/Edna.AssignmentLinks/Edna.AssignmentLinks/AssignmentLinksApi.cs @@ -22,6 +22,8 @@ using Edna.Bindings.User; using Edna.Bindings.User.Models; using System.ComponentModel.DataAnnotations; +using Microsoft.IdentityModel.Protocols; +using Microsoft.IdentityModel.Protocols.OpenIdConnect; namespace Edna.AssignmentLinks { @@ -29,14 +31,23 @@ public class AssignmentLinksApi { private readonly ILogger _logger; private readonly IMapper _mapper; + private readonly ConfigurationManager _adManager, _b2CManager; private const string AssignmentLinksTableName = "Links"; - private static readonly string OpenIdConfigurationUrl = Environment.GetEnvironmentVariable("OpenIdConfigurationUrl"); + private static readonly string ValidAudience = Environment.GetEnvironmentVariable("ValidAudience"); + private static readonly string OpenIdConfigurationUrl = Environment.GetEnvironmentVariable("OpenIdConfigurationUrl"); - public AssignmentLinksApi(ILogger logger, IMapper mapper) + public AssignmentLinksApi(ILogger logger, IMapper mapper, + IEnumerable> managers) { _logger = logger; _mapper = mapper; + + var configurationManagers = managers.ToList(); + _adManager = configurationManagers.FirstOrDefault(m => + m.MetadataAddress == Environment.GetEnvironmentVariable("ADConfigurationUrl")); + _b2CManager = configurationManagers.FirstOrDefault(m => + m.MetadataAddress == Environment.GetEnvironmentVariable("B2CConfigurationUrl")); } [FunctionName(nameof(GetAllLinks))] @@ -91,7 +102,7 @@ public async Task SaveLink( string linkId, [User] UsersClient usersClient) { - if (!await req.Headers.ValidateToken(OpenIdConfigurationUrl, ValidAudience, message => _logger.LogError(message))) + if (!await req.Headers.ValidateToken(_adManager, _b2CManager, ValidAudience, message => _logger.LogError(message))) return new UnauthorizedResult(); bool isSystemCallOrUserWithValidEmail = req.Headers.TryGetUserEmails(out List userEmails); if (!isSystemCallOrUserWithValidEmail) @@ -153,7 +164,7 @@ public async Task DeleteLink( string assignmentId, [User] UsersClient usersClient) { - if (!await req.Headers.ValidateToken(OpenIdConfigurationUrl, ValidAudience, message => _logger.LogError(message))) + if (!await req.Headers.ValidateToken(_adManager, _b2CManager, ValidAudience, message => _logger.LogError(message))) return new UnauthorizedResult(); bool isSystemCallOrUserWithValidEmail = req.Headers.TryGetUserEmails(out List userEmails); if (!isSystemCallOrUserWithValidEmail) diff --git a/backend/Functions/Edna.AssignmentLinks/Edna.AssignmentLinks/Startup.cs b/backend/Functions/Edna.AssignmentLinks/Edna.AssignmentLinks/Startup.cs index bc1ecaa9..5e6eeb18 100644 --- a/backend/Functions/Edna.AssignmentLinks/Edna.AssignmentLinks/Startup.cs +++ b/backend/Functions/Edna.AssignmentLinks/Edna.AssignmentLinks/Startup.cs @@ -3,6 +3,7 @@ // Licensed under the MIT license. // -------------------------------------------------------------------------------------------- +using System; using AutoMapper; using Edna.AssignmentLinks; using Microsoft.Azure.Functions.Extensions.DependencyInjection; @@ -10,6 +11,8 @@ using Microsoft.Azure.WebJobs.Hosting; using Microsoft.Extensions.DependencyInjection; using Edna.Bindings.User; +using Microsoft.IdentityModel.Protocols; +using Microsoft.IdentityModel.Protocols.OpenIdConnect; [assembly: FunctionsStartup(typeof(Startup))] @@ -24,6 +27,12 @@ public void Configure(IWebJobsBuilder builder) builder.AddUserBinding(); builder.Services.AddAutoMapper(GetType().Assembly); + + builder.Services.AddSingleton((s) => new ConfigurationManager( + Environment.GetEnvironmentVariable("ADConfigurationUrl"), new OpenIdConnectConfigurationRetriever())); + + builder.Services.AddSingleton((s) => new ConfigurationManager( + Environment.GetEnvironmentVariable("B2CConfigurationUrl"), new OpenIdConnectConfigurationRetriever())); } } } \ No newline at end of file diff --git a/backend/Functions/Edna.Assignments/Edna.Assignments/AssignmentsApi.cs b/backend/Functions/Edna.Assignments/Edna.Assignments/AssignmentsApi.cs index c7684954..0f484a7c 100644 --- a/backend/Functions/Edna.Assignments/Edna.Assignments/AssignmentsApi.cs +++ b/backend/Functions/Edna.Assignments/Edna.Assignments/AssignmentsApi.cs @@ -24,6 +24,8 @@ using Edna.Bindings.User; using Edna.Bindings.User.Models; using System.ComponentModel.DataAnnotations; +using Microsoft.IdentityModel.Protocols; +using Microsoft.IdentityModel.Protocols.OpenIdConnect; using ValidationContext = System.ComponentModel.DataAnnotations.ValidationContext; namespace Edna.Assignments @@ -33,16 +35,22 @@ public class AssignmentsApi private const string AssignmentsTableName = "Assignments"; private const string AssignmentsRoutePath = "assignments"; - private static readonly string OpenIdConfigurationUrl = Environment.GetEnvironmentVariable("OpenIdConfigurationUrl"); + private readonly ConfigurationManager _adManager, _b2CManager; private static readonly string ValidAudience = Environment.GetEnvironmentVariable("ValidAudience"); private readonly ILogger _logger; private readonly IMapper _mapper; - public AssignmentsApi(IMapper mapper, ILogger logger) + public AssignmentsApi(IMapper mapper, ILogger logger, IEnumerable> managers) { _logger = logger; _mapper = mapper; + + var configurationManagers = managers.ToList(); + _adManager = configurationManagers.FirstOrDefault(m => + m.MetadataAddress == Environment.GetEnvironmentVariable("ADConfigurationUrl")); + _b2CManager = configurationManagers.FirstOrDefault(m => + m.MetadataAddress == Environment.GetEnvironmentVariable("B2CConfigurationUrl")); } [FunctionName(nameof(CreateOrUpdateAssignment))] @@ -62,10 +70,10 @@ public async Task CreateOrUpdateAssignment( //While debugging, authorization header is empty when this API gets called from either Lti1 API or LtiAdvantage API // So to enable seamless debugging, putting this code in #if !DEBUG block - if (!await req.Headers.ValidateToken(OpenIdConfigurationUrl, ValidAudience, message => _logger.LogError(message))) + if (!await req.Headers.ValidateToken(_adManager, _b2CManager, ValidAudience, message => _logger.LogError(message))) return new UnauthorizedResult(); - bool isSystemCallOrUserWithValidEmail = req.Headers.TryGetUserEmails(out List userEmails, message => _logger.LogInformation(message)); + bool isSystemCallOrUserWithValidEmail = req.Headers.TryGetUserEmails(out List userEmails, message => _logger.LogError(message)); if (!isSystemCallOrUserWithValidEmail) { _logger.LogError("Could not get user email."); @@ -167,7 +175,7 @@ private async Task FetchAssignment(CloudTable table, string as private async Task ChangePublishStatus(HttpRequest req, CloudTable table, IAsyncCollector assignmentEntityCollector, string assignmentId, UsersClient usersClient, PublishStatus newPublishStatus) { - if (!await req.Headers.ValidateToken(OpenIdConfigurationUrl, ValidAudience, message => _logger.LogError(message))) + if (!await req.Headers.ValidateToken(_adManager, _b2CManager, ValidAudience, message => _logger.LogError(message))) return new UnauthorizedResult(); bool isSystemCallOrUserWithValidEmail = req.Headers.TryGetUserEmails(out List userEmails); if (!isSystemCallOrUserWithValidEmail) diff --git a/backend/Functions/Edna.Assignments/Edna.Assignments/Startup.cs b/backend/Functions/Edna.Assignments/Edna.Assignments/Startup.cs index 257c92f4..bb019a53 100644 --- a/backend/Functions/Edna.Assignments/Edna.Assignments/Startup.cs +++ b/backend/Functions/Edna.Assignments/Edna.Assignments/Startup.cs @@ -3,6 +3,7 @@ // Licensed under the MIT license. // -------------------------------------------------------------------------------------------- +using System; using AutoMapper; using Edna.Assignments; using Edna.Bindings.Platform; @@ -11,6 +12,8 @@ using Microsoft.Azure.WebJobs; using Microsoft.Azure.WebJobs.Hosting; using Microsoft.Extensions.DependencyInjection; +using Microsoft.IdentityModel.Protocols; +using Microsoft.IdentityModel.Protocols.OpenIdConnect; [assembly: FunctionsStartup(typeof(Startup))] namespace Edna.Assignments @@ -24,6 +27,12 @@ public void Configure(IWebJobsBuilder builder) builder.AddUserBinding(); builder.Services.AddAutoMapper(GetType().Assembly); + + builder.Services.AddSingleton((s) => new ConfigurationManager( + Environment.GetEnvironmentVariable("ADConfigurationUrl"), new OpenIdConnectConfigurationRetriever())); + + builder.Services.AddSingleton((s) => new ConfigurationManager( + Environment.GetEnvironmentVariable("B2CConfigurationUrl"), new OpenIdConnectConfigurationRetriever())); } } } \ No newline at end of file diff --git a/backend/Functions/Edna.Platforms/Edna.Platforms/PlatformsApi.cs b/backend/Functions/Edna.Platforms/Edna.Platforms/PlatformsApi.cs index 544f6597..527b8a47 100644 --- a/backend/Functions/Edna.Platforms/Edna.Platforms/PlatformsApi.cs +++ b/backend/Functions/Edna.Platforms/Edna.Platforms/PlatformsApi.cs @@ -21,6 +21,8 @@ using Microsoft.Azure.Cosmos.Table; using System.Text; using System.Security.Cryptography; +using Microsoft.IdentityModel.Protocols; +using Microsoft.IdentityModel.Protocols.OpenIdConnect; using Newtonsoft.Json; namespace Edna.Platforms @@ -30,19 +32,25 @@ public class PlatformsApi private const string PlatformsTableName = "Platforms"; private static readonly string[] PossibleEmailClaimTypes = { "email", "emails", "upn", "unique_name" }; - private static readonly string ConnectApiBaseUrl = Environment.GetEnvironmentVariable("ConnectApiBaseUrl").TrimEnd('/'); + private static readonly string ConnectApiBaseUrl = Environment.GetEnvironmentVariable("ConnectApiBaseUrl")?.TrimEnd('/'); private static readonly string[] AllowedUsers = Environment.GetEnvironmentVariable("AllowedUsers")?.Split(";") ?? new string[0]; - private static readonly string OpenIdConfigurationUrl = Environment.GetEnvironmentVariable("OpenIdConfigurationUrl"); + private readonly ConfigurationManager _adManager, _b2CManager; private static readonly string ValidAudience = Environment.GetEnvironmentVariable("ValidAudience"); private readonly IMapper _mapper; private readonly ILogger _logger; - public PlatformsApi(IMapper mapper, ILogger logger) + public PlatformsApi(IMapper mapper, ILogger logger, IEnumerable> managers) { _mapper = mapper; _logger = logger; + + var configurationManagers = managers.ToList(); + _adManager = configurationManagers.FirstOrDefault(m => + m.MetadataAddress == Environment.GetEnvironmentVariable("ADConfigurationUrl")); + _b2CManager = configurationManagers.FirstOrDefault(m => + m.MetadataAddress == Environment.GetEnvironmentVariable("B2CConfigurationUrl")); } [FunctionName(nameof(GetAllRegisteredPlatforms))] @@ -151,7 +159,7 @@ private async Task ValidatePermission(HttpRequest req) #endif _logger.LogInformation("In validate"); - if (!await req.Headers.ValidateToken(OpenIdConfigurationUrl, ValidAudience, message => _logger.LogError(message))) + if (!await req.Headers.ValidateToken(_adManager, _b2CManager, ValidAudience, message => _logger.LogError(message))) return false; if (!req.Headers.TryGetTokenClaims(out Claim[] claims, message => _logger.LogError(message))) diff --git a/backend/Functions/Edna.Platforms/Edna.Platforms/Startup.cs b/backend/Functions/Edna.Platforms/Edna.Platforms/Startup.cs index 3639e4c9..2813fc34 100644 --- a/backend/Functions/Edna.Platforms/Edna.Platforms/Startup.cs +++ b/backend/Functions/Edna.Platforms/Edna.Platforms/Startup.cs @@ -3,6 +3,7 @@ // Licensed under the MIT license. // -------------------------------------------------------------------------------------------- +using System; using AutoMapper; using Edna.Bindings.LtiAdvantage; using Edna.Platforms; @@ -10,6 +11,8 @@ using Microsoft.Azure.WebJobs; using Microsoft.Azure.WebJobs.Hosting; using Microsoft.Extensions.DependencyInjection; +using Microsoft.IdentityModel.Protocols; +using Microsoft.IdentityModel.Protocols.OpenIdConnect; [assembly: FunctionsStartup(typeof(Startup))] @@ -24,6 +27,12 @@ public void Configure(IWebJobsBuilder builder) builder.Services.AddAutoMapper(GetType().Assembly); builder.AddLtiAdvantageBindings(); + + builder.Services.AddSingleton((s) => new ConfigurationManager( + Environment.GetEnvironmentVariable("ADConfigurationUrl"), new OpenIdConnectConfigurationRetriever())); + + builder.Services.AddSingleton((s) => new ConfigurationManager( + Environment.GetEnvironmentVariable("B2CConfigurationUrl"), new OpenIdConnectConfigurationRetriever())); } } } \ No newline at end of file diff --git a/backend/Functions/Edna.Users/Edna.Users/Startup.cs b/backend/Functions/Edna.Users/Edna.Users/Startup.cs index 3e0f28bf..35fb2127 100644 --- a/backend/Functions/Edna.Users/Edna.Users/Startup.cs +++ b/backend/Functions/Edna.Users/Edna.Users/Startup.cs @@ -3,6 +3,7 @@ // Licensed under the MIT license. // -------------------------------------------------------------------------------------------- +using System; using AutoMapper; using Edna.Bindings.Assignment; using Edna.Bindings.Lti1; @@ -13,6 +14,8 @@ using Microsoft.Azure.WebJobs; using Microsoft.Azure.WebJobs.Hosting; using Microsoft.Extensions.DependencyInjection; +using Microsoft.IdentityModel.Protocols; +using Microsoft.IdentityModel.Protocols.OpenIdConnect; [assembly: FunctionsStartup(typeof(Startup))] namespace Edna.Users @@ -29,6 +32,12 @@ public void Configure(IWebJobsBuilder builder) builder.AddLti1Binding(); builder.Services.AddAutoMapper(GetType().Assembly); + + builder.Services.AddSingleton((s) => new ConfigurationManager( + Environment.GetEnvironmentVariable("ADConfigurationUrl"), new OpenIdConnectConfigurationRetriever())); + + builder.Services.AddSingleton((s) => new ConfigurationManager( + Environment.GetEnvironmentVariable("B2CConfigurationUrl"), new OpenIdConnectConfigurationRetriever())); } } } \ No newline at end of file diff --git a/backend/Functions/Edna.Users/Edna.Users/UsersApi.cs b/backend/Functions/Edna.Users/Edna.Users/UsersApi.cs index 8b588405..16bc17b7 100644 --- a/backend/Functions/Edna.Users/Edna.Users/UsersApi.cs +++ b/backend/Functions/Edna.Users/Edna.Users/UsersApi.cs @@ -25,6 +25,8 @@ using Microsoft.Azure.WebJobs; using Microsoft.Azure.WebJobs.Extensions.Http; using Microsoft.Extensions.Logging; +using Microsoft.IdentityModel.Protocols; +using Microsoft.IdentityModel.Protocols.OpenIdConnect; namespace Edna.Users { @@ -32,14 +34,20 @@ public class UsersApi { private readonly IMapper _mapper; private readonly ILogger _logger; - - private static readonly string OpenIdConfigurationUrl = Environment.GetEnvironmentVariable("OpenIdConfigurationUrl"); + + private readonly ConfigurationManager _adManager, _b2CManager; private static readonly string ValidAudience = Environment.GetEnvironmentVariable("ValidAudience"); - public UsersApi(IMapper mapper, ILogger logger) + public UsersApi(IMapper mapper, ILogger logger, IEnumerable> managers) { _mapper = mapper; _logger = logger; + + var configurationManagers = managers.ToList(); + _adManager = configurationManagers.FirstOrDefault(m => + m.MetadataAddress == Environment.GetEnvironmentVariable("ADConfigurationUrl")); + _b2CManager = configurationManagers.FirstOrDefault(m => + m.MetadataAddress == Environment.GetEnvironmentVariable("B2CConfigurationUrl")); } [FunctionName(nameof(GetUserDetails))] @@ -55,7 +63,7 @@ public async Task GetUserDetails( if (req.Headers == null) return new BadRequestErrorMessageResult("No headers are presented in the request."); - if (!await req.Headers.ValidateToken(OpenIdConfigurationUrl, ValidAudience, message => _logger.LogError(message))) + if (!await req.Headers.ValidateToken(_adManager, _b2CManager, ValidAudience, message => _logger.LogError(message))) return new UnauthorizedResult(); if (!req.Headers.TryGetUserEmails(out List userEmails)) diff --git a/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/HttpHeadersExtensions.cs b/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/HttpHeadersExtensions.cs index c2f0f1c0..e5d6b094 100644 --- a/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/HttpHeadersExtensions.cs +++ b/backend/Utils/Edna.Utils.Http/Edna.Utils.Http/HttpHeadersExtensions.cs @@ -21,7 +21,9 @@ public static class HttpHeadersExtensions { private static readonly JwtSecurityTokenHandler JwtSecurityTokenHandler = new JwtSecurityTokenHandler(); - public static async Task ValidateToken(this IHeaderDictionary headers, string openIdConfigUrl, + public static async Task ValidateToken(this IHeaderDictionary headers, + ConfigurationManager adConfigurationManager, + ConfigurationManager b2CConfigurationManager, string validAudience, Action logAction = null) { IdentityModelEventSource.ShowPII = true; @@ -35,14 +37,9 @@ public static async Task ValidateToken(this IHeaderDictionary headers, str var token = authorizationContent?.Split(' ')[1]; try { - var configUrls = openIdConfigUrl.Split(','); - var b2cConfigurationManager = new ConfigurationManager( - configUrls[0], new OpenIdConnectConfigurationRetriever()); - var b2cConfig = await b2cConfigurationManager.GetConfigurationAsync(default); - var adConfigurationManager = new ConfigurationManager( - configUrls[1], new OpenIdConnectConfigurationRetriever()); + var b2CConfig = await b2CConfigurationManager.GetConfigurationAsync(default); var adConfig = await adConfigurationManager.GetConfigurationAsync(default); - var signingKeys = b2cConfig.SigningKeys; + var signingKeys = b2CConfig.SigningKeys; foreach (var key in adConfig.SigningKeys) { signingKeys.Add(key); @@ -55,7 +52,7 @@ public static async Task ValidateToken(this IHeaderDictionary headers, str ValidateLifetime = true, RequireSignedTokens = true, IssuerSigningKeys = signingKeys, - ValidIssuers = new List{b2cConfig.Issuer, adConfig.Issuer}, + ValidIssuers = new List{b2CConfig.Issuer, adConfig.Issuer}, ValidAudiences = validAudience.Split(',') }; var principal = JwtSecurityTokenHandler.ValidateToken(token, validationParameters, out _); diff --git a/deployment/azuredeploy.json b/deployment/azuredeploy.json index dd4db44e..65dd159c 100644 --- a/deployment/azuredeploy.json +++ b/deployment/azuredeploy.json @@ -250,7 +250,8 @@ "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", "WEBSITE_RUN_FROM_PACKAGE": "1", "ValidAudience": "0cd1d1d6-a7aa-41e2-b569-1ca211147973,cb508fc8-6a5f-49b1-b688-dac065ba59e4", - "OpenIdConfigurationUrl": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin/v2.0/.well-known/openid-configuration,https://login.microsoft.com/uclmsclearnlti.onmicrosoft.com/v2.0/.well-known/openid-configuration" + "ADConfigurationUrl": "https://login.microsoft.com/uclmsclearnlti.onmicrosoft.com/v2.0/.well-known/openid-configuration", + "B2CConfigurationUrl": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin/v2.0/.well-known/openid-configuration" } }, { @@ -277,7 +278,8 @@ "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", "WEBSITE_RUN_FROM_PACKAGE": "1", "ValidAudience": "0cd1d1d6-a7aa-41e2-b569-1ca211147973,cb508fc8-6a5f-49b1-b688-dac065ba59e4", - "OpenIdConfigurationUrl": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin/v2.0/.well-known/openid-configuration,https://login.microsoft.com/uclmsclearnlti.onmicrosoft.com/v2.0/.well-known/openid-configuration" + "ADConfigurationUrl": "https://login.microsoft.com/uclmsclearnlti.onmicrosoft.com/v2.0/.well-known/openid-configuration", + "B2CConfigurationUrl": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin/v2.0/.well-known/openid-configuration" } }, { @@ -304,7 +306,8 @@ "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", "WEBSITE_RUN_FROM_PACKAGE": "1", "ValidAudience": "0cd1d1d6-a7aa-41e2-b569-1ca211147973,cb508fc8-6a5f-49b1-b688-dac065ba59e4", - "OpenIdConfigurationUrl": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin/v2.0/.well-known/openid-configuration,https://login.microsoft.com/uclmsclearnlti.onmicrosoft.com/v2.0/.well-known/openid-configuration" + "ADConfigurationUrl": "https://login.microsoft.com/uclmsclearnlti.onmicrosoft.com/v2.0/.well-known/openid-configuration", + "B2CConfigurationUrl": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin/v2.0/.well-known/openid-configuration" } }, { @@ -329,7 +332,8 @@ "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", "WEBSITE_RUN_FROM_PACKAGE": "1", "ValidAudience": "0cd1d1d6-a7aa-41e2-b569-1ca211147973,cb508fc8-6a5f-49b1-b688-dac065ba59e4", - "OpenIdConfigurationUrl": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin/v2.0/.well-known/openid-configuration,https://login.microsoft.com/uclmsclearnlti.onmicrosoft.com/v2.0/.well-known/openid-configuration" + "ADConfigurationUrl": "https://login.microsoft.com/uclmsclearnlti.onmicrosoft.com/v2.0/.well-known/openid-configuration", + "B2CConfigurationUrl": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin/v2.0/.well-known/openid-configuration" } }, { @@ -354,7 +358,8 @@ "WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true", "WEBSITE_RUN_FROM_PACKAGE": "1", "ValidAudience": "0cd1d1d6-a7aa-41e2-b569-1ca211147973,cb508fc8-6a5f-49b1-b688-dac065ba59e4", - "OpenIdConfigurationUrl": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin/v2.0/.well-known/openid-configuration,https://login.microsoft.com/uclmsclearnlti.onmicrosoft.com/v2.0/.well-known/openid-configuration" + "ADConfigurationUrl": "https://login.microsoft.com/uclmsclearnlti.onmicrosoft.com/v2.0/.well-known/openid-configuration", + "B2CConfigurationUrl": "https://ltimoodleb2c.b2clogin.com/ltimoodleb2c.onmicrosoft.com/b2c_1a_signup_signin/v2.0/.well-known/openid-configuration" } }, { From 791aa0b7e3427b9f6c6139c82e7c842f3b673fc3 Mon Sep 17 00:00:00 2001 From: Warren Buhler Date: Thu, 28 Jul 2022 10:55:00 +0100 Subject: [PATCH 135/285] reverted platforms page change --- client/src/Features/Platform/PlatformPage.tsx | 53 ++++--------------- 1 file changed, 11 insertions(+), 42 deletions(-) diff --git a/client/src/Features/Platform/PlatformPage.tsx b/client/src/Features/Platform/PlatformPage.tsx index f842ef55..43b9d4b0 100644 --- a/client/src/Features/Platform/PlatformPage.tsx +++ b/client/src/Features/Platform/PlatformPage.tsx @@ -74,55 +74,24 @@ const PlatformPageInner = ({ styles }: IStylesOnly): JSX.Ele labelPosition="bottom" /> ) : ( - // TODO - either finish this functionality or remove it - // should this div have the "className={classes.content}" too? -

    )}

    -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 Xj{m&W-*@u>@K5))p;pPwryu?oPPXvs literal 0 HcmV?d00001 diff --git a/images/b2cstep2.png b/images/b2cstep2.png new file mode 100644 index 0000000000000000000000000000000000000000..98964d4f0530cee2e3edfeaba2b1fc0284041ecd GIT binary patch literal 66530 zcmdqIWmH^2*Dlxug3~y`-3jiV4#728@ZiumH0~1IJ-E9C_W*(5?k+(acPHG=`+axT zz4K$%%$oT%)oax{efm`OUbS~U``Nqpd0l+n1YpTY$w~p>-~a$P*az^s0+0Z}zxmhx z_3*HUfQay~AtNHbMMObHMMXhIK|w{wL`OvfqM@K*U}FF=v9PeQP|fP3>69ws;D0d%C*;@B^Gc|hIk^M|Cngot_b~DZNNbsxnnQwqoii}; z3x3kj)OP(Al5!y_H7nE5yR{AbQ@sCGoc|K*-(BqgMaciYy9_{whY5rYj|~t9Tp=F3 zT+F@#qJIBPo@HByzFf?SNA^Rfg)D3b2Qv*l|n^AD_l1gthxD65xh9L{}P8COyj^tR&O z&ETLPkiAvlcQ}1`!m^%VOznRerTg>u3xgoai#4;s%sd=6I8>f3PZ8b^|g(}KbV6lShB4>-u{Grhr5QttGbBbzvw)p4FhCMTbE(7RV6 z2RBh-vd0!>I({R!O^JgOF||m-80!C+mSHr1B2Zgtl}x|4{QhU|s8pqbLS6nNtzf|$ zlJsu6$E-!3hU^@rq85@iRy-t{-X?Vl_r^`k$2gCwUEz|784+)dEM^lG-WsJ{ekRRM z;}bp|t5i<;OKtG;2*y}Sc#7}Fjt`bQjrbPp&=X_B=S&LVlCt9~;N!V?8B+R~k(ui*Jk;f{i3yXMDT<)QmceoFkJy#es0q z_lYQsJ?u_9nMn$!@)x)--DPi_Z}}R~ElzdpC0v@7s;u`vTQznTj_6-DrbjW>IS))3 zjiPdcA`~bWe9&)zNat7*zCq_-kd=3~n_ZyVYkUzF6p3}pN6+{HFY*c-LJK8x`hNA* z%f2&a2iI-RjL~ULlEkEZvpv>7wh_G82L@IHNu855f3*8|vIyr*nI|BH>gBxxt_?76 zSiiJlxXkD-D4H{-oQ|7S3brI-WwM~>^`^Xs>rQcL&i3*tr2>7sfZkPPygfaMf=e8} zHkey&ij&dhNfR6kkej6*kp%_gIIM6`?6+{hW3@!JSN!y4fmYaAOYMOZozA^QcXl^$ z(3Yt)jNug+us%3YItB#>jlBYx7TJ!GT)-il9#6BAE9A}4x#W_oq>LQP%e&{J!>K(Y z_3%%j{JXslhFC(YLZM2S@as*RYxL3lPwZfa>E(DP!Y-H9Mn*&vi;1G=Any4?kird3_JF(|d{g3OMJLtSNXQ@6 zXq-Pd&2u-kH5$PJpPz_Sw90|C$srza4#FJe&KCVV>OdMJoqt_(`}ts8vKtiHQ7Yo;qeET&jXyRN&q8sS(R*yZNE9`V&VuA&=;weR=WAEAFetxD2wIDTV!xT_p0AeDomM<#10(uz!6vwRG zj3^$j2o)%{@&&(njwP?<=2#9oh}(-I5Qvfw6^|o%rckJ=a}zK4v;#AytM0KfHtDr* z*tv^r{KDi#XFzw{n9`1oNK1bOR6TmQ&AnfWAeh>%Y*Mqv zqBp0k3kQDPXS8*vhr@UTt^M%YwY@zJmGqSU5^9qsu=5w~!~R2@N98>3E1=8eiv&ao zHRrLcWsJTCd}0+Vw^&)#&dK|JPofOX6`dkcm{ddny&=}~{`!l9j{^=0tO>L&P#vb+^yX-5#j6BkWrngQlTigpvGkfyHc4o!+ zdKNX=0_=2W(`oFBCoAVsAQ8iO47c=co}6l5G_(~#;NTAO3ec%ZJ(PKBF-Z0udLdxl z?)|A2`?Uw`yWz&7xc0bG!VQDkGbYv|P|z`D0>MB%%QcwZdPtZpWC-NwiC8 zK^npPB74{qf|A+Espt1eNs$El$2N{OAM8`(d@5t4gm;lL*+TXL;@8xQ6n$E(Q!RaXe;@nyc$egmM|xj^7&Iw8xRGpjnYkS@w%Rv=xcJXu*)oo@sF$U!)m6 z5U;oCrb4;!j!D0>;6%v4DV|^cl4@C;TLNN6HY;v-=^G}Nc3(B?CXwF@xObDoJ^CAL zXmK=-KLoh8Uiyr0Lj)i{hn|lY$_MbW@M4M%d9{j>AV}wl=z-&wWlv`_(lBWS(=u! zRnc-QiQHV{rb4;RMj+=h@oaKL>G_|E_^aee%gZL9ym?n~7FQ)XxiCj-VDpwVw}rSu z$K?(dZzY=m>NZMGZYKJr;I%;##?(Q3-MqWoFi*U{WbIpU7V>VL&HBCTgS-L z3zdeu&mWUgytUY@O-PK9FUQ4F9Q(06I`&#i5b!W){gGVwT+gc0!4^wu&Lcq zY<>PjC}~yH?lQJP8$4|Kn< z=L`AJS#a|b%!@z~?%jr6$Tto&;mCd#l3RtbQ?^F|g$YI@jZk(D>)Y27KJY43>nUk9aQLHsCQ$VtCn?c}an3#E znDG_x-r@Nbz!B9hb{Po&pfpJS3iv8%oetXd)Owk+oHUiWZf7RakHH9UBvDCkm0VgwfI^@nuykdKUTX6E>+NKmgb zHwO23s=G<%Z^n5Go1utx1)ghGtopWttDq&0rSp3ebjM811K;-M(j-FPYfWJnHdl4T z4 z)T!2Vk>g5s%poxUZ~wg}fhI$aUxSaJZc`(qOoPuoJ)~~e66m+vVw?Yb)_{`D3YSx= z!wI6nW15c?kGVR9L@4j>k8CQJ_V}32!I|S{^AaX9%Q3jW zSvKv9YNG48P?A6rTCvV8ET5WPBwZZF+9+loax34(!1)dLxcP{Dw>1Xp{N)wUUZ517+r06t>68gvVziqGzEJ+;=R4rXK^9U`U=RRo;E8}U-lOGWxQnj&uy`x_i%&)p-|CRz_&n>>trt@!Ns1l z7qn@=CE5Iqm$d}Hzm=fBMHP2+)yvkN&`eLd_WBkA+Lb*+(PY=pR3n5&wOW6Au>YBl z-v;HkaZ4n)?s7w~g#y>xJswx70L7&A^XH`O$TxBb{EEKlJ#N_&i2p@<7FZJMTRVx; ziWENtZJjW%VxMQu_dgT*uLs3Ez(-MDMGiaMY^iYUQ#hrsI4p?r*S{x<5FKbBDxp86voZ<+(NpJqd2?G6P0A2a1T8iAtYoekFQ}^QhPrF9mR4T*LTI9g+$S zg-#m5cq4Q+WsAkld3-u|LY2O(G5~R&$I=m@phvvvfnmwc=N0g_1vXPOz!SE97iF09$jj5L**jZWUivzzx8Yf_F%e_N&%^vm1|5gb%@oqgfQEqX_gzKSQL*>6^rRyIU9 znWrJyiHefwX!M5BeaAU5r&djdAG3&WK3#>;B|1iKjaxM#+Ek~#>frO5z;TW}ECBmi ze+q&V0y>l%iFS~(%Tb@EN@ii4*oWF=$byMrG-H55bykO_s?Ehl->vV(1dPSDh;J1i z%|d%fD;OYW@i=JRVlj&)0Ycx*7Pv2OL+gPK2tJA3K-HQ-1q>_pq29UHvfX@@=oTUt zF`Aj}F!U+8`8(IP+Z6vMO+GFq8fgB{gx-S2`zdx_-Z^hCtOt^OXG0=Fh>Rn1&ez^ORaIIUCCli0PPm_6@3rBhye2*R?j^r#8t$W7o+Rov z{27{gXj2?&(DwRkbi-KtTX9wfA{pJwiBz>3lSz)$XNFo$h4cm_)Ld)}V$NhLL>aCD{*Su?Fb!i!FS;N++5ElBL99r1wY>)WdH^JH4c z(_HG=A>F_TEtJ?C*YbQfSdI|s zHevq!`P{*0#2L1HB=$7DzZ6H^yqAA)`DOg$@D@2=od~dR%kCWm+BB@8W?i7F<3P>Rti)6=8qF-bo*3va zW0BBz@u`O7nJ~(VKk19Q{}J-Ru^-b6`bmGlrfmGKT!yz_ z0l&^Q(>rczl&y4L!1{H%@~MStOq0}nqCXfXx0-U5_rKGG8X*W>=9~^Jmm7)j2t3~I z3mT+gOdixri;?4eYkvjs8ajy`2ba6iRHr+7f@gI^8|zzjaU8}*Iy6=!LYZ~ue}ms2 z84eu+nqMxFKko`h#ZL$f^O3}O00OeV6!5L@@dQe(70F31qGx@4PsE6oKiURkLmXS^ z@VFJEH`tjuo{!8cSyM~t3abrWp|gec8>o~vCN?1OH^=Mx7>=N^=>c>c;mcBD+3p)P zX`8m);wC;Aeb>tnPwm>vQi~;P)JoEVNLE6$5XhS$$J+w002JFMyHv@b0CKWA|3~9R z7@3B=?KT?+c(QS=dX~jnA8BUG*fDQ)m^US|suU@ztsvr;AHL^rQe5vh{)a{m9`{wS zj1bS4W|$d{i$Agc$Dz%el41pa^Srt#i>`qw98ILeHSVPXIBo&WDUVXuO_0kyx}?;gK+6h7uS z9K2j9%%Z9H;xnsD5MX}iTHTC+oU;_PiF><r1@j%KM>#$fB)J^Ye1k-`=cc^^k}aHC0n){=z5Z!q zO6T%m{q~1`Tdmy@h8$1HMAIn4uY^7hV)y_g5y)!kPBkW_2_t=?x27B0RIFIKZ;R~< ze&7+`%T2vrW$8TcHnGgiwp1w5x-LLeL6AKAhA8uolB_~pps~uca`QV-fy|Vt$)I<7 z4lAlAt^(f+A`g$ReGg>(zR>Pt9vy*{2+ZS~&VEN=Ys?3T!&A|^Mz^@@B zOetO;u>~$e2z)XKRAfdc`b%3r8PZCI5n~FR90&ivjA+{R4NEJ5e`aSbfn^asZvNo_ z-7}j$P0FP6-8F^;S0?L2lD;SNV;JXLIrqFLLnP4hG9en}d_FS%t5G%L=d9-UC*zTs zFjXLm*$5$WF8a*sZ{7GxBT2Qf##B|>-YjhpRX|vk1C0P#i!PRXxt%7i1PQ0|$q`Cd zeqO3t_}^e@!Etyxgqp4nnZ_s8_m5SH2C-C^s2%mY#qdVJ>QHo2hZg67K56~y;(?+? zzCI6nH72Z%G}oVm3}l}&GriR{5P~u*+6MPUCl!(0%TG1ND96+;5|?rPB&}`Vug}*& zF~;2WT}QP+yq@Dtu6gs_AHo(yozO(v zwopNl|HIZ~qrb`8C4*q7eOngQ+dVoA_5k6y?%+Nu7vxL>NK*^qI9O*Cj%+@-RM%#l zy0aw``0=l*3(&^LMgXK4 zX^W%J+I5^iuB10s-cQ>kWt2*lNnTL}eXo@{JQahp*htoO>dN9&CK91w>Yxa%%k$F> zA9Bir#FEL-no)QQ{RYj;Wj7D~PJE^+pTS@=>L)zl@Lc|jD7+hVri*)7ekw24r{gB` zNZE_@&n8X_&Xn>!hEYf=NVeuh4YQjqs!K0}Z^u63D=F0a!x4}KWn>GRvigf?+%fh{ z)6D!3{|`E}#ddx{h*_JIC)w^x{CWeND$|}DyriHi2XW9i|FZK`_LIDVc7;`UKsDlJ zew>s}D;7^}qIfvm8)j!F4$*WmGw*C7912ioqoQPsX!0|94U|B7Udp=i8&AKVMQZaD zZ?~OVJMrXZw(o0;eum@)rT)O;9DrYD7TDDzKXy`4B)BiP(^!4D-W0#K9eAkFU%2b7 zbR)0UZ5tCO{ycYNhi9p3hczH$BSj!wYO*R9<7*Nl<#kzg$S{X6{an710KGMt`CEYQ zcJsVGf-tZ6aAeT5bn(8TUnHaK!kCK*E6-md-AV9QG})(ZhPs;1AWpC^<5N_D8Xc1= z1n&Y-35`->lzzXc0RGAswUGiZx_=H@?>zJ!cDlxFg|^udrZ`T@;m0fCEB6Mph46i< z^WjJ{bos(oSV*K~kY++E$1M#V$N0CPTZvhA4u00K$(@z`v#y`y$6t4lq5WWmXBC-p zsk_F&@X9$`hoo?ZdkL-hho6E6WN#=`M9{r{Ey7?**(tA^DBW#gH%9ut{2dbZVtMQD z-ozvv7LDfCN}=DMn+{VIz!C%tr4pq>&Jyt0S|FnBCd~nI=8ObOC^mEnK4-Zf69&C{ zddiT5QUe+21TtMnu6wNYUZIW)3125C&6STTTCS8emA|L*0NVbHJ+`gKbOwF0q3-7$ zU%P@HEJ}~K9ygi0>}34jtbgTXr1m0sM2~Y0^pzf>*i$lx3b*+wE3_$kbg$D`7kEI!8F^7BCAFcKC=AlO&Kb{IZ3X=cJEhpF?$kJs?Aw@cr4 zzWpOCq#KnJk`i9QdT{8bZ0zYpBEJnLY72i1bjdWt!zEAs6W-D$$)}mfLYz${+hdAs zGD0Eg5BE?G)204^2Gb1BLs}Xfs!<5;G8I2vN!Q*}65pZNjmjwpmaGr?Mt`GaRx78q z4z}rES#DuspTE{{Vy0hQgfm@-$Nz&FdJZOPGOvKC*eR7CE!l^e-*7(0|FktLIDApl zF{6eH%$!!6N5IDM6 z>(G+UJgJ1!f`ouY!M6y*#rK7$La9{jN~y6_yYierw%}1ZII93KKdP&K0a|r2NFz_< z=T*Ke&TAui1z3~8K-(&>$7BCbmYwLhimX2AhHt&4OEb5P4yWk~1FtZFd+3jM$gzTA zSt%Y58vKl>VrojHUR^y56||M~dF|l~cxhwsxL;o%cAh%X8^Zx?&B#cM+t*@W&L)`d|Sc ze}Z3!6!CLcHzn+PX5w)Mh69tAlOLFib}q69>3s9tV~0Vpd^F*Ax349L zpbnIeUJ-w0zW&>lPxQ$~E1wH>l?u8qDUo^+Qg*W4_uC@U1h>>hVw?gk`Yt}NCRr+l zn1i=!-gdR3$A~Xi`4zWs&$BYOvPI^vhttznx90JR&UQ;{QDh8|B{>|qd0(c9UjB2Q zKEs|0YONn=v?XbK@iBz*OgNJn4bIS3u=1zj5t3 zSwi?-bf0g>6)vAtC?{R=z@>U#w6%u|ne0c59lK{Kc~-rnP)mqbjwR379WV+xTh?8? zc*X~Mh7&UT3qS$`w(&b@4^v(9%^K0*4ZIXi}TOZX=%9X zgM4)!9xl|HKL!)bSYH0o(GwzM$i?vxI2(=t^?8=xWV)TLA&k1gY=)Y5loPr>IdBRi z?fy_0$b!%z=wRVisV&X}M#hkGs%ZtsUgXI|hnF?8L`( zPTPNynYQp6hgNc5>}=@g_Jkv9tihKQ-4BX*zljkw-Otf0cOivw+<4f)c(FcD5Axhz z(wqy;w^bzP^I1;y##(n#9^5dMqProhbW@%GsiW~2=nRm`|0CyuyPEqQPaF^9w{DW0 zPbU?5&ZU)UC6j>Qx7BM2Lu<(KlfT{#CY}$>dCu@Gl|}d^b7M?ygee|-!6KLa#ALlV zELk#w4W;@6(Gr5mx&k>qDV}5P{f8)o@A2@UYw;d5(dP=1zP=lLCL>Vrlz!Ns1z|vJ28@uWB#KhRXnkdlH;kPo{;Sy&g#c6Cesan zm!oN}%*e5W*r+AmuF;*kF_2#V$#2$aZbQlS)^KAWstI|Ba3!AxQt`)LYIaPYoF4%b z7EUWt7NZ&IPnUW`RoFw2Ik~n6NYOh=cYwf;U8Am`!{dKDHEYDL2DTO}k1Tq68JqJg z1sVs$zg5HOty6XwdXiW}gkaSwgr6tG{(P=sy#et^M-=b6Q!tl2dKtjHuHoZQm#EeJ zlNep1+o){1w``ai-H$DQiLE|NJAu0f#&H9ges}dl0eI0k1yBA6;Ga@;4`SLRPxoNu zlwcO*2Us*}i$RgG0jIBeA+zeDB*hcu5#b(87DCefZCytSbFb8P)_U6BOn{qb6SED*^(Bx5T6QuE^mLrC zWZLLqkxM{DW3*+-sND05P7)3T$T6Utg64&8A~vXtz0N|C1bkV~^ne|H+8>k}lW#3< zXO;`3k|wUfA{f?7Yw{oJRl`+tIEquY;TPicMCfpP0Wt2ngs|{Mh5wCl&VctXJLw1J zcf7w_drq_L?s8LzBmeN%q$itezLyU%2F)JM7HSLn4;p%5+ROF~c;n=IwU^(-cQeoa z?{!oEr!uPl`(MeXketanXP&mp{fNTo_`G^WFnTl5sR?9gd*{{4oZ(Jc?a}VD8OU-tP<{83N%O$0ZEujW_Aye`|3f&7Fx+H5KMhSNrqhkGhfZy$m%QUxfu*iBM4ezrmJlb- zOzXiio(!dEGx369&iX4J6l#@{0wsO9p<`t#SHp3-U~!-VkoKp!5%zRDaFQTX-lm?M zX}P4+nnN4IHLAIE$(^;qZh~=_jw9^|a~K`gY|(^lvsvPmDq9LIb?D$S3qI11!q@G! zr-gmh4^U!_#z+e}zE=RJ_{Rr=D_?8&P~HcpQ#tSP z{s3b3&FAYKj=`xBLl+4e!f|8AC8RWhqEwf!_^n<}leyz_hY)3~%@H|}vrMexF#ye8 zvx&b==PleFnY{EVqUu0i-daDj;YYQMkYb zU2&ceo|Y1;7dgjX{3`arPbUt|%e9k{qEz2@JvXrgNoP5HP5u!8#|TpTRw_D$LP7&1 zw!!@dq~$RBQOYs6sbR*-^QEF;BD<1|yIOh=d?$+C@qd%E)^x zE2uv&-r{XLb#01&mXa}jkN%2R#STOsRAU*w|G{M$sEw#Z%v zg8fMtd`@ccjDsXFU>|{uuUa?@#+@o_lx3VwR6RY2MC3*@81M=c3BE%96zBzkojeP- zt<29JKKA(O^89`4mQBQfQs*7p@Y%N3#^jY{06A2^Z%!ZzF~&x2HuJ#N$?LLVr1JwfjG z)|S2rU;0?}SDl03WPQd8W(kJe-gb6>$A9kv}QizhowFi<2b(Gt#lArSd7d zr;eBK6Hsrwi6=G^GSP#eE2%n@_$wc?SSpMEb6Nl$-5XkP`1e3kMu(MD(Y{T9=#fxl z^NV4SmppXT`c2(Rf|Yi?12~7yZJ6S1FRQz~H&%03=;`W-sP!zdi*a+Q6JFXdzN&#S zJ~fMMv^Yj+*&4%4KroaJN%}p}*rHzB-?1-6>iTw{qv=ICD=B9jy602dVZ>Yq6a6sd z#60rL_gwX|i`_%j_$+o}jbmyWYM#x8=AWQz-Sn*5lNpUtjFuf9^WAVJ9IR-JV%a}5 zi&7Fn!tsGkZ#5w@*Selntu+~S_&3%)rA@WM+)Dlii?zmHW&s@*g)M0CSi?yVeIE2k#cb=!MEbLYOqE74R*J1$b~K#$Gbz`1tMMqBmmscK@=F)>e#JyNho zm}D%h=nMh>JdBNXaDVkpRyJ$Hin;RFGH#xFxJJP?iLV-=$S=qN>l5|{M{gFDW^7)j z^<9R9m-l&=h(EQs2ct5YYE_H8K{-Z*+){>*hv?q1XfCWFCQb85=vHU3=gzNa#N~}j zgtBujxVUhhr(wPEk@p@?ym)K%4G6P|Qn%A8vf03;re)J+VV~I(qQfVs3UqdG=C6tN ztgMMF{K+p2_+2l-L(*GhBT^Tf`c9FV7PsokDd%}siJjvz^$ca_ZaYtqtI&@osYcs$ zdHH5RmRuD!(rx=PlzL-PXYZy06&O^@gKHV@^(%5jaTietIor5%vj5^^=rBg=}q zC|agFtwp@lf}xOHdvX}?x5q}|M$-N~29EM-1yy-5oy6o|eXw!fP2q-E?y9Nc+5;M{ z4Rr#UWH4&o3Sa@H;P%&p204-AWHm19xYji_d7nycyDJ}WX0zp^S8XPe3BvZ2g%G!~mYZ)e-`t$nGDeO}$Y69@X}=Lw zyw>J=Hk`=rdUoV2neG%ulg4e3sZR2kbBP)&m^q2Djvpn}O<@(phLq~R`a-VazP;;& z)M>X?bW%sZ-^c^q?4V<9u}O#)#Bnkv^o8f_HiCGD3mkiyKC;z2q#!0j=a$%Ir)`x} zJHhdk9`P2G5)cxUofitrH|k|8{ZqF`rE^|(86{7JSoT(x;bGwE9|nt~?%($NLs0BQ zQ;_x#K^VOC3dUeynVyit<0xubo}zcA5@_I)(KIPCAk*P=NlQ8j5_NU1-QTDaZ^NqH zR(anj(?~d*Ug)95j|-KAx=k}H+Aj3oDjPI#(N}+(CGx~h&A#0Gsmh6p-tG~OD^>_} z2qf@O+KxFahF=Mkg4<#LXeCD4_SqZS>2$a<-YmPWVeON3f)R;)h9k%a-#$;)ei$@WTGZ2qO= zL~OCyPB(vQ^+c%EQC^G(?DA-^O|Jk<&Mq* zL2txgcy~e?5jSL!V~%s-oeGX-;J)jH^GSg!{d>&@ zdBGH9O>+Ysd#S zxO;0>E{$aC1khYP3zoHg>w$}-)Toy=s`*qQyV<~_*Ck8VzpZ?|C#mCbWAEw z-~x!y(7=sDD^1=FH=I4QPL{4*rio$K*^~uI>^LIWdDowwV5hq$o|_Udi^x6gyPMCa zU8!Ty{GyiL#Y>;c%T1g`$BCN0sQTB^bjk?bk%%no8yV{tllGzl6^!5F1z$)7r6jJ5 zDdJn&NQ8ICPTx$;;6PMsH(2@M&Z&Pnnk->=vRQ{ZfNl(;ZE@Y(3m3?irlFthz~#|Z z>fd7yqgl_jVa4hn2C$@w2;HR1P77Qg7&Y(L=B}jcNPzD<#Li< zF5_z_)IolGP{P{($i8lCa9~#`C>t zTh|}ddc=~|SmkqIZEXvskq0&tvx3fOXDN{uS3Bj^pot(rsB_{`umo~YRFv23#oSuP zNvJ%}WA$Q2KwPQ8wTF}O%vK*=^>>V2f4G=uH=P`VoAH(cKbHlGRu{`jrW<~ zBi5Up`Kvbhf5Q7ndF4jg`tQGyB_HY+Rry5*%H0>+6>^a_BtRdJTWAcjYwM-)nyCuI zrkSIxXLaWLfh0@>*x@e?h|$Eaulm07lvZz#R`;h%vYy@g(>H2KZ?M_FELoIB`*d_988 zZo{g61u_>-LJ$Vt(=Hx`wSCwbOPL=M}(MJZEHx9DM^O z{|5BU$FhuItv6_;k4o;6%_x<&mR|!JV0#697!sg(d;Tdk9F--v4{WmdXMwjD0ejWR zvvsSzpxv)fFYvIbFkJw_{lCHh-QYaL$` zeU3b~l*h*|iSH9EnUPg4WuG#IHu;0xWBUxWSCRlkcG$1uLkr)Pty(_tUBAxGkxZXb z)CzDN$c)?>`(={3jeyuUw1YWrE&a4xcfDZrXr?&T?x*8MQc*YW!*^iqYnKY8?JC7t zO$i#ZJp6^sabVV}Sti)7Sft8BAOGQ}jV&myy~;X%0;isX8k370KvULv4mvF$I`wZQ zLaS;8l0C8U*56*_Cs+B*mb+$6SrpOg^Nb|Vh;-1=c#kZ z42ZxupqaOTGx1*8IJhdjmDyHV1w6TKtVTF3kv&nozSw<_lcye%s8Q5daKY&~fa5}> zGgCU_sC|O$NQBqxCwoJL^cJz*nLL5R{f22rfRr?b`<7jrEf&KTcRI3R`o_(X=aIDV zX$2VnhLM`5hbG||e&)o`sbKx`)uT`2;()0ON{rmo0PRY;4CCD@s^1tp9H>av(-F_Xh3Wn#`Kr?| zOhH1>_B1tR3rC!Cd-7-4Df>d(P{aISxs~LROf6$k7hBa>Z(`7_102ME=pHViBbiD#$!Qiskv=*TwQA+lGM?v4*hmRrA5Guxc#;Ow^K2WY(BUdD5f`;aYbDke+A%6b zDkO!;dTR=HDmp?DqMDH?@USd@33iJ-<_2y@!B5oWC$Cg3DgP0g&$mhrb{|=rmvqlz zE{4-MD>OyrDb=(kWb6tm3?;xU3j82=?^!z6JSI3@ z^|6D#RHv(Sw7w{>7h*UnhMTiMD!{|-@3VgjD)kO^PKEeO3v4HY(1H@UfT-8Q&0Ake zQq+&wGB$LJz$xNGy4Z=eFQNTmn+u2yZUf5N6Fr}z$1HD?wLF8R8XNc?gWcscmSXvE zBO^@&$I!vFz!w=FqR>NB52cB#nh!X!8MCRH7%5d0o1IjOLnseR$?wy60%&!vD zPZ$%*irhz4&`Rma9zk0v!>P}XCm65wXMrOIMAm~gSA)SyF)5_+x!I+wGC^Y`yWnHk zaxmtwn_iBJsOfHtD9xV&yDh$#MlYuf=hb=N-LjjE==yqWBAHNjEP*~wQhiLi7D5rq zkZiS|Warf!q$IOffnJ!N8||rAh8@ci!)cG z*L~bU+NJydi}IuYt0E@xvXUuD9wZELWkD6bb7YL3tl0HyItQG?uV^?%)(f*Ip zr6t2P``YS9)-`r&`hw5%}`V4Y4 zO=Q$d#htaZ2TnDJ2n>y#taLq5Y~8fzG2G{%M4Lp5`u2bpdb^`x#$xbI3&L+DCrW|H z81G`Zp+O{uSHNN&*{xljw7QAR!QVKwJ;r5-b@R@7ZWBey(m}Mq6*ByR|CGOS$75xr zWQQvC!D;+-LwLJq-h3f=dJjRX_Aofm6i1dlbVsnH^;GWO1*y;O_fH$$z~RKDwP49u z-QrQ1-ZJ_AZwGa;k?2393?EozA>6Zw(ll-8u*wQmPWuT=AIF(xS_-jxpq*VF5a5co zY`PiZFGf!ix|oNUU^%x{@t7z(BkZZtQ#NPrtGK7YI~Ix*lq%vc15dsiZ(9TL3~16_ zIj0TMZ8tMk=8ZVKNc@Gb9_AlvTE<3vN1DDfh+A`&q?K zj1@J2?f7sBJdDj*q-{_O9u| z*qP%Y*@9|E^>UQY# z&vz9m`ju{6(Ga6QlrH2cOj=!5WhbRF>?UNZ#h~fVZy28Y;4voA)f`zz>ir@m6@b#z zPPhm*R^6wJkWPUbukX~x(Ikd zV_O{vnHelsFp+%p=H9ON^f1c<;YZUn=m+p&t#1gy88463e$Xn6zc} z^7asIH<jnO@%)0fzg9Ys1-p)R*{#9~s28B=)Xy|iJh2TEXuV`1h^0mjAc9JhD zXK4cy>WBR3XESX9*o@H~ZGHD+vT4n{AXtyk4%r8G2 zWOsrOiW8wXIa@u2@8=bDizF(neCF7wrkGT;_lP)j=RuCQAcO{ifK@{a+ESEU&vvwr zH&Wqc#nVYGSyJKq5^-sflLPG=vpT1Vx8#SGdfDtrk^MYO8SRz?K6dW`x?a zq^55kRHcpXD1(S|O8H&O4O~bL@3Pa<%hU_rwftsSLP#LwzSiOP2WVF>U)MOaWjQMi zo;=S|snZpW$_|BVPqEE^+$U2Sq{ZzQJZ;CAwi60%C0@g+|1`CXn8TIGilcvdUD7y~ z&gLL$#~O@@;ClSUtby#0zL#7}c_TAMJG()0MGuzoP=DHkz!6!_JmL0%KtGn1qIP4= z3N!4z%jL(6HzF+QA1#XWY5K6K1y3y<9Nig830ey&9MOQfxCSn+?bXXg4u?e}u+o3x z<6dJiG>Ta&&bSqfxE?4OsLDjjfjhW*63IpQnc84uAZvgPUcs{Ic*Lk#fZ?_o^Kll7 zY<^@C!?uI(p$zXtp`OOiY)Cl&{hQNxPK5Xc%aItx7s^GZ} zzkdcl_?t6gOM;UREI+c;;dvw_Em$2}w zO4$U%umN_gQHB(6-w=ZNb^6Cbo-bd^mmR$Q|b~HyID#AUzzkA=6ObMM4 z!cnsI6@z!=179Z}{kgQ+3bBZtL^RG1mUp!2Xu^T|`{MguKApB2vvr;>qfFb=)w5i* z%G)ysR43vJpLn6qW6ZQ*IjERmPTEBp z|5#b7R_>Oxe%CFNTUn@2{VqhVkP;3O+!Y;$&xztYKPem-s`jbU;m>xMsYjKqlA|1} zq_&91wu~Q?Ut;A)Ky_fIbhu{`Y%Fc_>a<*>e3knlEpOkyLFdv#F z&n(QF%9;yxT03SC`p0IJxm#LfSkSrGEHh{a7~w=!#ZV5&4w9LOrsviEiQ6vGK_^2% zEg9=eb>_~>MQ-W43mkCBdivsLqeu2=8>q>_Z{)CqHTtj|j@2JXp%%5k{(%f0IYo&X z7W$hz-fk;G(naHbm61QuR;l*3_u$*O7fcyGUa0CMkze5~>Eg?%rY(<7Wu|MpiEW#k zObItK0;?o#9A{KCGaYEy>AOMi;ckFx^sES`6|UUg(ZI@bV(_~fsRZLXEB0B|9L0Y7 z(EVTJVas|sI!JZHlgf`dKeX!u(bJ>nr1_$tG!E(pNfqT+;YvT}J*ls8U=26dPJdi9 z==RzcC}@cSfh?Y|OPgRi1nXAxwyb zJG~QPWPRNO4g+$BS5?Mi=8#pTLY&4roUCr@%Sl*nBO#g#{+CXR6Dh=JVo6ozXS++wetogre5iBOBaYMj&4q{uN6?@I2yAJO7dIQyEFByE=_~=YlU3w({6J%t2Kij_GXq#SL)5gcL8%REtt$1Z$f>rtr zZ5=g?{+!sPrd7@A`bmJ41*5022v%!M2^934)0~@Ik`SfFNY9Mw8+xh`XD96J@-viR5e7OdL%eY~=l?gR|zPhE$a@rkESEPy2NivUTh_nu^*@tUTN1;j}C!R9@`RGr&bp{_KO4iEX_^l z=fpi^A!KrLp`j9q0U!zdZ_{h>8OW8&M*%nN1U}uKJOv4-MaA3xuHE(8#Iv7IKQeX& z$hZv$!5p~mMH+o;KQP!O1z|O=Hiao}Hu=!GCTTY+1l>~8D`Z6Taj>#J36Tjy2OWX& z>`CSMNcIRBdOoJQ2xwhI1l9AUsM2Eb2ISAle2qBhyQ#}C{=@tiYON#~G*o#KRsE^1 z0-`^1XgMz}KO$y;g74IpEy^~zRA_R)lc-r@ajrfvgMyWFTo0M!VYl>+WkVKOv49O} zgb~U^of)E-szhmEnk25=yl#L4We@AB*abW>8jmf;?&H2g0{9b{4h8=J$Ulb(EfPY0 za-4~#RJh7Y4Z&=Mxif_KJ)dF)Vh%yw?Z|F4!Vyr%g{FqpmGyG_o190}hYa=yG!$d| z6W-FzaffDc@)4;nlQ`w32iZR0-Q~(ym5lJHmhj;RsjxE;`=K0$s_HTK3!s zN}zl#**LeRSivmOES&CCZcXqwlM$TGfy*m;fRZzYQhz|IJIa`3R=PjuiOyOD&6gpn zF*1qJ#VL3@3-fXNx+Wf5&Bla>rZM&LHUZ>xUt)20X(O#E)SnaiQ~aK)!L@=amKcpL zAJ-O8Ku!0ceDQ!K$3#eirms2E7D+tx67PU+Mh5MlR^5fo^!(<11|CT`6^n!vDHQH_ z7Bqh3a@j*zwhrl^!}!~9VQ!9P!VS`H^bcG07@|NMCGQu}j0U!}ZR;|X1wyu(}bDKi(}^ ztpuXSoNz{XJ(gD*M zi$0FAJ2pJr8%+|%#w0e=XcZbZ-fcX6s?XJv+H#=H!2?fzC6i+B2SyOmiQ2gDEH*rw zm21NNG}8)B(OcxYWl%{9v7F^#4qI}F6bps_Mecxd;ofr_HMJmcFgkBxV_dvI(ckh_ z)z`s$PTGZ^)9|7g7Xv{^S~$XFUQo+$0xZ8)|JnqJOZKKf7VbRk@t#c~LhABJIO_3OQ!D)b zkCBhc63%~OverQ*A}aLU6$Dt)^1aFIKMx{%?YrPSzY}hf>{Hxr_T4PZTES^39Sexn zX42hyw`VGzrH8_*k%9;{kEWNX!o0F)=RE6%FFuQfKL@>nO$~FuWP}qK8eE2BPZP;! z?KsK`-^gVVimpy1kDT}HufescR^gwTg1lX>Yrd^3 zkVAV}^-3nR#`+!D3{<)s=g-|Bj=H<`X+%;H!zDuHO|{|1Rm+;Ma}}uqEAthC{om!X zBbV%R+nWjpQ|wMbc*Ha?(Gee}o4ne@FNy04f;OmQqiq^GKnWEMrIAhfl-FEe1zFWbEACd`9 zGe&S^@zPryfQ~yqrQ{2QClz%XndTR2Z4HSvzsNhr>d1sEME#u0O=NL6$&Xpcc7lf| z@pcs;ePVsKxz|0j6qy#m;Vlt@syrxzDM;$e+V*-pE|clBI_BA%ih)^*VH-)r&L2sq zgL!#~NUP&jRI;XR+sJ+KM;I0XXWZ;C#YLG{7lWhI`n96>2)eV?hdF<>i6PX%E4SPh zF4t^scjYXnzwS8ZcnTT+Q0f+m@IxNisP>efB|MDKpPV}u-^Ygq8(r;$q(u~>7OQ*O z+T5A=+E@r#OS>_rOVl7q1h?I#PDyKK0l$ZxcB`VpN|`i2XK z0U?KVCoMhNSS_2=bk?LQ+dNBu_5rK5$d)ffjrp` z+3)f7^73A;%h-5c!#CVd^p&mN6IW@?t?YlnGrGX}6pUj_ICxn9l37LbdL`E6O zb+@V6w@)IZG+Hz&Yzo%euF3B`2|ufkWA%Ej@_E1JI?LFhz-2?UT6lAsL`2i=WYA}n zIlVBmb)kd2^vP}G(nwVH7Zjg4PCmPYUfp__Z9s09x*Sw7D zK!uED=CS#(-T>@%c2?0mk}h1%A%@OJT(+(Nr7O8qu59d6_T2)R)%({3O*MKGPD8Mq zts|BuM(o~)1zxn&+OX3LEZ*s^DZrXfQnJ9leq z?BHpvhs-Q0f||=FYs=aA$-kViZ#H#y#&s8u2^ z#@E}(F?=tit!0zgYFPIl3YqBrIq)uW;^JE&Y3M=Vs8!U@zPJjFVmjxDPr`zCw*`5v zMD9PA;LmNGWGMJ1N%nDZmRG^s%l2I2>nX*T6kof2mNTcGFOgPf3mZ z?SXIp5k~$g1WAk+f0xR-<84ejb9o_jeDc$+DYE&u=8R^4lqLKp+TfN<-{=-%AU62D zYKVd;cuW3sL_C#kWg|8+G^zgfo-tjU$3%G{lcM%6&vGoepu0}*uqPvw->}uV87D^5 zAS&wZCIEbSBEFTi!W=SZ&J<4K52rkqhB3Hg4VJElf09J4boG)iTD$p0!e7m!7D`+{ zbVdCpwN&6g2Q|TQRR3$kTbel&cjh|(aUo;Y1#vaWD>9)0EC3loTf6ubuqf`QiOTFo z6ZwMc;ro=owwRQuv!c(Ce<#QFu8s1Tj?aUyvDXA3akA2a?$B56L0}B?hjYv0((VZ@ zb6vOWDf*SG6IUW0O+()UlP^>(1eL`H6{S&-=wq>xwZ{cYG`SFwvL)nErO9TYq-Q^~ zCB*x-#25Wxd(XHY)ePoD&(Pxh+Wxq5TkhAn>`|NxgmaX-(1`VBF&gZ%OL4AJrP1%1 z&3$YYb-Id@uhUVG(};x>AZRXbR>A`fpa!X_Qr-}F#R}ZAa~vAao7Ew=O_ZMd><&|= zdk3ajhy56P9E^U-ly~&?GH0XY;kL0@M31#%BTU?F zwV*ryId{C@>Z_EStc4q+?*}}1n3yRj-%n%diTeKG%q6hQv z$p1hc^CG_cX7#n6GkY7}M4GAfRIx2j@Bxi-!{70P;! zRBuI{m|1p;^0*}oX0h|bYU5F+T4G^J(Nqh&GRb73Bgy3fncSQ)!636FP~{l3zY`Ao z%yLK@cQ2+MXJqoRmNg}aJj25lp6PgiEeg$Zv6JD^3a6@CZq&**YHfa{UKT+qAuAyY z7B6O!nCW2vLF7Hr<84)fuJZH`o+g`d`sT_AH4;nm;&Cq_ zQ)QK_5O}@h+;ysGk^aZ~M=ai-JL5H7KCHXUi)Pu|uy_|;4NfY~hHq863sRZmx^w!m z68^gJ-yYbea{2li$(WzG0j{41I(egI0fr5l$s2xBiRQbL$3Sudquifk^&|xH9VyC4 zI#c$nXKtUZth|bTHP*Q+>NGl2Ps+|MgHXWfIAq3j&DIV~ut{wNH(Nw-q7Gm9J9eU} zXzbKXIKSI8W`;v5y2BAoE5Y96Sh(*#^qQMfsx}_(Hgb;hTije5 za_;es^HMpV9+%FU(cj}oWQvK z`#Pm_rZwjZ4(f2DO&jQ8s=jexK5M9x3-vPL57H2AzlW7ZHkyVN7h=!S?wa70KpDUM z3w180&wI$Lib{6)R)3Qnd6z+|Ll$y-E6#`b%VI)iB-a3jPZfpgy@I&fhvAXx zq%*S%l6!D~7c92bs25F&*S27j8^FASXGgpuT?Q5AF-c#<#=8wmL*meNp$2?5h`@Xs zCE$8iVrZ7(bg6oifdK1vmI=Q&4_$-g^X{3l%&Go3MWq%~+2nwXSC~jsiOGuyB#|af z7VY`F6>RTS76ul%_x|jf_@`>8wG6dZkwte8IQE=fcl3oKxyH(}BAwqw|ZPO`M?BFXqEGFX+qR%*cUW_*1Z z!Be_``wXeNC4z&#AMpUwKw;j)-efKz@BTs)?9GU2*|)@Wn#Wup}=Sj8&({SZL&kK$-Rb4mIL^bH+soG9n2xY<~5_NA4!TidFy>jh-3fkU^97f^!&9V$keKlXQlQ{tXS{L4VL$U<6f`!X^^n z1MH2C!OdlOJGpk-G-6@Lc&TPfc6K!!4=2Z)S(Z?cLCX-TIj{X>hl@B{w*~(2gp$iw z13_aNSuwYa?bRT39RXJ*sxIT}`*Ke?#NWZXhXR2Y>c7qKRgc_S-VZQ@4d#_ZiFP5* ze%OuUeSD@5Q(`*l9_*YI-h-DMZT&W&GS1tDr;3*04i$e-kAoKQ%V6k7)jYiKpD_r^4-HmS1Lp3phR1X5mFN@-twZ!TB9%!Iz+*L zd_hzFL?ME8%S%z7M}XSEXuNhJy?vBCo_$4G&xV$-H7&;whbv&B&f+bcX^b z&xwQ|CI*XqUMO+_LP0XzJtNYIN{vR$%+>WoC8p&bB(66Ce=oYZ66^zAY2HH-gSAQ zMEAB6P{a^+e0KrZplM_t(AJ-MemSH_g^X=j1v6*}p6;^R)Y@!7z%PsQ8Mc!EI=n9R z5RCHuHr~r1?Ar`Dc%ps59U01Z;yFP(A0EkruIwRB7h(>PyX(kin28oa*D+$So>({Q zk=yTkIDSfZ2p)co_UqS#_%9}WBDEiSLMPg#IAuRi_1FthI$a=Uf*#3o_x7>h zRG#qogi};+HY2xoPsA)4UXs7^USSIsAHtF~U~g#MJ^z{q2VU=XBG5+U24%c=OL)tw zun*`{JEs4oQWHA_`~u*t+dX|E58C305_$_``UHFh#E~^b-u_JLiKMKfxdreU4H{#8 z8u}_|eC>alXeKsHvWNA_K162nt~lw^5lLBhUodj(Pu)=^#ee9||G(4!APD5a1Ozs< z`gyx30rWl-TIylojEc9Dk>b)=0&$dx3Po*D5b2^s?-#BJSz0JXzS_VTKR#OKO5lWgx{!i`(vVohlOcuXCL=ELT~wt1wKm@`8dWzU z;ucMShSSmHFH|X9N8Xwjh3(df3&F2U)g6lpIa|u(Ji(=KkR8**F#Om6e=`kHWuqM_ zVze%9)nROQ!kk~F1;5mdu?6Jv%R;gRRTIH`sSJzr{8n-Fq!2NSTNs36_~pxM1}k5c zGFhVYk>SZd@hs1@TnlY$+T_`(4FlgT`oAQCh{1&Add?P29y8yfia0+BV!oj=*rd<) zG~acsut6pbVaMf(J6BCCY-~21L#hWGcg1E1EyGrQ3x*#*@Zo*_r99&s_$`%73<(PI%o6nqhjm^Deablr&9is-Mm=LiOl-0@@RPQv&PJsKoAbq^}*k#>Ym(4kDrGot`JCqNk zZYz!@<0w}6HpaRg5_sTBvK8opG}=?x4FBo01=uCh&kKbe%!;wni%4MKnc3EY27frr ze#cMKMPss|+v}9LBsCMl5lbQo2T{BNj2envs$XoK}2D^d+2U%4J$2 z-KB`;%x|Nt4DLZSVFgXGiOFv&t)g85PBp_Y_`i$vpOZQk6|YqqvU-1*icY6P0*-37 zrGD!q3M1229^3PR%qKu-)}yvpS3M?e@}c_E&ts4bJ{hKrFltLEVG+?&R|1Dkn&7*+ zOH!mzm4n>bde`RRl$b0sfqgDgQ);2CL--6gq?{&inNlozY~jfBPAwHUDF{~0cZ_)G zNk0h*&kUKp3=^lhcDdu(8}vQ64eJzeYS5F7d%nqUkB5TB#Q|5n;!BAW6#|V6C1R>-8Jkl`#P-6ZWZQbc26FX(x!+{RPLn4 z(i*6peOIbeBN8mGxrCI02`D6bMMIO{+4K8lS~t08e8~n-#7n>LsAE~8Z$Dd&dhRX5 zxWVX@Xw)B+<0=|{>9v^aCa@X{=1K8gwihq!d71KNJ?~8(CP)Z|ZypvC( za;NGy1ze8#R!XDCR1K0i`=8=3LTShm@lt#JkNjjF{09viy#y7HSy#w2TeU#Pc$4D* zR(~#VXP&US*VnYWN_5tTreatpmWqU~4xO52)L>w+c8A2%9^-s*OXV-2Dz81qSczmyp~wLg5L@cda^uBgI?=7l`uBczSXXa0*3N zf>@Ev82w6LIM!|_x$xOVy2jAlr%)qYHoyRXxz!pk)(B(gtYrdUXv(@+FAKY{>Mzum zX`{QyD|O+^#?0&rg@bh!_`1{Z^nIX8nKFe^-4z6x_g2xly-5{Z)Z9asCD>Vfp-uDz zNG*W-)aXy=Ot?3&)D2QU>~Q4em{&LUQf9myYgd1H)J6L9kRwu1w(6qYNr3Rog?zKN z0^QjkuBs-$-xrqP4_>MYq?gZ`#N5`rsH3aZD_*OMUHEhbg5k(2XR`^+e;K^89FxT# zAPW=#NRq*qqPxJZ)xzjW>lvzl8fw+#UdzMWq)pKFRMNOlzWOsy+=m`Hl6q9pg=_r% z8B9U!e3s7;kAJ&2y;mk~mEVY^$U?)wueCo2B^EChHkh;g4fK1r1YgGn0N>fr^574+ zPLrf;%m`kXw?PKd-_(F^b}ph^&ECiL|1cdn+OHG^n7;f*_DZh|KG}lYouocnm%CnE z^@Q5ZYS|y1+j7aq{Y>XUQ z^)5>{>NGF+DgH}|GrtS*AK%)8$b4L&f^Q__s3^Y2tRo1LMc z<1m&W61vaO7WM<~2yBYLL@;9N&Gs9570VJWXHVi$lcM1ScOkiifV>C}x=Mq3&=Q+aaYd|{i(jW5u>yBt6-RLOmoha8 z|I#MwmAuoPhqhW%bg+iZ$+YFRE8p8l$>U!re2Yx84ezM(IVO)Kep%~j5qL{`OR6|W zwA}EJUVFEsx7blItC%*cd#3UdjGs|rl*8b&3d^gEu&!L|3-XR!k*@m8 zx$Z$Tm#fU>7Tr@`!fDS1@S@gph{kZj=oHOl#@IK<0GUDQib?UD6#;W7M9n=R)sK9( zPIZXw;~*bR>4g2TV9rv}^;PL$T|V~Ov!C&t(<_6j`S@tfF=6fRA7!l$UrMH_X>#9C z#EdPvjN~>6hm?>lLZkMfLc3folcx=^0g|k<}{iY$EGLO0BMLfEP4g)|~RKk3G zpcsa!`lL)g91;o&Gw4Nu7tY!v%)T1!smY1%>$fBO3*|fqkY&(WelI&%x>Iy-pgHg0 zD-)Y7v8QDn*_j5aF!S_l1frru>2-axiR+^R*~@-{d67wXIWBlm4V6|r^0 zz01lc>#ktC?r4;`62M`ya2-fEIUYdI$V_-VlC2#8*3^RHnnTA`X@-LfJ^B!`X|Dn9 zrRT=d^1+yuEBv_2rZvq4$T|f-+uV?jqIN7gyn}dLx$ELF^8Yg+(Da*3LFSx@B}-|O=plT*9-La94A;%t8+TGV7SZoVzOXzL6PDXxR8MO z_~=hM_P6a%6i(^*`LsiMk5JKwj?+S56-eSoYc`Pz@}CmE&~c{n>z{en=BLUa2N?cJ zglc&ud$$`q%sbLrxuYUm{>6;$$Le?@^eihWtfUP!6ypi3@mI3``gaFQKEe}e{*^0M z>g5{x%27wkTZ0)^+Vo22)_ou0ME|Idzp!1EzTIL^{wFNSof7Z`K^H9VY9_m7T#X1?1vrr#G!t8 zZfeAaQz{LeT+s!&V*&_UIo2xMo{YA&0z@#?+8-xJ==BTgGvPfPv3y)APU&U@ECuQ7 z1C8HP-LPgdz^}kpR!|g>2vk;hD;^6vpU({K{e`-h?6kZ7Y?bK%jKrr=|Iz#)bKc?$ z+DXihZV)37x8C?~tP&o?IZ9u7Xj|)L;h>PUeLA&08PKCH<0JBFO-fj>*_XAPSD!EI zp3%09T(vDk^zMz12}Y?Ci<*=aoj&LM6R~2{w-GZC(q!BCxvP8pqrU$eJ*ZQ)>Jmg( z4yt4-hA3&oHtR!glBat2U0d^}Y{lF_eCKbEQRcU&8Hzdid{k!2`lXIT8Q;rU67}6` z<1l;qBZoxSxICxsd;q9d=}XOfrqYFzEbWm|6Xj>g*ck<*3ufTNbRbHdC#I>#uOx%v zxeJ*FcPa0n|0`tW7ScIHjtevd0`bakDV{7k!?1pJ=8)3(?T?nQa|t^KMaviQ|wrjSd_2uZOi*JEQI;m&`7_^6r%+)aUV)oxoALaVHe z`ukb_;eoF7m|zT|9H>8Ny&(jAXF@|f=Kq|NFV*R{zfc4~6f^heGhDOOx@`_#X?0Lb zo;^ZN{r&u3fhwL2nx}lUCiJ@GUB%N=<`3m@b2JbJFoXJ1qY}Mhk@sd=dd0mMB z_>ie=918uL76NZPWjG=b`*gO_p;+C~VrcLS0q1x66+W$KeyZ(8lO4+(4nY6VU}`pn znspMt&-R?nn5HUBk1S=dW{`>ObD^3%ZDnM*=~7|#<;BYu$f|%g&YB0*^@uRh?^4}x z@9N*}$V`B-=lw7ubiwHyl;a)CXu`@UQ=|RVI=leqH<}RvisKo*_*7b8rKg2@x%v+| zgDHxxXx=F*V2P{@Ziet-&b8^9vV-Myv-|p;(f>jL`JAjJG1}&P9%&nkaz`VnbI;o% zdQ8ks+RWnaum^;ylcV>&yd?hCQcoGvH}GeUwFp4!_%HN;`ykfB%{lH-KF2^{rxsr9 zK=;G?2d{KGYADYEQFDyaQR__?W=LV97Ps=7^4xF&U^GUuFpHlmUpjAE)s z<^Cy}cbDzshgIbSX!P#Yr0_uhE(&rHZ zHfi-h{b+bdJcK%kT`B2m`keJJMt$5ayo1b3zh+?w78&^q6_68C!S|Lf>W5;D|4{cY zPE*#5ZPo?wV(AB@B<>-fj)kbY4~u^Z1osy5*oCSVWqvj|F-=&Y*HEC7ib!x*;TX5t zHCnMhBJTuROnL5sD%GQa6XX%Ec=kH^av6M6YH1878Kg7ApSH!0$`C5wE?Nq4`Knxz z@{DgjuP>Km-IAVCBh8xViS%ggDPdZws<)%GX`xURxDZHo68SYiM&)=a z0Z&N0ssE#ZdtA3k;nZ}Qg-a>uK@P5on6;Z^NCcKJK~ESP|1Z=Yqy=DY1Qc;z!(_Oo zR)`dHP+bj@#xmqxDTB48*D){h9@L>2hf&J03LIl==u+lwckIfL1qp% zB7?gt9wsVzWSCOTanA6=Pz%M2d#pcXbNRP;L3J|?h@*_1j`kFn9DX{@e0m!OMqBXu z*3yV8V$kQG3wVwK9ouNsJX1lBK~{-VJI#-DOni2qwTk!o3myoaYuWxw=NCPXe-ZfB zF0(N{5pY;decu(2G~FwmGWbM{YW0(7I?L1H9*a;e+1*_yLMNV{pHItqjhA(mcs!*f zsyXE$!~V=|(!|8}`s!D>Y=#Miw3YoK@rO;C@SC*I8qC>aA`+j|vcjjt8M?b=S;?-$L{<`Iwh13z zzKwBdQ#@&qI~?68MHp|axR_Qb z-cqcl+3NW0r;x}im3B)$w)aOea52)Tbu~Lg4@eOW+oE^5NKYY<@9o2g+)Z=$LC0K8 zY>2rZDf_8z&?4*EKM2_v;K3)>i_pzeh&=Kw{e>E4|Cg=lo%Rpb^8Nm!yuwlJBBxV9 zP(h*_TDSFz~xz>oEW5wrADw_Nt7`<*36M4N7F0i`4CpNg-FY`wc4yGUM=s=>9!uxq~jdS@U(geN@%svBgd4dAn@os^&D zXwHjr3>Z8Vg;{jBKz8`up#NBi@;)o;>7w~AST$ANQe#yFgK|Pij{hX8qHTcL9oqd)>V?cp?R1T0)~FJrb(;lOviXAGHjl6C|VPI zip7;+BB(oNm4xBpQVhgkw8rqv*kM4z2+ddfRh99M+ERFU(68{7LCySr zxaPNZ)s1i2@jN(J>N_t=+xys}m9O%0w?fRviU-| zu);arV}{?zWqlEAB39c)eeKrJTr@Q%7`^rzvU4v84`vI^*5C6J|ed&!xn07E7&9Z<~Ey5to zLAdXxHEv2oHQKO40kek!4y40jt#2AwU&ak=w)Ce6ImBn#M%cH*?9W4ErT=^FY zNDB)Zs}DQ@WuQt zoIn|9D-aEjiu)f3{|iKsQBEkMWCzslSuj>UNoBK@;Wchn z`Gm_XJM755ukoTqlVF#5&A&IwPt1T!JXzH-0xr;4%&82 zn>4g)K6T_GYu@m9PR{E+zw~%II-rC1yh*WWQR@>pOE$;b`ir6F9Tq8gBFkzRsB8O$ zB?6Oic~&<18l(l>bM9)gIIDbyt&C$EY*9U^>>svIr+?A>t87+!GqzWgy)O47U#n0ZUFY+V@D;ee8Pu5xjE?3@4 z_}2JdFV|{Wl3V%FxN_`ybUyOSENI*ikxoi#hl>TKs zgu`}$7w;kTU$HB%A$YX?nBc8$b){+@h)Q#($vy>~81o@0Ca0VZ*8j@~2dg{aj(`e< zpR&cY=OIz3cUhj_LsH!u)AY~hs4U5(sdLV<=?i5xsNS?_0*5iQK2y9vbS1DnOz29T zhI_^g;hpQbaqQ*qJpBuR=kj#okz=4LpoYiQRLR$ z)(av^ytVEI9&2T*0>gJ{E9H}l*l){6m8m6$lwBd4Y`q1$@0SHx@~YjRbXpTRN5DT8 zmU)ki#i%Xw&)SGcz{2;@t67u@>Ao95hg>nTlz_zgjA_AP2If4Luao2s#Nq8M-Jr0(@3 z43k6-oX@yvjA?JD7kHyO{dN5sul%oM1LGM-Kx(G2qCy~Ht;0s4)SvNN^)3jn8pYlG z2xLD2uVfdo9N2dfAN?l-2ps{-BvyHz9&LQ(a#QoU>UbT@o!%h?@Lmng?7fAbYBJz0c+7yPOqV&^V7>kNBOYm2!_<9FsgJ znrSd)r-O=n=(4#(MWk65DmBk5lyI zKXZ@RTd8GV&pus9(3fDrJwB=e<1)uQ`oTZf^Z)p2G!xVCb`JSblR4m>@g6{Jr4dcDdRNVTY5=c_WCscgRe}r zWcpC7>1z+r-e6#wyENI*I-z;rDbFD67T!R@$kY28l_cSr20kSi zZ)e7PmbP91@ju-2s4cl6_Iftwy zhT3&`V=4rbf2h4BmTp^uBl4~P&j>%`bo146WG?@?2#xxGPSPf1Vu_9FPC${q{(EX2 z`+n@MRECpaR^#t)KyQPpL*g8WQ@IOVZPzP|R<^y<+5PUZo3k5q2Qc&wzZI14qLXm znw!z13GXIl|HmyV{LY5@8en=o`1skh;b%Fxn1v6Ss4BcBi%$B#ER>1^9mfc!k?&@i zAg~k`_c)YrV6QaAmip{VG1fPTc9S;6j;}@XQZ3nPR0t)w@ zp-Mi$(}pqM5`W{}{@fg=)S--~vlL}M08NU8P6T{q=Mh^4dtz^wzE8|P>>x($EXpf$ z9TEn+x37QDwtZiY{$A&hHyLwSs=cYHERU@H6UEODha!uJePVuTXHcTNc>A9v?eB-w z^N`vHjbNa)6C`o*q8_1xoJM~tIh<5VVuQ#6{-Jn6+)3R`49VKYJ@{z0%8Ym)VW9R< z9c$2ZKJubT@hWjGQ9wh&80H*;mC^j8P!}pCaRI#6)a+3Sk=T%`ByP&2!*EY=%DyF8 z^C$bsewE5KZ*27U8wQ8|lik|!my%+iA3^=9eGafhj+K(giC%dv>({TAz?>qskAzP0 zIJ&w9TQtL%*@(dQ@N)qagJlh9s?AwPMA9abVh#~!&R1~QE&rBDM+$+6KBa0B3i?9* zBht%ZU~Errm<$X|uqE*54rCb)FDJqK>+|UECBB2DU6j##cYxu_({47_yC>920&cO_ z?0KaIyrkgR1xSI}=^hC1@lwGI;i=~#CdYZfg2?uP_5avR6lnqh|9h0MfP;P~Dd=sD zap4@V`LKXX);|FrQ5V4U;bYi(ay`gEysE%_+)~aAAYt@+Iv06mOHsBCr)z+qH;h`I ziqn84Y43NqjJDs_UbytkBWvz+xKL}6{5SI`=$`y6Jx4Y4_mG>}m@0IH$y#